From 1cec793217839ca004395712873f303eecf1724c Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 11 Dec 2009 18:26:53 +0000 Subject: [PATCH 01/95] add missing file, prop history, -2 --- .../src/java/src/i2p/susi/dns/Messages.java | 37 +++++++++++++++++ history.txt | 41 +++++++++++++++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 apps/susidns/src/java/src/i2p/susi/dns/Messages.java diff --git a/apps/susidns/src/java/src/i2p/susi/dns/Messages.java b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java new file mode 100644 index 000000000..2426606af --- /dev/null +++ b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java @@ -0,0 +1,37 @@ +package i2p.susi.dns; + +import net.i2p.I2PAppContext; +import net.i2p.util.Translate; + +/** + * Translate strings for this package. + */ +public class Messages { + private static final String BUNDLE_NAME = "i2p.susi.dns.messages"; + private final I2PAppContext _context; + + public Messages() { + _context = I2PAppContext.getGlobalContext(); + } + + /** lang in routerconsole.lang property, else current locale */ + public String _(String key) { + return Translate.getString(key, _context, BUNDLE_NAME); + } + + /** + * translate a string with a parameter + * This is a lot more expensive than getString(s, ctx), so use sparingly. + * + * @param s string to be translated containing {0} + * The {0} will be replaced by the parameter. + * Single quotes must be doubled, i.e. ' -> '' in the string. + * @param o parameter, not translated. + * To tranlslate parameter also, use _("foo {0} bar", _("baz")) + * Do not double the single quotes in the parameter. + * Use autoboxing to call with ints, longs, floats, etc. + */ + public String _(String s, Object o) { + return Translate.getString(s, o, _context, BUNDLE_NAME); + } +} diff --git a/history.txt b/history.txt index 7e4a661b0..dcf850ba3 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,44 @@ +2009-12-11 zzz + * Addressbook, susidns: Rework addressbook into a + HttpServlet, so susidns can kick it when the subscription + list changes + * Build: Truncate the history in the updater (-80KB) + * Console: + - Add a nicer handler for missing webapps + - Restore the restart message + - Change "depth" to "length" + * Data: Cache the Hash hashcode + * EepGet: Use InternalSocket if available + * Fragmenter: Pull the new comments, new stats, and + debug log fix from i2p.i2p.zzz.batch in - but not the + batching mods, which need a fresh look. + * I2CP: Implement an internal "socket" class that + allows clients in the same JVM to connect to the + router without going through the kernel + * I2NP: Drop unused classes + * i2psnark: + - Translation support + - Tweak torrent name popup + * I2PTunnel: + - Translation support + - Switch all I2PThreads to I2PAppThreads + - Run an InternalSocket as well for the HTTP Proxy + * Naming Services: + - New EepGetAndAddNamingService that appends new + hosts to hosts.txt + - Move default reverseLookup to base class + - Deprecate unused services + * NetDb: + - Switch from ArrayList to ConcurrentHashSet in + KBucketImpl to reduce chance of deadlock; + remove periodic shuffling of the bucket, + needs to be addressed elsewhere + * SusiDNS: + - Translation support + - Remove jsp's from the war + * Translation: Move code from routerconsole to core, + to support translation of other webapps + * 2009-12-08 0.7.8 released 2009-12-08 zzz diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index b74a3a021..bd644cee5 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 1; + public final static long BUILD = 2; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From 993fa5c2104f378bb28d6b6d586657766c3d71be Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 11 Dec 2009 19:03:30 +0000 Subject: [PATCH 02/95] fix all summary bar relative links --- .../i2p/router/web/SummaryBarRenderer.java | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index bbffa6c9d..8643a9c0c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -19,10 +19,14 @@ public class SummaryBarRenderer { _helper = helper; } + /** + * Note - ensure all links in here are absolute, as the summary bar may be displayed + * on lower-level directory errors. + */ public void renderSummaryHTML(Writer out) throws IOException { StringBuilder buf = new StringBuilder(8*1024); - buf.append("\"")\"")" + - "
") .append(_("Addressbook")) .append("\n" + - "") .append(_("Torrents")) .append("\n" + - "") .append(_("Webmail")) @@ -68,7 +72,7 @@ public class SummaryBarRenderer { .append(_("Webserver")) .append("
\n" + - "

") .append(_("I2P Internals")) @@ -76,49 +80,49 @@ public class SummaryBarRenderer { "
\n" + - "") .append(_("Tunnels")) .append("\n" + - "") .append(_("Peers")) .append("\n" + - "") .append(_("Profiles")) .append("\n" + - "") .append(_("NetDB")) .append("\n" + - "") .append(_("Logs")) .append("\n" + - "") .append(_("Jobs")) .append("\n" + - "") .append(_("Graphs")) .append("\n" + - "") .append(_("Stats")) @@ -130,7 +134,7 @@ public class SummaryBarRenderer { - buf.append("

") .append(_("General")) @@ -141,7 +145,7 @@ public class SummaryBarRenderer { .append(_helper.getIdent()) .append(", ") .append(_("never reveal it to anyone")) - .append("\" href=\"netdb.jsp?r=.\" target=\"_top\">") + .append("\" href=\"/netdb.jsp?r=.\" target=\"_top\">") .append(_("Local Identity")) .append("


\n" + @@ -163,7 +167,7 @@ public class SummaryBarRenderer { .append(_helper.getUptime()) .append("

\n" + - "

") .append(_helper.getReachability()) @@ -217,7 +221,7 @@ public class SummaryBarRenderer { buf.append("

") .append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce())) - .append("



") .append(_("Peers")) @@ -266,7 +270,7 @@ public class SummaryBarRenderer { boolean anotherLine = false; if (_helper.showFirewallWarning()) { - buf.append("

") .append(_("Check NAT/firewall")) @@ -305,7 +309,7 @@ public class SummaryBarRenderer { buf.append("
"); - buf.append("

") .append(_("Bandwidth in/out")) @@ -340,7 +344,7 @@ public class SummaryBarRenderer { .append(_helper.getOutboundTransferred()) .append("\n" + - "

") .append(_("Tunnels in/out")) From c3dc76e35fa71b5215d4cc72602a07e57619eca2 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Dec 2009 01:36:57 +0000 Subject: [PATCH 03/95] disable internal sockets until I can fix the borkenness --- core/java/src/net/i2p/util/InternalSocket.java | 10 +++++----- history.txt | 3 +++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/java/src/net/i2p/util/InternalSocket.java b/core/java/src/net/i2p/util/InternalSocket.java index 26280f254..52b028c11 100644 --- a/core/java/src/net/i2p/util/InternalSocket.java +++ b/core/java/src/net/i2p/util/InternalSocket.java @@ -34,12 +34,12 @@ public class InternalSocket extends Socket { * Convenience method to return either a Socket or an InternalSocket */ public static Socket getSocket(String host, int port) throws IOException { - if (System.getProperty("router.version") != null && - (host.equals("127.0.0.1") || host.equals("localhost"))) { - return new InternalSocket(port); - } else { + //if (System.getProperty("router.version") != null && + // (host.equals("127.0.0.1") || host.equals("localhost"))) { + // return new InternalSocket(port); + //} else { return new Socket(host, port); - } + //} } @Override diff --git a/history.txt b/history.txt index dcf850ba3..aa9bf922b 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2009-12-12 zzz + * Disable InternalSockets until it's fixed + 2009-12-11 zzz * Addressbook, susidns: Rework addressbook into a HttpServlet, so susidns can kick it when the subscription diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index bd644cee5..ef84e9e97 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From c4bb84058af48553b6f3256b513706c98b551c25 Mon Sep 17 00:00:00 2001 From: dev Date: Sat, 12 Dec 2009 17:49:54 +0000 Subject: [PATCH 04/95] sort peers per country --- .../net/i2p/router/web/TunnelRenderer.java | 19 ++++++++++++++++++- history.txt | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java index 9091e072f..74a585d48 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java @@ -23,6 +23,7 @@ import net.i2p.router.TunnelInfo; import net.i2p.router.TunnelPoolSettings; import net.i2p.router.tunnel.HopConfig; import net.i2p.router.tunnel.pool.TunnelPool; +import net.i2p.router.CommSystemFacade; import net.i2p.stat.RateStat; import net.i2p.util.ObjectCounter; @@ -229,7 +230,7 @@ public class TunnelRenderer { Set peers = new HashSet(lc.objects()); peers.addAll(pc.objects()); List peerList = new ArrayList(peers); - Collections.sort(peerList, new HashComparator()); + Collections.sort(peerList, new CountryComparator(this._context.commSystem())); out.write("

" + _("Tunnel Counts By Peer") + "

\n"); out.write("\n"); @@ -295,6 +296,22 @@ public class TunnelRenderer { return ((Hash)l).toBase64().compareTo(((Hash)r).toBase64()); } } + + private static class CountryComparator implements Comparator { + public CountryComparator(CommSystemFacade comm) { + this.comm = comm; + } + public int compare(Hash l, Hash r) { + // get both countries + String lc = this.comm.getCountry(l); + String rc = this.comm.getCountry(r); + + // let String handle the rest + return lc.compareTo(rc); + } + + private CommSystemFacade comm; + } private String getCapacity(Hash peer) { RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer); diff --git a/history.txt b/history.txt index aa9bf922b..907e71655 100644 --- a/history.txt +++ b/history.txt @@ -1,5 +1,6 @@ 2009-12-12 zzz * Disable InternalSockets until it's fixed + * Sort peers on tunnels.jsp by country 2009-12-11 zzz * Addressbook, susidns: Rework addressbook into a From 6b8dffc401d1d231a3815418833e11fa4bbc5996 Mon Sep 17 00:00:00 2001 From: dev Date: Sat, 12 Dec 2009 17:51:01 +0000 Subject: [PATCH 05/95] -4 --- router/java/src/net/i2p/router/RouterVersion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ef84e9e97..e4d51a2bb 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 3; + public final static long BUILD = 4; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From 24683c19a4f2dd3db337f345b52f223f9f10ca50 Mon Sep 17 00:00:00 2001 From: russiansponsor Date: Sat, 12 Dec 2009 18:18:46 +0000 Subject: [PATCH 06/95] Added messages_ru.po with 100% fuzzy translations. Awaiting review by native. --- apps/routerconsole/locale/messages_ru.po | 4861 ++++++++++++++++++++++ 1 file changed, 4861 insertions(+) create mode 100644 apps/routerconsole/locale/messages_ru.po diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po new file mode 100644 index 000000000..684fa78b9 --- /dev/null +++ b/apps/routerconsole/locale/messages_ru.po @@ -0,0 +1,4861 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the routerconsole package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-12-12 18:10+0000\n" +"PO-Revision-Date: 2009-12-12 20:14+0300\n" +"Last-Translator: Russian Sponsor \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:117 +#, fuzzy, java-format +msgid "Banned by router hash: {0}" +msgstr "Забанен маршрутизатора хэш: {0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:119 +#, fuzzy +msgid "Banned by router hash" +msgstr "Забанен маршрутизатора хэш" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:664 +#, fuzzy +msgid "IP banned" +msgstr "IP запрещен" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:734 +#, fuzzy, java-format +msgid "IP banned by blocklist.txt entry {0}" +msgstr "IP запрещен в blocklist.txt этой записей {0}" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:91 +#, fuzzy +msgid "Rejecting tunnels: Shutting down" +msgstr "Отвергая туннели: Выключение" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:140 +#, fuzzy +msgid "Rejecting tunnels: High message delay" +msgstr "Отвергая туннели: Высокая сообщения задержка" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:176 +#, fuzzy +msgid "Rejecting most tunnels: High number of requests" +msgstr "Отвергая большинстве туннелей: Высокое число запросов" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:232 +#, fuzzy +msgid "Rejecting tunnels: Limit reached" +msgstr "Отвергая туннелей: дошел до предела" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:300 +#, fuzzy +msgid "Rejecting tunnels: Bandwidth limit" +msgstr "Отвергая туннели: ограничить пропускную способность" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:370 +#, fuzzy +msgid "Rejecting most tunnels: Bandwidth limit" +msgstr "Отвергая наиболее туннели: ограничить пропускную способность" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:374 +#, fuzzy +msgid "Accepting most tunnels" +msgstr "Принимая большинство туннели" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:376 +#, fuzzy +msgid "Accepting tunnels" +msgstr "Принимая туннелей" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:486 +#, fuzzy +msgid "Rejecting tunnels" +msgstr "Отвергая туннелей" + +#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 +#, fuzzy +msgid "No transports (hidden or starting up?)" +msgstr "Нет транспорты (скрытой или начинать?)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 +#, fuzzy +msgid "Unreachable on any transport" +msgstr "Недоступные на любом транспорте" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:373 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:578 +#, fuzzy, java-format +msgid "Excessive clock skew: {0}" +msgstr "Чрезмерное часы не совпадающие по времени: {0}" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:128 +#, fuzzy +msgid "Dropping tunnel requests: Too slow" +msgstr "Удаление туннель просит: слишком медленный" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:340 +#, fuzzy +msgid "Dropping tunnel requests: Overloaded" +msgstr "Удаление туннель просит: Перегруженный" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:499 +#, fuzzy +msgid "Rejecting tunnels: Request overload" +msgstr "Отвергая туннелей: Запрос перегрузки" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:524 +#, fuzzy +msgid "Rejecting tunnels: Connection limit" +msgstr "Отвергая туннелей: Подключение к пределу" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:725 +#, fuzzy +msgid "Dropping tunnel requests: High load" +msgstr "Удаление туннель просит: Высокие нагрузки" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:734 +#, fuzzy +msgid "Dropping tunnel requests: Queue time" +msgstr "Удаление туннель просит: Очередь время" + +#: ../java/build/Countries.java:3 +#, fuzzy +msgid "Andorra" +msgstr "Андорра" + +#: ../java/build/Countries.java:4 +#, fuzzy +msgid "United Arab Emirates" +msgstr "Объединенные Арабские Эмираты" + +#: ../java/build/Countries.java:5 +#, fuzzy +msgid "Afghanistan" +msgstr "Афганистан" + +#: ../java/build/Countries.java:6 +#, fuzzy +msgid "Antigua and Barbuda" +msgstr "Антигуа и Барбуда" + +#: ../java/build/Countries.java:7 +#, fuzzy +msgid "Anguilla" +msgstr "Ангилья" + +#: ../java/build/Countries.java:8 +#, fuzzy +msgid "Albania" +msgstr "Албания" + +#: ../java/build/Countries.java:9 +#, fuzzy +msgid "Armenia" +msgstr "Армения" + +#: ../java/build/Countries.java:10 +#, fuzzy +msgid "Netherlands Antilles" +msgstr "Нидерландские Антильские острова" + +#: ../java/build/Countries.java:11 +#, fuzzy +msgid "Angola" +msgstr "Ангола" + +#: ../java/build/Countries.java:12 +#, fuzzy +msgid "Antarctica" +msgstr "Антарктида" + +#: ../java/build/Countries.java:13 +#, fuzzy +msgid "Argentina" +msgstr "Аргентина" + +#: ../java/build/Countries.java:14 +#, fuzzy +msgid "American Samoa" +msgstr "Американское Самоа" + +#: ../java/build/Countries.java:15 +#, fuzzy +msgid "Austria" +msgstr "Австрия" + +#: ../java/build/Countries.java:16 +#, fuzzy +msgid "Australia" +msgstr "Австралия" + +#: ../java/build/Countries.java:17 +#, fuzzy +msgid "Aruba" +msgstr "Аруба" + +#: ../java/build/Countries.java:19 +#, fuzzy +msgid "Azerbaijan" +msgstr "Азербайджан" + +#: ../java/build/Countries.java:20 +#, fuzzy +msgid "Bosnia and Herzegovina" +msgstr "Босния и Герцеговина" + +#: ../java/build/Countries.java:21 +#, fuzzy +msgid "Barbados" +msgstr "Барбадос" + +#: ../java/build/Countries.java:22 +#, fuzzy +msgid "Bangladesh" +msgstr "Бангладеш" + +#: ../java/build/Countries.java:23 +#, fuzzy +msgid "Belgium" +msgstr "Бельгия" + +#: ../java/build/Countries.java:24 +#, fuzzy +msgid "Burkina Faso" +msgstr "Буркина-Фасо" + +#: ../java/build/Countries.java:25 +#, fuzzy +msgid "Bulgaria" +msgstr "Болгария" + +#: ../java/build/Countries.java:26 +#, fuzzy +msgid "Bahrain" +msgstr "Бахрейн" + +#: ../java/build/Countries.java:27 +#, fuzzy +msgid "Burundi" +msgstr "Бурунди" + +#: ../java/build/Countries.java:28 +#, fuzzy +msgid "Benin" +msgstr "Бенин" + +#: ../java/build/Countries.java:29 +#, fuzzy +msgid "Bermuda" +msgstr "Бермудские Острова" + +#: ../java/build/Countries.java:30 +#, fuzzy +msgid "Brunei Darussalam" +msgstr "Бруней-Даруссалам" + +#: ../java/build/Countries.java:31 +#, fuzzy +msgid "Bolivia" +msgstr "Боливия" + +#: ../java/build/Countries.java:32 +#, fuzzy +msgid "Brazil" +msgstr "Бразилия" + +#: ../java/build/Countries.java:33 +#, fuzzy +msgid "Bahamas" +msgstr "Багамские острова" + +#: ../java/build/Countries.java:34 +#, fuzzy +msgid "Bhutan" +msgstr "Бутан" + +#: ../java/build/Countries.java:35 +#, fuzzy +msgid "Bouvet Island" +msgstr "Остров Буве" + +#: ../java/build/Countries.java:36 +#, fuzzy +msgid "Botswana" +msgstr "Ботсвана" + +#: ../java/build/Countries.java:37 +#, fuzzy +msgid "Belarus" +msgstr "Беларусь" + +#: ../java/build/Countries.java:38 +#, fuzzy +msgid "Belize" +msgstr "Белиз" + +#: ../java/build/Countries.java:39 +#, fuzzy +msgid "Canada" +msgstr "Канада" + +#: ../java/build/Countries.java:40 +#, fuzzy +msgid "The Democratic Republic of the Congo" +msgstr "Демократическая Республика Конго" + +#: ../java/build/Countries.java:41 +#, fuzzy +msgid "Central African Republic" +msgstr "Центральноафриканская Республика" + +#: ../java/build/Countries.java:42 +#, fuzzy +msgid "Congo" +msgstr "Конго" + +#: ../java/build/Countries.java:43 +#, fuzzy +msgid "Switzerland" +msgstr "Швейцария" + +#: ../java/build/Countries.java:44 +#, fuzzy +msgid "Cote D'Ivoire" +msgstr "Кот-д'Ивуар" + +#: ../java/build/Countries.java:45 +#, fuzzy +msgid "Cook Islands" +msgstr "Острова Кука" + +#: ../java/build/Countries.java:46 +#, fuzzy +msgid "Chile" +msgstr "Чили" + +#: ../java/build/Countries.java:47 +#, fuzzy +msgid "Cameroon" +msgstr "Камерун" + +#: ../java/build/Countries.java:48 +#, fuzzy +msgid "China" +msgstr "Китай" + +#: ../java/build/Countries.java:49 +#, fuzzy +msgid "Colombia" +msgstr "Колумбия" + +#: ../java/build/Countries.java:50 +#, fuzzy +msgid "Costa Rica" +msgstr "Коста-Рика" + +#: ../java/build/Countries.java:51 +#, fuzzy +msgid "Serbia and Montenegro" +msgstr "Сербия и Черногория" + +#: ../java/build/Countries.java:52 +#, fuzzy +msgid "Cuba" +msgstr "Куба" + +#: ../java/build/Countries.java:53 +#, fuzzy +msgid "Cape Verde" +msgstr "Кабо-Верде" + +#: ../java/build/Countries.java:54 +#, fuzzy +msgid "Cyprus" +msgstr "Кипр" + +#: ../java/build/Countries.java:55 +#, fuzzy +msgid "Czech Republic" +msgstr "Чехия" + +#: ../java/build/Countries.java:56 +#, fuzzy +msgid "Germany" +msgstr "Германия" + +#: ../java/build/Countries.java:57 +#, fuzzy +msgid "Djibouti" +msgstr "Джибути" + +#: ../java/build/Countries.java:58 +#, fuzzy +msgid "Denmark" +msgstr "Дания" + +#: ../java/build/Countries.java:59 +#, fuzzy +msgid "Dominica" +msgstr "Доминика" + +#: ../java/build/Countries.java:60 +#, fuzzy +msgid "Dominican Republic" +msgstr "Доминиканская Республика" + +#: ../java/build/Countries.java:61 +#, fuzzy +msgid "Algeria" +msgstr "Алжир" + +#: ../java/build/Countries.java:62 +#, fuzzy +msgid "Ecuador" +msgstr "Эквадор" + +#: ../java/build/Countries.java:63 +#, fuzzy +msgid "Estonia" +msgstr "Эстония" + +#: ../java/build/Countries.java:64 +#, fuzzy +msgid "Egypt" +msgstr "Египет" + +#: ../java/build/Countries.java:65 +#, fuzzy +msgid "Eritrea" +msgstr "Эритрея" + +#: ../java/build/Countries.java:66 +#, fuzzy +msgid "Spain" +msgstr "Испания" + +#: ../java/build/Countries.java:67 +#, fuzzy +msgid "Ethiopia" +msgstr "Эфиопия" + +#: ../java/build/Countries.java:68 +#, fuzzy +msgid "Finland" +msgstr "Финляндия" + +#: ../java/build/Countries.java:69 +#, fuzzy +msgid "Fiji" +msgstr "Фиджи" + +#: ../java/build/Countries.java:70 +#, fuzzy +msgid "Falkland Islands (Malvinas)" +msgstr "Фолклендские (Мальвинские)" + +#: ../java/build/Countries.java:71 +#, fuzzy +msgid "Federated States of Micronesia" +msgstr "Федеративные Штаты Микронезии" + +#: ../java/build/Countries.java:72 +#, fuzzy +msgid "Faroe Islands" +msgstr "Фарерские острова" + +#: ../java/build/Countries.java:73 +#, fuzzy +msgid "France" +msgstr "Франция" + +#: ../java/build/Countries.java:74 +#, fuzzy +msgid "Gabon" +msgstr "Габон" + +#: ../java/build/Countries.java:75 +#, fuzzy +msgid "United Kingdom" +msgstr "Великобритания" + +#: ../java/build/Countries.java:76 +#, fuzzy +msgid "Grenada" +msgstr "Гренада" + +#: ../java/build/Countries.java:77 +#, fuzzy +msgid "Georgia" +msgstr "Грузия" + +#: ../java/build/Countries.java:78 +#, fuzzy +msgid "French Guiana" +msgstr "Французская Гвиана" + +#: ../java/build/Countries.java:79 +#, fuzzy +msgid "Ghana" +msgstr "Гана" + +#: ../java/build/Countries.java:80 +#, fuzzy +msgid "Gibraltar" +msgstr "Гибралтар" + +#: ../java/build/Countries.java:81 +#, fuzzy +msgid "Greenland" +msgstr "Гренландия" + +#: ../java/build/Countries.java:82 +#, fuzzy +msgid "Gambia" +msgstr "Гамбия" + +#: ../java/build/Countries.java:83 +#, fuzzy +msgid "Guinea" +msgstr "Гвинея" + +#: ../java/build/Countries.java:84 +#, fuzzy +msgid "Guadeloupe" +msgstr "Гваделупа" + +#: ../java/build/Countries.java:85 +#, fuzzy +msgid "Equatorial Guinea" +msgstr "Экваториальная Гвинея" + +#: ../java/build/Countries.java:86 +#, fuzzy +msgid "Greece" +msgstr "Греция" + +#: ../java/build/Countries.java:87 +#, fuzzy +msgid "South Georgia and the South Sandwich Islands" +msgstr "Южная Джорджия и Южные Сандвичевы Острова" + +#: ../java/build/Countries.java:88 +#, fuzzy +msgid "Guatemala" +msgstr "Гватемала" + +#: ../java/build/Countries.java:89 +#, fuzzy +msgid "Guam" +msgstr "Гуам" + +#: ../java/build/Countries.java:90 +#, fuzzy +msgid "Guinea-Bissau" +msgstr "Гвинея-Бисау" + +#: ../java/build/Countries.java:91 +#, fuzzy +msgid "Guyana" +msgstr "Гайана" + +#: ../java/build/Countries.java:92 +#, fuzzy +msgid "Hong Kong" +msgstr "Гонконг" + +#: ../java/build/Countries.java:93 +#, fuzzy +msgid "Honduras" +msgstr "Гондурас" + +#: ../java/build/Countries.java:94 +#, fuzzy +msgid "Croatia" +msgstr "Хорватия" + +#: ../java/build/Countries.java:95 +#, fuzzy +msgid "Haiti" +msgstr "Гаити" + +#: ../java/build/Countries.java:96 +#, fuzzy +msgid "Hungary" +msgstr "Венгрия" + +#: ../java/build/Countries.java:97 +#, fuzzy +msgid "Indonesia" +msgstr "Индонезия" + +#: ../java/build/Countries.java:98 +#, fuzzy +msgid "Ireland" +msgstr "Ирландия" + +#: ../java/build/Countries.java:99 +#, fuzzy +msgid "Israel" +msgstr "Израиль" + +#: ../java/build/Countries.java:101 +#, fuzzy +msgid "India" +msgstr "Индия" + +#: ../java/build/Countries.java:102 +#, fuzzy +msgid "British Indian Ocean Territory" +msgstr "Британская территория в Индийском океане" + +#: ../java/build/Countries.java:103 +#, fuzzy +msgid "Iraq" +msgstr "Ирак" + +#: ../java/build/Countries.java:104 +#, fuzzy +msgid "Islamic Republic of Iran" +msgstr "Исламская Республика Иран" + +#: ../java/build/Countries.java:105 +#, fuzzy +msgid "Iceland" +msgstr "Исландия" + +#: ../java/build/Countries.java:106 +#, fuzzy +msgid "Italy" +msgstr "Италия" + +#: ../java/build/Countries.java:108 +#, fuzzy +msgid "Jamaica" +msgstr "Ямайка" + +#: ../java/build/Countries.java:109 +#, fuzzy +msgid "Jordan" +msgstr "Иордания" + +#: ../java/build/Countries.java:110 +#, fuzzy +msgid "Japan" +msgstr "Япония" + +#: ../java/build/Countries.java:111 +#, fuzzy +msgid "Kenya" +msgstr "Кения" + +#: ../java/build/Countries.java:112 +#, fuzzy +msgid "Kyrgyzstan" +msgstr "Кыргызстан" + +#: ../java/build/Countries.java:113 +#, fuzzy +msgid "Cambodia" +msgstr "Камбоджа" + +#: ../java/build/Countries.java:114 +#, fuzzy +msgid "Kiribati" +msgstr "Кирибати" + +#: ../java/build/Countries.java:115 +#, fuzzy +msgid "Comoros" +msgstr "Коморские Острова" + +#: ../java/build/Countries.java:116 +#, fuzzy +msgid "Saint Kitts and Nevis" +msgstr "Сент-Китс и Невис" + +#: ../java/build/Countries.java:117 +#, fuzzy +msgid "Republic of Korea" +msgstr "Республика Корея" + +#: ../java/build/Countries.java:118 +#, fuzzy +msgid "Kuwait" +msgstr "Кувейт" + +#: ../java/build/Countries.java:119 +#, fuzzy +msgid "Cayman Islands" +msgstr "Каймановы острова" + +#: ../java/build/Countries.java:120 +#, fuzzy +msgid "Kazakhstan" +msgstr "Казахстан" + +#: ../java/build/Countries.java:121 +#, fuzzy +msgid "Lao People's Democratic Republic" +msgstr "Лаосская Народно-Демократическая Республика" + +#: ../java/build/Countries.java:122 +#, fuzzy +msgid "Lebanon" +msgstr "Ливан" + +#: ../java/build/Countries.java:123 +#, fuzzy +msgid "Saint Lucia" +msgstr "Сент-Люсия" + +#: ../java/build/Countries.java:124 +#, fuzzy +msgid "Liechtenstein" +msgstr "Лихтенштейн" + +#: ../java/build/Countries.java:125 +#, fuzzy +msgid "Sri Lanka" +msgstr "Шри-Ланка" + +#: ../java/build/Countries.java:126 +#, fuzzy +msgid "Liberia" +msgstr "Либерия" + +#: ../java/build/Countries.java:127 +#, fuzzy +msgid "Lesotho" +msgstr "Лесото" + +#: ../java/build/Countries.java:128 +#, fuzzy +msgid "Lithuania" +msgstr "Литва" + +#: ../java/build/Countries.java:129 +#, fuzzy +msgid "Luxembourg" +msgstr "Люксембург" + +#: ../java/build/Countries.java:130 +#, fuzzy +msgid "Latvia" +msgstr "Латвия" + +#: ../java/build/Countries.java:131 +#, fuzzy +msgid "Libyan Arab Jamahiriya" +msgstr "Ливийская Арабская Джамахирия" + +#: ../java/build/Countries.java:132 +#, fuzzy +msgid "Morocco" +msgstr "Марокко" + +#: ../java/build/Countries.java:133 +#, fuzzy +msgid "Monaco" +msgstr "Монако" + +#: ../java/build/Countries.java:134 +#, fuzzy +msgid "Republic of Moldova" +msgstr "Республика Молдова" + +#: ../java/build/Countries.java:137 +#, fuzzy +msgid "Madagascar" +msgstr "Мадагаскар" + +#: ../java/build/Countries.java:138 +#, fuzzy +msgid "Marshall Islands" +msgstr "Маршалловы Острова" + +#: ../java/build/Countries.java:139 +#, fuzzy +msgid "The Former Yugoslav Republic of Macedonia" +msgstr "Бывшая югославская Республика Македония" + +#: ../java/build/Countries.java:140 +#, fuzzy +msgid "Mali" +msgstr "Мали" + +#: ../java/build/Countries.java:141 +#, fuzzy +msgid "Myanmar" +msgstr "Мьянма" + +#: ../java/build/Countries.java:142 +#, fuzzy +msgid "Mongolia" +msgstr "Монголия" + +#: ../java/build/Countries.java:143 +#, fuzzy +msgid "Macao" +msgstr "Макао" + +#: ../java/build/Countries.java:144 +#, fuzzy +msgid "Northern Mariana Islands" +msgstr "Северные Марианские о-ва" + +#: ../java/build/Countries.java:145 +#, fuzzy +msgid "Martinique" +msgstr "Мартиника" + +#: ../java/build/Countries.java:146 +#, fuzzy +msgid "Mauritania" +msgstr "Мавритания" + +#: ../java/build/Countries.java:147 +#, fuzzy +msgid "Montserrat" +msgstr "Монтсеррат" + +#: ../java/build/Countries.java:148 +#, fuzzy +msgid "Malta" +msgstr "Мальта" + +#: ../java/build/Countries.java:149 +#, fuzzy +msgid "Mauritius" +msgstr "Маврикий" + +#: ../java/build/Countries.java:150 +#, fuzzy +msgid "Maldives" +msgstr "Мальдивы" + +#: ../java/build/Countries.java:151 +#, fuzzy +msgid "Malawi" +msgstr "Малави" + +#: ../java/build/Countries.java:152 +#, fuzzy +msgid "Mexico" +msgstr "Мексика" + +#: ../java/build/Countries.java:153 +#, fuzzy +msgid "Malaysia" +msgstr "Малайзия" + +#: ../java/build/Countries.java:154 +#, fuzzy +msgid "Mozambique" +msgstr "Мозамбик" + +#: ../java/build/Countries.java:155 +#, fuzzy +msgid "Namibia" +msgstr "Мозамбик" + +#: ../java/build/Countries.java:156 +#, fuzzy +msgid "New Caledonia" +msgstr "Новая Каледония" + +#: ../java/build/Countries.java:157 +#, fuzzy +msgid "Niger" +msgstr "Нигер" + +#: ../java/build/Countries.java:158 +#, fuzzy +msgid "Norfolk Island" +msgstr "Остров Норфолк" + +#: ../java/build/Countries.java:159 +#, fuzzy +msgid "Nigeria" +msgstr "Нигерия" + +#: ../java/build/Countries.java:160 +#, fuzzy +msgid "Nicaragua" +msgstr "Никарагуа" + +#: ../java/build/Countries.java:161 +#, fuzzy +msgid "Netherlands" +msgstr "Нидерланды" + +#: ../java/build/Countries.java:162 +#, fuzzy +msgid "Norway" +msgstr "Норвегия" + +#: ../java/build/Countries.java:163 +#, fuzzy +msgid "Nepal" +msgstr "Непал" + +#: ../java/build/Countries.java:164 +#, fuzzy +msgid "Nauru" +msgstr "Науру" + +#: ../java/build/Countries.java:165 +#, fuzzy +msgid "Niue" +msgstr "Ниуэ" + +#: ../java/build/Countries.java:166 +#, fuzzy +msgid "New Zealand" +msgstr "Новая Зеландия" + +#: ../java/build/Countries.java:167 +#, fuzzy +msgid "Oman" +msgstr "Оман" + +#: ../java/build/Countries.java:168 +#, fuzzy +msgid "Panama" +msgstr "Панама" + +#: ../java/build/Countries.java:169 +#, fuzzy +msgid "Peru" +msgstr "Перу" + +#: ../java/build/Countries.java:170 +#, fuzzy +msgid "French Polynesia" +msgstr "Французская Полинезия" + +#: ../java/build/Countries.java:171 +#, fuzzy +msgid "Papua New Guinea" +msgstr "Папуа-Новая Гвинея" + +#: ../java/build/Countries.java:172 +#, fuzzy +msgid "Philippines" +msgstr "Филиппины" + +#: ../java/build/Countries.java:173 +#, fuzzy +msgid "Pakistan" +msgstr "Пакистан" + +#: ../java/build/Countries.java:174 +#, fuzzy +msgid "Poland" +msgstr "Польша" + +#: ../java/build/Countries.java:175 +#, fuzzy +msgid "Saint Pierre and Miquelon" +msgstr "Сен-Пьер и Микелон" + +#: ../java/build/Countries.java:176 +#, fuzzy +msgid "Puerto Rico" +msgstr "Пуэрто-Рико" + +#: ../java/build/Countries.java:177 +#, fuzzy +msgid "Palestinian Territory" +msgstr "Палестинская автономия" + +#: ../java/build/Countries.java:178 +#, fuzzy +msgid "Portugal" +msgstr "Португалия" + +#: ../java/build/Countries.java:179 +#, fuzzy +msgid "Palau" +msgstr "Палау" + +#: ../java/build/Countries.java:180 +#, fuzzy +msgid "Paraguay" +msgstr "Парагвай" + +#: ../java/build/Countries.java:181 +#, fuzzy +msgid "Qatar" +msgstr "Катар" + +#: ../java/build/Countries.java:182 +#, fuzzy +msgid "Reunion" +msgstr "Реюньон" + +#: ../java/build/Countries.java:183 +#, fuzzy +msgid "Romania" +msgstr "Румыния" + +#: ../java/build/Countries.java:184 +#, fuzzy +msgid "Serbia" +msgstr "Сербия" + +#: ../java/build/Countries.java:185 +#, fuzzy +msgid "Russian Federation" +msgstr "Русская Федерация" + +#: ../java/build/Countries.java:186 +#, fuzzy +msgid "Rwanda" +msgstr "Руанда" + +#: ../java/build/Countries.java:187 +#, fuzzy +msgid "Saudi Arabia" +msgstr "Саудовская Аравия" + +#: ../java/build/Countries.java:188 +#, fuzzy +msgid "Solomon Islands" +msgstr "Соломоновы Острова" + +#: ../java/build/Countries.java:189 +#, fuzzy +msgid "Seychelles" +msgstr "Сейшельские Острова" + +#: ../java/build/Countries.java:190 +#, fuzzy +msgid "Sudan" +msgstr "Судан" + +#: ../java/build/Countries.java:191 +#, fuzzy +msgid "Sweden" +msgstr "Швеция" + +#: ../java/build/Countries.java:192 +#, fuzzy +msgid "Singapore" +msgstr "Сингапур" + +#: ../java/build/Countries.java:193 +#, fuzzy +msgid "Slovenia" +msgstr "Словения" + +#: ../java/build/Countries.java:194 +#, fuzzy +msgid "Slovakia" +msgstr "Словакия" + +#: ../java/build/Countries.java:195 +#, fuzzy +msgid "Sierra Leone" +msgstr "Сьерра-Леоне" + +#: ../java/build/Countries.java:196 +#, fuzzy +msgid "San Marino" +msgstr "Сан - Марине" + +#: ../java/build/Countries.java:197 +#, fuzzy +msgid "Senegal" +msgstr "Сенегал" + +#: ../java/build/Countries.java:198 +#, fuzzy +msgid "Somalia" +msgstr "Сомали" + +#: ../java/build/Countries.java:199 +#, fuzzy +msgid "Suriname" +msgstr "Суринам" + +#: ../java/build/Countries.java:200 +#, fuzzy +msgid "Sao Tome and Principe" +msgstr "Сан-Томе и Принсипи" + +#: ../java/build/Countries.java:201 +#, fuzzy +msgid "El Salvador" +msgstr "Сальвадор" + +#: ../java/build/Countries.java:202 +#, fuzzy +msgid "Syrian Arab Republic" +msgstr "Сирийская Арабская Республика" + +#: ../java/build/Countries.java:203 +#, fuzzy +msgid "Swaziland" +msgstr "Свазиленд" + +#: ../java/build/Countries.java:204 +#, fuzzy +msgid "Turks and Caicos Islands" +msgstr "Острова Теркс и Кайкос" + +#: ../java/build/Countries.java:205 +#, fuzzy +msgid "Chad" +msgstr "Чад" + +#: ../java/build/Countries.java:206 +#, fuzzy +msgid "French Southern Territories" +msgstr "Французские Южные Территории" + +#: ../java/build/Countries.java:207 +#, fuzzy +msgid "Togo" +msgstr "Того" + +#: ../java/build/Countries.java:208 +#, fuzzy +msgid "Thailand" +msgstr "Таиланд" + +#: ../java/build/Countries.java:209 +#, fuzzy +msgid "Tajikistan" +msgstr "Таджикистан" + +#: ../java/build/Countries.java:210 +#, fuzzy +msgid "Tokelau" +msgstr "Токелау" + +#: ../java/build/Countries.java:211 +#, fuzzy +msgid "Timor-Leste" +msgstr "Восточный Тимор" + +#: ../java/build/Countries.java:212 +#, fuzzy +msgid "Turkmenistan" +msgstr "Туркменистан" + +#: ../java/build/Countries.java:213 +#, fuzzy +msgid "Tunisia" +msgstr "Тунис" + +#: ../java/build/Countries.java:214 +#, fuzzy +msgid "Tonga" +msgstr "Тонга" + +#: ../java/build/Countries.java:215 +#, fuzzy +msgid "Turkey" +msgstr "Турция" + +#: ../java/build/Countries.java:216 +#, fuzzy +msgid "Trinidad and Tobago" +msgstr "Тринидад и Тобаго" + +#: ../java/build/Countries.java:217 +#, fuzzy +msgid "Tuvalu" +msgstr "Тувалу" + +#: ../java/build/Countries.java:218 +#, fuzzy +msgid "Taiwan" +msgstr "Тайвань" + +#: ../java/build/Countries.java:219 +#, fuzzy +msgid "United Republic of Tanzania" +msgstr "Объединенная Республика Танзания" + +#: ../java/build/Countries.java:220 +#, fuzzy +msgid "Ukraine" +msgstr "Украина" + +#: ../java/build/Countries.java:221 +#, fuzzy +msgid "Uganda" +msgstr "Уганда" + +#: ../java/build/Countries.java:222 +#, fuzzy +msgid "United States Minor Outlying Islands" +msgstr "Внешние малые острова (США)" + +#: ../java/build/Countries.java:223 +#, fuzzy +msgid "United States" +msgstr "Соединенные Штаты Америки" + +#: ../java/build/Countries.java:224 +#, fuzzy +msgid "Uruguay" +msgstr "Уругвай" + +#: ../java/build/Countries.java:225 +#, fuzzy +msgid "Uzbekistan" +msgstr "Узбекистан" + +#: ../java/build/Countries.java:226 +#, fuzzy +msgid "Holy See (Vatican City State)" +msgstr "Святой Престол (Ватикан)" + +#: ../java/build/Countries.java:227 +#, fuzzy +msgid "Saint Vincent and the Grenadines" +msgstr "Сент-Винсент и Гренадины" + +#: ../java/build/Countries.java:228 +#, fuzzy +msgid "Venezuela" +msgstr "Венесуэла" + +#: ../java/build/Countries.java:229 +#: ../java/build/Countries.java:230 +#, fuzzy +msgid "Virgin Islands" +msgstr "Виргинские острова" + +#: ../java/build/Countries.java:231 +#, fuzzy +msgid "Viet Nam" +msgstr "Вьетнам" + +#: ../java/build/Countries.java:232 +#, fuzzy +msgid "Vanuatu" +msgstr "Вануату" + +#: ../java/build/Countries.java:233 +#, fuzzy +msgid "Wallis and Futuna" +msgstr "Уоллис и Футуна" + +#: ../java/build/Countries.java:234 +#, fuzzy +msgid "Samoa" +msgstr "Самоа" + +#: ../java/build/Countries.java:235 +#, fuzzy +msgid "Yemen" +msgstr "Йемен" + +#: ../java/build/Countries.java:236 +#, fuzzy +msgid "Mayotte" +msgstr "Майотта" + +#: ../java/build/Countries.java:237 +#, fuzzy +msgid "South Africa" +msgstr "Южная Африка" + +#: ../java/build/Countries.java:238 +#, fuzzy +msgid "Zambia" +msgstr "Замбия" + +#: ../java/build/Countries.java:239 +#, fuzzy +msgid "Zimbabwe" +msgstr "Зимбабве" + +#: ../java/src/net/i2p/router/web/CSSHelper.java:41 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:30 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:32 +#: ../java/strings/Strings.java:29 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234 +#, fuzzy +msgid "I2P Router Console" +msgstr "Консоль Маршрутизатора I2P" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 +#, fuzzy +msgid "Error updating the configuration - please see the error logs" +msgstr "Ошибка при обновлении конфигурации - смотрите логи ошибок" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:251 +#, fuzzy +msgid "Configuration saved successfully" +msgstr "Конфигурация успешно сохранены" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:253 +#, fuzzy +msgid "Error saving the configuration (applied but not saved) - please see the error logs" +msgstr "Ошибка при сохранении конфигурации (применяется, но не сохранили) - пожалуйста, смотрите логи ошибок" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:32 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:321 +#, fuzzy +msgid "Save Client Configuration" +msgstr "Сохраните Настройки Клиента" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:36 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:333 +#, fuzzy +msgid "Save WebApp Configuration" +msgstr "Сохранять WebApp Конфигурацию" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:67 +#, fuzzy +msgid "Start" +msgstr "Включать" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:68 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +#, fuzzy +msgid "Unsupported" +msgstr "Неподдерживаемый" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:83 +#, fuzzy +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "Настройка клиента успешно сохранены - Требуется перезагрузка вступили в силу." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 +#, fuzzy +msgid "Bad client index." +msgstr "Индекс плохой клиент." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:363 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:371 +#, fuzzy +msgid "Client" +msgstr "Клиент" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 +#, fuzzy +msgid "started" +msgstr "началось" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:111 +#, fuzzy +msgid "WebApp configuration saved successfully - restart required to take effect." +msgstr "Конфигурация веб-приложений успешно сохранены - Требуется перезагрузка вступили в силу." + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#, fuzzy +msgid "WebApp" +msgstr "Веб-приложение" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:131 +#, fuzzy +msgid "Failed to start" +msgstr "Сбой при запуске" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:137 +#, fuzzy +msgid "Failed to find server." +msgstr "Не удалось найти сервер." + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 +#, fuzzy +msgid "Class and arguments" +msgstr "Класс и параметры" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#, fuzzy +msgid "Run at Startup?" +msgstr "Запустить при следующем запуске системы?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#, fuzzy +msgid "Start Now" +msgstr "Запустить Cейчас" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#, fuzzy +msgid "Description" +msgstr "Описание" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 +#, fuzzy +msgid "Add key" +msgstr "Добавить ключ" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322 +#, fuzzy +msgid "Delete key" +msgstr "Удалить ключ" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 +#, fuzzy +msgid "You must enter a destination" +msgstr "Вы должны ввести назначения" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 +#, fuzzy +msgid "You must enter a key" +msgstr "Вы должны ввести ключевые" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 +#, fuzzy +msgid "Key for" +msgstr "Ключ для" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 +#, fuzzy +msgid "added to keyring" +msgstr "добавить в связку ключей" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 +#, fuzzy +msgid "Invalid destination or key" +msgstr "Invalid destination or key" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 +#, fuzzy +msgid "removed from keyring" +msgstr "удалены из связку ключей" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 +#, fuzzy +msgid "not found in keyring" +msgstr "Не найдено в связку ключей" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 +#, fuzzy +msgid "Invalid destination" +msgstr "Invalid destination" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +#, fuzzy +msgid "CRIT" +msgstr "КРИТИЧЕСКИЕ" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +#, fuzzy +msgid "DEBUG" +msgstr "ОТЛАДКА" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +#, fuzzy +msgid "ERROR" +msgstr "ОШИБКА" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +#, fuzzy +msgid "INFO" +msgstr "ИНФОРМАЦИЯ" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +#, fuzzy +msgid "WARN" +msgstr "ПРЕДУПРЕЖДЕНИЕ" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#, fuzzy +msgid "Network" +msgstr "Сеть" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#, fuzzy +msgid "Service" +msgstr "Сервис" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:86 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:253 +#, fuzzy +msgid "Tunnels" +msgstr "Туннели" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#, fuzzy +msgid "UI" +msgstr "Интерфейс Пользователя" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:202 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209 +#, fuzzy +msgid "Update" +msgstr "Обновление" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#, fuzzy +msgid "Clients" +msgstr "Клиенты" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:292 +#, fuzzy +msgid "Keyring" +msgstr "Cвязку Kлючей" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#, fuzzy +msgid "Logging" +msgstr "Логи" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227 +#, fuzzy +msgid "Peers" +msgstr "Пиры" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:293 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:128 +#, fuzzy +msgid "Stats" +msgstr "Статистика" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +#, fuzzy +msgid "Advanced" +msgstr "Расширенный" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:47 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:249 +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:35 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:494 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341 +#, fuzzy +msgid "Save changes" +msgstr "Сохранить изменения" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:119 +#, fuzzy +msgid "Rechecking router reachability..." +msgstr "Повторная проверка доступности маршрутизатора..." + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:148 +#, fuzzy +msgid "Updating IP address" +msgstr "Обновление IP-адреса" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:166 +#, fuzzy +msgid "Disabling TCP completely" +msgstr "Отключение TCP полностью" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:170 +#, fuzzy +msgid "Updating inbound TCP address to" +msgstr "Обновление входящего в адрес TCP" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:174 +#, fuzzy +msgid "Disabling inbound TCP" +msgstr "Отключение входящие TCP" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 +#, fuzzy +msgid "Updating inbound TCP address to auto" +msgstr "Обновление входящего адреса TCP автоматически" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:185 +#, fuzzy +msgid "Updating inbound TCP port to" +msgstr "Обновление входящего порта TCP для" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:188 +#, fuzzy +msgid "Updating inbound TCP port to auto" +msgstr "Обновление входящего порта TCP автоматически" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, fuzzy +msgid "Updating UDP port from" +msgstr "Обновление от UDP порта" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 +#, fuzzy +msgid "to" +msgstr "к" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:216 +#, fuzzy +msgid "Gracefully restarting into Hidden Router Mode" +msgstr "Правильно перезапуска в скрытые режиме маршрутизатора" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:218 +#, fuzzy +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "Правильно перезапуска для выхода Скрытый режим маршрутизатора" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:227 +#, fuzzy +msgid "Enabling UPnP, restart required to take effect" +msgstr "Включение UPnP, необходима перезагрузка вступили в силу" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:229 +#, fuzzy +msgid "Disabling UPnP, restart required to take effect" +msgstr "Отключение UPnP, необходима перезагрузка вступили в силу" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:235 +#, fuzzy +msgid "Requiring SSU introducers" +msgstr "Требование SSU поручителями" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:275 +#, fuzzy +msgid "Gracefully restarting I2P to change published router address" +msgstr "Правильно перезапуска I2P изменить опубликован адрес маршрутизатора" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:293 +#, fuzzy +msgid "Updating bandwidth share percentage" +msgstr "Обновление пропускную процентной доли" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:363 +#, fuzzy +msgid "Updated bandwidth limits" +msgstr "Обновлен пределы полосы пропускания" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:39 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:47 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:50 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:57 +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:60 +#, fuzzy +msgid "unknown" +msgstr "неизвестный" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:165 +#, fuzzy +msgid "bits per second" +msgstr "бит в секунду" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314 +#, fuzzy +msgid "Ban peer until restart" +msgstr "Запрет пир пока маршрутизатора перезагружается" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 +#, fuzzy, java-format +msgid "Manually banned via {0}" +msgstr "Вручную запретили через {0}" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#, fuzzy +msgid "Peer" +msgstr "Пир" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 +#, fuzzy +msgid "banned until restart" +msgstr "Запрещена пока перезагрузка" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38 +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59 +#, fuzzy +msgid "Invalid peer" +msgstr "Неверное сверстников" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:316 +#, fuzzy +msgid "Unban peer" +msgstr "Отмена запрета пира" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 +#, fuzzy +msgid "unbanned" +msgstr "запрет удален" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 +#, fuzzy +msgid "is not currently banned" +msgstr "в настоящее время не запрещена" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322 +#, fuzzy +msgid "Adjust Profile Bonuses" +msgstr "Настройка дополнительных потоков профиля" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 +#, fuzzy +msgid "Bad speed value" +msgstr "Неправильное значение скорости" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 +#, fuzzy +msgid "Bad capacity value" +msgstr "Неправильное значение потенциала" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:57 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:292 +#, fuzzy +msgid "Shutdown immediately" +msgstr "Выключить сразу" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 +#, fuzzy +msgid "Cancel shutdown" +msgstr "Отмена выключения" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 +#, fuzzy +msgid "Cancel restart" +msgstr "Отмена перезагрузка" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 +#, fuzzy +msgid "Restart immediately" +msgstr "Перезагрузка сразу" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 +#, fuzzy +msgid "Restart" +msgstr "Перезагрузка" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46 +#, fuzzy +msgid "Shutdown" +msgstr "Выключение" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 +#, fuzzy +msgid "Restart imminent" +msgstr "Перезагрузка сразу" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 +#, fuzzy +msgid "Shutdown imminent" +msgstr "Выключения неминуемого" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 +#, fuzzy, java-format +msgid "Shutdown in {0}" +msgstr "Выключение через {0}" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 +#, fuzzy, java-format +msgid "Restart in {0}" +msgstr "Перезагрузка через {0}" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:290 +#, fuzzy +msgid "Shutdown gracefully" +msgstr "Грациозно выключить" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 +#, fuzzy +msgid "Graceful shutdown initiated" +msgstr "Изящный выключение инициативе" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 +#, fuzzy +msgid "Shutdown immediately! boom bye bye bad bwoy" +msgstr "выключения немедленно! бум пока пока плохой мальчик" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:294 +#, fuzzy +msgid "Cancel graceful shutdown" +msgstr "Отмена изящные выключении" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 +#, fuzzy +msgid "Graceful shutdown cancelled" +msgstr "Изящный выключения отменен" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308 +#, fuzzy +msgid "Graceful restart" +msgstr "Мягкого перезапуска" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 +#, fuzzy +msgid "Graceful restart requested" +msgstr "Мягкого перезапуска просил" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:310 +#, fuzzy +msgid "Hard restart" +msgstr "Жесткая перезагрузка" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 +#, fuzzy +msgid "Hard restart requested" +msgstr "Жесткая перезагрузка просил" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 +#, fuzzy +msgid "Rekey and Restart" +msgstr "Восстановить Ключ и Перезагрузите" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 +#, fuzzy +msgid "Rekeying after graceful restart" +msgstr "Повторный ввод после мягкого перезапуска" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 +#, fuzzy +msgid "Rekey and Shutdown" +msgstr "Восстановить Ключ и Выключении" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 +#, fuzzy +msgid "Rekeying after graceful shutdown" +msgstr "Повторный ввод после выключения изящный" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 +#, fuzzy +msgid "Run I2P on startup" +msgstr "Запуск I2P при запуске" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 +#, fuzzy +msgid "Don't run I2P on startup" +msgstr "Не запускать при запуске I2P" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:356 +#, fuzzy +msgid "Dump threads" +msgstr "Сваливать Память" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 +#, fuzzy +msgid "Show systray icon" +msgstr "Показать системном трее значок" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 +#, fuzzy +msgid "System tray icon enabled." +msgstr "Значок на панели задач включена." + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:110 +#, fuzzy +msgid "System tray icon feature not supported on this platform. Sorry!" +msgstr "Значок на панели задач функция не поддерживается на этой платформе. Извините!" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:101 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113 +#, fuzzy +msgid "Warning: unable to contact the systray manager" +msgstr "Предупреждение: Не удается связаться с менеджером системный трей" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +#, fuzzy +msgid "Hide systray icon" +msgstr "Скрыть системном трее значок" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 +#, fuzzy +msgid "System tray icon disabled." +msgstr "Значок на панели задач отключен." + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 +#, fuzzy +msgid "View console on startup" +msgstr "Открыть консоль при старте" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +#, fuzzy +msgid "Console is to be shown on startup" +msgstr "Консоль будет показано при старте" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:366 +#, fuzzy +msgid "Do not view console on startup" +msgstr "Не рассматривают консоль при старте" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +#, fuzzy +msgid "Console is not to be shown on startup" +msgstr "Консоли не будет показано при старте" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +#, fuzzy +msgid "Service installed" +msgstr "Установлена служба" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +#, fuzzy +msgid "Warning: unable to install the service" +msgstr "Предупреждение: не удалось установить службу" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +#, fuzzy +msgid "Service removed" +msgstr "Служба удалена" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +#, fuzzy +msgid "Warning: unable to remove the service" +msgstr "Предупреждение: Не удается удалить службу" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 +#, fuzzy +msgid "Stat filter and location updated successfully to" +msgstr "Стат фильтра и расположения успешно обновлена до" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 +#, fuzzy +msgid "Failed to update the stat filter and location" +msgstr "Не удалось обновить фильтра стат и местоположение" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 +#, fuzzy +msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page" +msgstr "Графика список обновляется, может занять до 60s должно быть отражено здесь и на графов странице " + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:137 +#, fuzzy +msgid "Updated settings for all pools." +msgstr "Обновление настройки для всех бассейнов." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +#, fuzzy +msgid "Exploratory tunnel configuration saved successfully." +msgstr "Разведочный конфигурации туннеля успешно сохранены." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:144 +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36 +#, fuzzy +msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgstr "Ошибка при сохранении конфигурации (применяется, но не сохранили) - пожалуйста, смотрите логи ошибок." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:11 +#, fuzzy +msgid "hop" +msgstr "хоп" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:12 +#, fuzzy +msgid "tunnel" +msgstr "туннель" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 +#, fuzzy +msgid "hops" +msgstr "хопа" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +#, fuzzy +msgid "tunnels" +msgstr "туннели" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:40 +#, fuzzy +msgid "Exploratory tunnels" +msgstr "Разведочные туннели" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:60 +#, fuzzy +msgid "Client tunnels for" +msgstr "Клиентские туннели для" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +#, fuzzy +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "АНОНИМНОСТЬ ПРЕДУПРЕЖДЕНИЕ - Настройки включают 0-хоп туннелей." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +#, fuzzy +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "ANONYMITY WARNING - Settings include 1-hop tunnels." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +#, fuzzy +msgid "PERFORMANCE WARNING - Settings include very long tunnels." +msgstr "ИСПОЛНЕНИИ ВНИМАНИЕ - настройки включают в себя очень длинные туннели." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +#, fuzzy +msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." +msgstr "ИСПОЛНЕНИИ ВНИМАНИЕ - настройки включают в больших количествах туннель." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#, fuzzy +msgid "Inbound" +msgstr "Входящий" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +#, fuzzy +msgid "Outbound" +msgstr "Исходящие" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#, fuzzy +msgid "Length" +msgstr "Лесото" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#, fuzzy +msgid "Randomization" +msgstr "Рандомизации" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#, fuzzy +msgid "Quantity" +msgstr "Колич." + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#, fuzzy +msgid "Backup quantity" +msgstr "Резервное копирование количестве" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +#, fuzzy +msgid "Inbound options" +msgstr "Входящий конфигурации" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +#, fuzzy +msgid "Outbound options" +msgstr "Исходящие конфигурации" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 +#, fuzzy +msgid "Theme change saved." +msgstr "Изменение сохраненной тема." + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 +#, fuzzy +msgid "Refresh the page to view." +msgstr "Обновите страницу, чтобы просмотреть." + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +#, fuzzy +msgid "English" +msgstr "Английский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +#, fuzzy +msgid "French" +msgstr "Французский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +#, fuzzy +msgid "German" +msgstr "Немецкий" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +#, fuzzy +msgid "Chinese" +msgstr "Китайский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +#, fuzzy +msgid "Dutch" +msgstr "Голландский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +#, fuzzy +msgid "Russian" +msgstr "Русский" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +#, fuzzy +msgid "Swedish" +msgstr "Шведский" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:56 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:310 +#, fuzzy +msgid "Check for updates" +msgstr "Проверка обновлений" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:63 +#, fuzzy +msgid "Update available, attempting to download now" +msgstr "Доступно обновление, пытаясь загрузить сейчас" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:65 +#, fuzzy +msgid "Update available, click button on left to download" +msgstr "Доступные обновления, нажмите кнопку на левой скачать" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:67 +#, fuzzy +msgid "No update available" +msgstr "Нет доступных обновлений" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:75 +#, fuzzy +msgid "Updating news URL to" +msgstr "Обновление новостей на URL" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:83 +#, fuzzy +msgid "Updating proxy host to" +msgstr "Обновление прокси-сервера для" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:91 +#, fuzzy +msgid "Updating proxy port to" +msgstr "Обновление прокси порта" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +#, fuzzy +msgid "Updating refresh frequency to" +msgstr "Обновление частоту обновления для" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 +#, fuzzy +msgid "Updating update policy to" +msgstr "Updating update rules to" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +#, fuzzy +msgid "Updating update URLs." +msgstr "Обновляет обновления URL-адресов." + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:128 +#, fuzzy +msgid "Updating trusted keys." +msgstr "Обновление доверенных ключей." + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:136 +#, fuzzy +msgid "Updating unsigned update URL to" +msgstr "Обновление неподписанных URL обновления" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:75 +#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#, fuzzy +msgid "Never" +msgstr "Никогда" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:77 +#, fuzzy +msgid "Every" +msgstr "Каждый" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:92 +#, fuzzy +msgid "Notify only" +msgstr "Сообщите только" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:97 +#, fuzzy +msgid "Download and verify only" +msgstr "Скачать и проверить только" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:101 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:103 +#, fuzzy +msgid "Download, verify, and restart" +msgstr "Скачать, проверки и перезапуск" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#, fuzzy +msgid "Configure Graph Display" +msgstr "Конфигурация Диаграмм Дисплея" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#, fuzzy +msgid "Select Stats" +msgstr "Выберите статистику" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:109 +#, fuzzy +msgid "Periods" +msgstr "Периоды" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:110 +#, fuzzy +msgid "Plot averages" +msgstr "Среднее значение диаграммы" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:111 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336 +#, fuzzy +msgid "or" +msgstr "или" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:111 +#, fuzzy +msgid "plot events" +msgstr "показания диаграммы" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:112 +#, fuzzy +msgid "Image sizes" +msgstr "Размеры изображения" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:112 +#, fuzzy +msgid "width" +msgstr "ширина" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:113 +#, fuzzy +msgid "height" +msgstr "высота" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:113 +#: ../java/src/net/i2p/router/web/GraphHelper.java:114 +#, fuzzy +msgid "pixels" +msgstr "пиксели" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#, fuzzy +msgid "Refresh delay" +msgstr "Задержка обновления" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#, fuzzy +msgid "hour" +msgstr "час" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#, fuzzy +msgid "minute" +msgstr "минута" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#, fuzzy +msgid "minutes" +msgstr "минуты" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:116 +#, fuzzy +msgid "Redraw" +msgstr "Перерисовать" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:59 +#, fuzzy +msgid "Network Database RouterInfo Lookup" +msgstr "Поиск Информации о Маршрутизаторе Базы Данных Сети" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 +#, fuzzy +msgid "Router" +msgstr "Маршрутизатор" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 +#, fuzzy +msgid "not found in network database" +msgstr "не найдено в сети баз данных" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:82 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 +#, fuzzy +msgid "Network Database Contents" +msgstr "База Данных Содержание" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 +#, fuzzy +msgid "View RouterInfo" +msgstr "Открыть Маршрутизатор Информация" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 +#, fuzzy +msgid "LeaseSets" +msgstr "АрендаНаборы" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 +#, fuzzy +msgid "LeaseSet" +msgstr "АрендаНаборы" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 +#, fuzzy +msgid "Local" +msgstr "Локальный" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96 +#, fuzzy +msgid "Unpublished" +msgstr "Неопубликованные" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104 +#, fuzzy +msgid "Destination" +msgstr "Направление" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:114 +#, fuzzy, java-format +msgid "Expires in {0}" +msgstr "Срок истекает в {0}" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:116 +#, fuzzy, java-format +msgid "Expired {0} ago" +msgstr "Истек {0} назад" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +#, fuzzy +msgid "Gateway" +msgstr "Шлюз" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 +#, fuzzy +msgid "Lease" +msgstr "Аренда" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:120 +#, fuzzy +msgid "Tunnel" +msgstr "Туннель" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 +#, fuzzy +msgid "View LeaseSets" +msgstr "Смотреть на Аренду-Наборы" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#, fuzzy +msgid "Not initialized" +msgstr "Не инициализируется" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:145 +#, fuzzy +msgid "Routers" +msgstr "Маршрутизаторы" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:147 +#, fuzzy +msgid "Show all routers" +msgstr "Показать все маршрутизаторы" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:149 +#, fuzzy +msgid "Show all routers with full stats" +msgstr "Показать все маршрутизаторы с полной статистики" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:184 +#, fuzzy +msgid "Network Database Router Statistics" +msgstr "Сетевая База Данных Статистики Маршрутизатора" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:204 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:222 +#, fuzzy +msgid "Count" +msgstr "Количество" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 +#, fuzzy +msgid "Version" +msgstr "Версия" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:204 +#, fuzzy +msgid "Transports" +msgstr "Транспортные" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:222 +#, fuzzy +msgid "Country" +msgstr "Страна" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:254 +#, fuzzy +msgid "Our info" +msgstr "Наша информация" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:256 +#, fuzzy +msgid "Peer info for" +msgstr "Информация о пире" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:260 +#, fuzzy +msgid "Full entry" +msgstr "Полная запись" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:96 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +#, fuzzy +msgid "Hidden" +msgstr "Скрыто" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 +#, fuzzy +msgid "Updated" +msgstr "Обновлено" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 +#, fuzzy, java-format +msgid "{0} ago" +msgstr "{0} назад" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:269 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273 +#, fuzzy +msgid "Published" +msgstr "Опубликован" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:275 +#, fuzzy +msgid "Address(es)" +msgstr "Адреса" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#, fuzzy +msgid "Hidden or starting up" +msgstr "Скрытая или запуском" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#, fuzzy +msgid "SSU" +msgstr "SSU" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#, fuzzy +msgid "SSU with introducers" +msgstr "SSU с поручителями" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#, fuzzy +msgid "NTCP" +msgstr "NTCP" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#, fuzzy +msgid "NTCP and SSU" +msgstr "NTCP и SSU" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#, fuzzy +msgid "NTCP and SSU with introducers" +msgstr "NTCP и SSU с поручителями" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:80 +#, fuzzy, java-format +msgid "News last updated {0} ago." +msgstr "Новости Последнее обновление {0} назад." + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:86 +#, fuzzy, java-format +msgid "News last checked {0} ago." +msgstr "Новости Последняя проверка: {0} назад." + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 +#, fuzzy +msgid "Peer Profiles" +msgstr "Профили Пиров" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 +#, fuzzy, java-format +msgid "Showing {0} recent profiles." +msgstr "Показаны {0} последних профилей." + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 +#, fuzzy, java-format +msgid "Hiding {0} older profiles." +msgstr "Сокрытие {0} взрослыми профилей." + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 +#, fuzzy, java-format +msgid "Hiding {0} standard profiles." +msgstr "Сокрытие {0} стандартных профилей." + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 +#, fuzzy +msgid "Groups (Caps)" +msgstr "Группы (Способности)" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:334 +#, fuzzy +msgid "Speed" +msgstr "Скорость" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:84 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338 +#, fuzzy +msgid "Capacity" +msgstr "Способность" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +#, fuzzy +msgid "Integration" +msgstr "Интеграция" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 +#, fuzzy +msgid "Status" +msgstr "Статус" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 +#, fuzzy +msgid "Fast, High Capacity" +msgstr "Быстрый, Высокая Производительная Мощность" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127 +#, fuzzy +msgid "High Capacity" +msgstr "Высокая производительная мощность" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 +#, fuzzy +msgid "Standard" +msgstr "Стандартный" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 +#, fuzzy +msgid "Failing" +msgstr "В противном случае" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 +#, fuzzy +msgid "Integrated" +msgstr "Интегрированные" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +#, fuzzy +msgid "Banned" +msgstr "Запрещена" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 +#, fuzzy +msgid "Unreachable" +msgstr "Недоступные" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 +#, fuzzy +msgid "Test Fails" +msgstr "Испытание Неудачи" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +#, fuzzy +msgid "profile" +msgstr "профиль" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +#, fuzzy +msgid "Floodfill and Integrated Peers" +msgstr "Floodfill и Интегрированные Пиры" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +#, fuzzy +msgid "Caps" +msgstr "Предельные" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +#, fuzzy +msgid "Integ. Value" +msgstr "Интегрированное значение" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +#, fuzzy +msgid "Last Heard About" +msgstr "Последний Слышали О" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +#, fuzzy +msgid "Last Heard From" +msgstr "Последний Раз Слышали От" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +#, fuzzy +msgid "Last Good Send" +msgstr "Последний Хорошо Отправить" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +#, fuzzy +msgid "Last Bad Send" +msgstr "Последний Плохо Отправить" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +#, fuzzy +msgid "10m Resp. Time" +msgstr "10 мин. Время отклика" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +#, fuzzy +msgid "1h Resp. Time" +msgstr "1 час Время отклика" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +#, fuzzy +msgid "1d Resp. Time" +msgstr "1 день Время отклика" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +#, fuzzy +msgid "Last Good Lookup" +msgstr "Последний Хороший Поиск" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +#, fuzzy +msgid "Last Bad Lookup" +msgstr "Последний Плохо Поиска" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +#, fuzzy +msgid "Last Good Store" +msgstr "Последний Хорошо Хранения" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +#, fuzzy +msgid "Last Bad Store" +msgstr "Последний Плохо Хранения" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +#, fuzzy +msgid "1h Fail Rate" +msgstr "1ч Интенсивность Отказов" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +#, fuzzy +msgid "1d Fail Rate" +msgstr "1д Интенсивность Отказов" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +#, fuzzy +msgid "Thresholds" +msgstr "Порог" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +#, fuzzy +msgid "fast peers" +msgstr "быстрые пиры" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +#, fuzzy +msgid "high capacity peers" +msgstr "пиры у которых высокая производительная мощность" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +#, fuzzy +msgid " well integrated peers" +msgstr "хорошо интегрированные пиры" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +#, fuzzy +msgid "Definitions" +msgstr "Определение" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#, fuzzy +msgid "as determined by the profile organizer" +msgstr "как определяется профилем организатор" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +#, fuzzy +msgid "groups" +msgstr "группы" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#, fuzzy +msgid "capabilities in the netDb, not used to determine profiles" +msgstr "возможности в сетьБД, не используются для определения профилей" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +#, fuzzy +msgid "caps" +msgstr "пределы" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#, fuzzy +msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" +msgstr "Пик производительности (байт в секунду) в течение 1 минуты периода, что партнер имеет выдержанный в одном туннеле" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +#, fuzzy +msgid "speed" +msgstr "скорость" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#, fuzzy +msgid "capacity" +msgstr "потенциала" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +#, fuzzy +msgid "how many tunnels can we ask them to join in an hour?" +msgstr "cколько туннелей мы можем попросить их присоединиться к часу?" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#, fuzzy +msgid "how many new peers have they told us about lately?" +msgstr "сколько новых узлов не нам сказали последнее время?" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +#, fuzzy +msgid "integration" +msgstr "интеграция" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#, fuzzy +msgid "is the peer banned, or unreachable, or failing tunnel tests?" +msgstr "это совокупность запрещены или недоступны, или не туннель тесты?" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +#, fuzzy +msgid "status" +msgstr "статус" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:321 +#, fuzzy +msgid "n/a" +msgstr "не доступно" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#, fuzzy, java-format +msgid "Temporary ban expiring in {0}" +msgstr "Временного запрета истекает в {0}" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#, fuzzy, java-format +msgid "Banned until restart or in {0}" +msgstr "Запрещены до перезагрузку через {0}" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +#, fuzzy +msgid "unban now" +msgstr "удалить запрета сейчас" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 +#, fuzzy +msgid "Statistics gathered during this router's uptime" +msgstr "Статистические данные, полученные во время проведенное на сайте этого маршрутизатора" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 +#, fuzzy +msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate." +msgstr "Данные собраны квантуется более 1 минуты периода, поэтому следует использовать в качестве оценки." + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44 +#, fuzzy +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "Настройка запуска клиентов и Webapps (услуг); вручную запустить покоя услуги" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46 +#, fuzzy +msgid "I2P Services" +msgstr "Сервисы I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52 +#, fuzzy +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "Управляйте своими I2P хостов файла здесь (I2P доменных имен)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 +#, fuzzy +msgid "Addressbook" +msgstr "Адресная Книжка" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58 +#, fuzzy +msgid "Built-in anonymous BitTorrent Client" +msgstr "Встроенные в анонимной загрузки клиента" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60 +#, fuzzy +msgid "Torrents" +msgstr "Торренты" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64 +#, fuzzy +msgid "Anonymous webmail client" +msgstr "Аноним электронной почтовый веб-клиент" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66 +#, fuzzy +msgid "Webmail" +msgstr "Веб-Почта" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 +#, fuzzy +msgid "Anonymous resident webserver" +msgstr "Аноним сервер резидента" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72 +#, fuzzy +msgid "Webserver" +msgstr "Веб-Сервер" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76 +#, fuzzy +msgid "Configure I2P Router" +msgstr "Настройка Маршрутизатора I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:78 +#, fuzzy +msgid "I2P Internals" +msgstr "Внутренняя Организация I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348 +#, fuzzy +msgid "View existing tunnels and tunnel build status" +msgstr "Просмотр существующих туннелей и туннелей построить статус" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:225 +#, fuzzy +msgid "Show all current peer connections" +msgstr "Показать все текущие подключения сверстников" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96 +#, fuzzy +msgid "Show recent peer performance profiles" +msgstr "Показать последних профили производительности сверстников" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98 +#, fuzzy +msgid "Profiles" +msgstr "Профили" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102 +#, fuzzy +msgid "Show list of all known I2P routers" +msgstr "Показать список всех известных I2P маршрутизаторы" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104 +#, fuzzy +msgid "NetDB" +msgstr "СетьДБ" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108 +#, fuzzy +msgid "Health Report" +msgstr "Доклад о Состоянии Здравоохранения" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110 +#, fuzzy +msgid "Logs" +msgstr "Логи" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114 +#, fuzzy +msgid "Show the router's workload, and how it's performing" +msgstr "Показать нагрузку на маршрутизатор, и как это исполняющей" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116 +#, fuzzy +msgid "Jobs" +msgstr "Задачи" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120 +#, fuzzy +msgid "Graph router performance" +msgstr "График производительности маршрутизатора" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122 +#, fuzzy +msgid "Graphs" +msgstr "Диаграммы" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126 +#, fuzzy +msgid "Textual router performance statistics" +msgstr "Текстовое маршрутизатора статистики по эффективности" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138 +#, fuzzy +msgid "I2P Router Help" +msgstr "I2P Помощь Маршрутизатор" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140 +#, fuzzy +msgid "General" +msgstr "Общий" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 +#, fuzzy +msgid "Your unique I2P router identity is" +msgstr "Ваш уникальный I2P маршрутизатора идентичность" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +#, fuzzy +msgid "never reveal it to anyone" +msgstr "никогда не показывайте его никому" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#, fuzzy +msgid "Local Identity" +msgstr "Локальный Адрес" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 +#, fuzzy +msgid "How long we've been running for this session" +msgstr "Как долго мы уже в течение этой сессии" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 +#, fuzzy +msgid "Uptime" +msgstr "Аптайм" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +#, fuzzy +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 +#, fuzzy +msgid "Download" +msgstr "Загрузка" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:207 +#, fuzzy +msgid "Download Unsigned" +msgstr "Загрузка Неподписанных" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233 +#, fuzzy +msgid "Active" +msgstr "Активные" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:241 +#, fuzzy +msgid "Fast" +msgstr "Быстрые" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:247 +#, fuzzy +msgid "High capacity" +msgstr "Высокая производительная мощность" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259 +#, fuzzy +msgid "Known" +msgstr "Общепризнанные" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 +#, fuzzy +msgid "Help with firewall configuration" +msgstr "Помощь в настройке брандмауэра" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 +#, fuzzy +msgid "Check NAT/firewall" +msgstr "Проверка NAT/брандмауэры" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296 +#, fuzzy +msgid "Reseed" +msgstr "Повтор Первой Сети Связи" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:313 +#, fuzzy +msgid "Configure router bandwidth allocation" +msgstr "Настройка маршрутизатора распределения пропускной способностью" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:315 +#, fuzzy +msgid "Bandwidth in/out" +msgstr "Пропускная способность входящего / выходящего" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332 +#, fuzzy +msgid "Total" +msgstr "Всего" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:340 +#, fuzzy +msgid "Used" +msgstr "Колич." + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:350 +#, fuzzy +msgid "Tunnels in/out" +msgstr "Туннели входящие / выходящие " + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:355 +#, fuzzy +msgid "Exploratory" +msgstr "Разведочные" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 +#, fuzzy +msgid "Participating" +msgstr "Участвующие" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:377 +#, fuzzy +msgid "What's in the router's job queue?" +msgstr "Что в очереди заданий маршрутизатор?" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 +#, fuzzy +msgid "Congestion" +msgstr "Перегрузка" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +#, fuzzy +msgid "Job lag" +msgstr "Задержка задачи" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390 +#, fuzzy +msgid "Message delay" +msgstr "Задержка доставки сообщения" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:396 +#, fuzzy +msgid "Tunnel lag" +msgstr "Задержка туннеля" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402 +#, fuzzy +msgid "Backlog" +msgstr "Очередь" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:73 +#, fuzzy +msgid "skew" +msgstr "отклонение" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:92 +#, fuzzy +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "ОШИБКА-менеджер клиентов I2CP ошибка - проверьте журналы" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:94 +#, fuzzy +msgid "ERR-ClockSkew" +msgstr "ОШИБКА-ЧасиОтклонение" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:103 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +#, fuzzy +msgid "OK" +msgstr "ОК" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:104 +#, fuzzy +msgid "ERR-Private TCP Address" +msgstr "ОШИБКА Частные TCP-адрес" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:106 +#, fuzzy +msgid "ERR-SymmetricNAT" +msgstr "ОШИБКА - Симметричный-NAT" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:109 +#, fuzzy +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ-файрвол с Входящий TCP Включено" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:111 +#, fuzzy +msgid "WARN-Firewalled and Floodfill" +msgstr "ПРЕДУПРЕЖДЕНИЕ-файрволл и Floodfill" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +#, fuzzy +msgid "WARN-Firewalled and Fast" +msgstr "ПРЕДУПРЕЖДЕНИЕ-файрволл и быстро" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:114 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +#, fuzzy +msgid "Firewalled" +msgstr "За Брандмауэром" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:116 +#, fuzzy +msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "ОШИБКА UDP-порта в использовании - Задать i2np.udp.internalPort=xxxx Расширенный конфигурации и перезапустить" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#, fuzzy +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "ERROR-UDP Disabled and Inbound TCP host/port not set" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +#, fuzzy +msgid "WARN-Firewalled with UDP Disabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ-файрвол с UDP отключено" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:127 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +#, fuzzy +msgid "Testing" +msgstr "Проверка" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:360 +#, fuzzy +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "Добавлять / удалять / редактировать и управлять вашим клиентом и сервером туннелей" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:360 +#, fuzzy +msgid "Local Destinations" +msgstr "Локальные Пункты Назначения" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:369 +#, fuzzy +msgid "Server" +msgstr "Сервер" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:373 +#, fuzzy +msgid "Show tunnels" +msgstr "Показать туннелей" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +#, fuzzy +msgid "Leases expired" +msgstr "Срока аренды" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:385 +#, fuzzy +msgid "Rebuilding" +msgstr "Восстановление" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:385 +#, fuzzy +msgid "ago" +msgstr "назад" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:388 +#, fuzzy +msgid "Ready" +msgstr "Готовый" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#, fuzzy +msgid "Building" +msgstr "Строительство" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#, fuzzy +msgid "Building tunnels" +msgstr "Строительство туннелей" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:404 +#: ../java/strings/Strings.java:36 +#, fuzzy +msgid "shared clients" +msgstr "общие клиенты" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:40 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:62 +#, fuzzy +msgid "configure" +msgstr "конфигурировать" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:64 +#, fuzzy +msgid "dead" +msgstr "мертвый" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:70 +#, fuzzy +msgid "Participating tunnels" +msgstr "Участвующие туннели" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 +#, fuzzy +msgid "From" +msgstr "От" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 +#, fuzzy +msgid "Receive on" +msgstr "Получить на" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 +#, fuzzy +msgid "Expiration" +msgstr "Истечение срока" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 +#, fuzzy +msgid "Send on" +msgstr "Отправить по" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 +#, fuzzy +msgid "To" +msgstr "К" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +#, fuzzy +msgid "Rate" +msgstr "Ставка" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +#, fuzzy +msgid "Role" +msgstr "Роль" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +#, fuzzy +msgid "Usage" +msgstr "Использование" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 +#, fuzzy +msgid "grace period" +msgstr "льготный период" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 +#, fuzzy +msgid "Outbound Endpoint" +msgstr "Исходящие Конечная точка" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 +#, fuzzy +msgid "Inbound Gateway" +msgstr "Входящий Сетевой Шлюз" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162 +#, fuzzy +msgid "Participant" +msgstr "Участник" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 +#, fuzzy +msgid "Inactive participating tunnels" +msgstr "Неактивные участвующие туннелей" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +#, fuzzy +msgid "Lifetime bandwidth usage" +msgstr "Использование долговечной пропускной способности входящего канала" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +#, fuzzy +msgid "Expiry" +msgstr "Истечение Срока" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +#, fuzzy +msgid "In/Out" +msgstr "Входящего / Выходящего" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159 +#, fuzzy +msgid "Participants" +msgstr "Участники" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165 +#, fuzzy +msgid "Endpoint" +msgstr "Конечная Точка" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +#, fuzzy +msgid "Build in progress" +msgstr "Опираясь на данном моменте" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 +#, fuzzy +msgid "inbound" +msgstr "входящий" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +#, fuzzy +msgid "outbound" +msgstr "исходящий" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:215 +#, fuzzy +msgid "No tunnels; waiting for the grace period to end." +msgstr "Нет туннелях, ожидая льготного периода и до конца." + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +#, fuzzy +msgid "in" +msgstr "входящий" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 +#, fuzzy +msgid "out" +msgstr "исходящий" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:234 +#, fuzzy +msgid "Tunnel Counts By Peer" +msgstr "Тоннель графов По Пиру" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#, fuzzy +msgid "% of total" +msgstr "% всего" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#, fuzzy +msgid "Expl. + Client" +msgstr "Разведочной + Клиентский" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#, fuzzy +msgid "Part. from + to" +msgstr "Участие от + до" + +#: ../java/strings/Strings.java:12 +#, fuzzy +msgid "addressbook" +msgstr "адресная книжка" + +#: ../java/strings/Strings.java:13 +#, fuzzy +msgid "i2psnark" +msgstr "i2psnark" + +#: ../java/strings/Strings.java:14 +#, fuzzy +msgid "i2ptunnel" +msgstr "i2p-туннель" + +#: ../java/strings/Strings.java:15 +#, fuzzy +msgid "susimail" +msgstr "susi-почта" + +#: ../java/strings/Strings.java:16 +#, fuzzy +msgid "susidns" +msgstr "susidns" + +#: ../java/strings/Strings.java:17 +#, fuzzy +msgid "routerconsole" +msgstr "маршрутизатор-консоли" + +#: ../java/strings/Strings.java:22 +#, fuzzy +msgid "Web console" +msgstr "Веб-консоль" + +#: ../java/strings/Strings.java:23 +#, fuzzy +msgid "SAM application bridge" +msgstr "Мост приложения SAM" + +#: ../java/strings/Strings.java:24 +#, fuzzy +msgid "Application tunnels" +msgstr "Применение туннелей" + +#: ../java/strings/Strings.java:25 +#, fuzzy +msgid "My eepsite web server" +msgstr "Мой веб-сервер «eepsite»" + +#: ../java/strings/Strings.java:26 +#, fuzzy +msgid "I2P webserver (eepsite)" +msgstr "Мой веб-сервер «eepsite»" + +#: ../java/strings/Strings.java:27 +#, fuzzy +msgid "Browser launch at startup" +msgstr "Запуск браузера при запуске I2P" + +#: ../java/strings/Strings.java:28 +#, fuzzy +msgid "BOB application bridge" +msgstr "Мост приложения BOB" + +#: ../java/strings/Strings.java:30 +#, fuzzy +msgid "Open Router Console in web browser at startup" +msgstr "Открыть консоль маршрутизатора в веб-браузере при запуске" + +#: ../java/strings/Strings.java:37 +#, fuzzy +msgid "IRC proxy" +msgstr "IRC прокси" + +#: ../java/strings/Strings.java:38 +#, fuzzy +msgid "eepsite" +msgstr "eepsite" + +#: ../java/strings/Strings.java:39 +#, fuzzy +msgid "I2P webserver" +msgstr "I2P web-server" + +#: ../java/strings/Strings.java:40 +#, fuzzy +msgid "HTTP Proxy" +msgstr "HTTP Прокси" + +#: ../java/strings/Strings.java:42 +#, fuzzy +msgid "eepProxy" +msgstr "eep-Прокси" + +#: ../java/strings/Strings.java:43 +#, fuzzy +msgid "ircProxy" +msgstr "irc-Прокси" + +#: ../java/strings/Strings.java:45 +#, fuzzy +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/strings/Strings.java:47 +#, fuzzy +msgid "iMule" +msgstr "iMule" + +#: ../java/strings/Strings.java:51 +#, fuzzy +msgid "classic" +msgstr "классическая" + +#: ../java/strings/Strings.java:52 +#, fuzzy +msgid "dark" +msgstr "темная" + +#: ../java/strings/Strings.java:53 +#, fuzzy +msgid "light" +msgstr "светлая" + +#: ../java/strings/Strings.java:54 +#, fuzzy +msgid "midnight" +msgstr "полуночная" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +#, fuzzy +msgid "config networking" +msgstr "конфигурация сети" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:231 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:218 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:228 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:216 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:236 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216 +#, fuzzy +msgid "Refresh (s)" +msgstr "Обновить (сек)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:222 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:232 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:227 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:224 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:220 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:239 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220 +#, fuzzy +msgid "Enable" +msgstr "Включать" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 +#, fuzzy +msgid "I2P Network Configuration" +msgstr "I2P Настройке Сети" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 +#, fuzzy +msgid "Bandwidth limiter" +msgstr "Ограничитель диапазона частот" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299 +#, fuzzy +msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgstr "I2P будет работать лучше, если Вы настроите частоту для подбора соответствующей скорости подсоединения к Интернету." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 +#, fuzzy +msgid "KBps In" +msgstr "Кбит/сек Загруженное" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 +#, fuzzy +msgid "KBps Out" +msgstr "Кбит/сек Закаченное" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +#, fuzzy +msgid "Share" +msgstr "Поделено" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:303 +#, fuzzy +msgid "NOTE" +msgstr "ЗАМЕТЬТЕ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 +#, fuzzy, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "Вы настроили протокол I2P, чтоб использовать только {0} килобит информации за секунду." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 +#, fuzzy +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "I2P требует, по крайней мере 12KBps чтобы поделить трафик. " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 +#, fuzzy +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgstr "Пожалуйста, включите поделен трафик (участие в туннелях), настроя больше пропускной способностью. " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +#, fuzzy +msgid "It improves your anonymity by creating cover traffic, and helps the network." +msgstr "Это улучшает вашу анонимность создавая покрытия трафика, а также помогает в сети." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350 +#, fuzzy, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "Вы настроили протокол I2P, чтоб использовать {0} килобит информации за секунду." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353 +#, fuzzy +msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +msgstr "Чем больше пропускная способность входящего/исходящего канала расшаренного ресурса, тем больше Вы поддерживаете анонимность и тем самым помогаете сети." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:356 +#, fuzzy +msgid "Cancel" +msgstr "Отклонить изменения" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 +#, fuzzy +msgid "IP and Transport Configuration" +msgstr "IP и конфигурации транспорта" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 +#, fuzzy +msgid "The default settings will work for most people." +msgstr "Настройки по умолчанию будет работать для большинства людей." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:367 +#, fuzzy +msgid "There is help below." +msgstr "Дополнительную информацию смотрите ниже:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 +#, fuzzy +msgid "UPnP Configuration" +msgstr "Конфигурация UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:373 +#, fuzzy +msgid "Enable UPnP to open firewall ports" +msgstr "Запустите UPnP, чтоб открыть порты брандмауэра" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#, fuzzy +msgid "UPnP status" +msgstr "статус UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +#, fuzzy +msgid "IP Configuration" +msgstr "IP Конфигурация" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441 +#, fuzzy +msgid "Externally reachable hostname or IP address" +msgstr "Внешне достижимое имя хоста или IP -адрес" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 +#, fuzzy +msgid "Use all auto-detect methods" +msgstr "Используйте все методы автоматического опознавания" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +#, fuzzy +msgid "Disable UPnP IP address detection" +msgstr "Отключите детектор IP-адреса UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +#, fuzzy +msgid "Ignore local interface IP address" +msgstr "Отклоните IP адрес локального интерфейса." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +#, fuzzy +msgid "Use SSU IP address detection only" +msgstr "Используйте только детектор IP- адреса SSU" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +#, fuzzy +msgid "Specify hostname or IP" +msgstr "Установите имя хоста или IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 +#, fuzzy +msgid "Select Interface" +msgstr "Выбирать Интерфейс" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +#, fuzzy +msgid "Hidden mode - do not publish IP" +msgstr "Скрытый метод – не разглашайте IP адрес" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 +#, fuzzy +msgid "(prevents participating traffic)" +msgstr "(препятствует причастному трафику)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:423 +#, fuzzy +msgid "UDP Configuration:" +msgstr "UDP Конфигурация" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 +#, fuzzy +msgid "UDP port:" +msgstr "UDP Порт:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +#, fuzzy +msgid "TCP Configuration" +msgstr "TCP Конфигурация" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445 +#, fuzzy +msgid "Use auto-detected IP address" +msgstr "Используйте только автоматически распознанный IP -адрес" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:447 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +#, fuzzy +msgid "currently" +msgstr "в настоящее время" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451 +#, fuzzy +msgid "if we are not firewalled" +msgstr "если есть доступ к порту." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 +#, fuzzy +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "Всегда используйте только автоматически распознанный IP-адрес (а не адрес брандмауэра)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465 +#, fuzzy +msgid "Disable inbound (Firewalled)" +msgstr "Отключите входящие (за брандмауэром)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:469 +#, fuzzy +msgid "Completely disable" +msgstr "Полностью отключите" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471 +#, fuzzy +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "(выберете, только если брандмауэр тормозит работу или блокирует выходные данные протокола управления передачей данных)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 +#, fuzzy +msgid "Externally reachable TCP port" +msgstr "Внешне достижимый порт протокола TCP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 +#, fuzzy +msgid "Use the same port configured for UDP" +msgstr "Используйте тот же порт, настроенный для протокола UDP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +#, fuzzy +msgid "Specify Port" +msgstr "Определите Порт" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:329 +#, fuzzy +msgid "Note" +msgstr "Заметьте" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492 +#, fuzzy +msgid "Changing these settings will restart your router." +msgstr "При изменении настроек, происходит перезагрузка маршрутизатора." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:498 +#, fuzzy +msgid "Configuration Help" +msgstr "Помощь конфигурации" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:500 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +#, fuzzy +msgid "While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP." +msgstr "Хотя I2P будет прекрасно работать позади большинства брандмауэров, ваша скорость и сетевой интеграции, вероятно, улучшится, если порт I2P направляется для UDP и TCP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:502 +#, fuzzy +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "Если можно, сделайте, пожалуйста, отверстие в брандмауэре, чтоб самостоятельно предоставленные UDP и TCP-пакеты могли дойти до Вас." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 +#, fuzzy +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgstr "Если не можете, I2P поспособствует тому, чтоб UPnP (набор сетевых протоколов) и отверстие в UDP, проделанное «применением SSU» переключили трафик." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:506 +#, fuzzy +msgid "Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm." +msgstr "Множество из перечисленных опций предназначены для использования в отдельных ситуациях, к примеру, где UPnP работает неверно, или брандмауэр находится вне контроля и причиняет вред." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 +#, fuzzy +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "Некоторые брадмауэры, к примеру, симметричные NAT-устройствам (преобразования сетевых адресов) могут и «не сработаться» с I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517 +#, fuzzy +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP используется для связи с интернет-шлюзом (IGDs), чтоб определять внешний IP-адрес и передовые порты." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:519 +#, fuzzy +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "Поддержка UPnP не испробована, и может не работать по нескольким причинам" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521 +#, fuzzy +msgid "No UPnP-compatible device present" +msgstr "Отсутствие UPnP- существующее совместимое устройство" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523 +#, fuzzy +msgid "UPnP disabled on the device" +msgstr "Выключенный UPnP в устройстве" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525 +#, fuzzy +msgid "Software firewall interference with UPnP" +msgstr "Взаимодействие программного обеспечения брандмауэра с UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +#, fuzzy +msgid "Bugs in the device's UPnP implementation" +msgstr "Ошибки при внедрении устройства UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:529 +#, fuzzy +msgid "Multiple firewall/routers in the internet connection path" +msgstr "Разнообразные брандмауэры/маршрутизаторы в способах подсоединения к интернету" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:531 +#, fuzzy +msgid "UPnP device change, reset, or address change" +msgstr "Замена устройства UPnP, перезагрузка или изменение адреса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:533 +#, fuzzy +msgid "Review the UPnP status here." +msgstr "Обзор статуса UPnP здесь." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:535 +#, fuzzy +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "UPnP может быть включено или отключено, но для получения желательного результата изменения требуется перезагрузка маршрутизатора." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +#, fuzzy +msgid "Hostnames entered above will be published in the network database." +msgstr "Имена хоста, зарегистрированные выше, будут опубликованы в базе данных сети." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +#, fuzzy +msgid "They are not private." +msgstr "Они не являются личными." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +#, fuzzy +msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgstr "Также, не запишите личный IP-адрес, как 127.0.0.1 или 192.168.1.1." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +#, fuzzy +msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially." +msgstr "Если Вы установите неправильный IP-адрес или имя хоста, или неправильно сконфигурируете Ваше NAT-устройство или брандмауэр, работа сети будет существенно ухудшаться." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545 +#, fuzzy +msgid "When in doubt, leave the settings at the defaults." +msgstr "Если Вы сомневаетесь, не заходите на настройки." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +#, fuzzy +msgid "Reachability Help" +msgstr "Помощь доступности" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552 +#, fuzzy +msgid "If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers." +msgstr "Если Вы думаете, что открыли Ваш брандмауэр, а протокол I2P все еще думает, что доступа к порту нет, помните, что у Вас могут быть различные брандмауэры, то есть,- и программное обеспечение, и внешние маршрутизаторы аппаратного обеспечения." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +#, fuzzy +msgid "If there is an error, the logs may also help diagnose the problem." +msgstr "Если обнаружится ошибка, текстовые файлы (logs) могут помочь раскрыть сущность проблемы." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +#, fuzzy +msgid "Your UDP port does not appear to be firewalled." +msgstr "Ваш UDP порт не закрыт" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +#, fuzzy +msgid "Your UDP port appears to be firewalled." +msgstr "Ваш UDP-порт закрыт. Кажеться что ваш UDP порт за брандмауером." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +#, fuzzy +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgstr "Поскольку методы детектирования брандмауэра не надежны на 100 %, может случайно обнаружиться ошибка." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +#, fuzzy +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgstr "Однако, если окажется, последовательно, Вы должны убедиться, как внешний и внутренний брандмауэр открыт для вашего порта." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +#, fuzzy +msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "Сеть заработает должным образом, если будет закрыт порт, причин для беспокойства нет. Когда доступа к порту нет, маршрутизатор использует «устройство ввода», чтоб ретранслировать входящее соединение." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +#, fuzzy +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "Несмотря на это, Вы получите больше сетевого трафика и тем самым поможете работе сети при условии, если откроете брандмауэры." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 +#, fuzzy +msgid "If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control." +msgstr "Если думаете, что Вы все сделали правильно, помните, что у Вас может быть как аппаратное, так и программное оборудование, и что в обходе дополнительного, основного брандмауэра, Вы не можете контролировать." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +#, fuzzy +msgid "Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P." +msgstr "Также некоторые маршрутизаторы не могут правильно отсылать TCP и UDP протоколы на один порт, или же они могут иметь иные ограничения или вирусы, которые препятствуют прохождению трафика в I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +#, fuzzy +msgid "The router is currently testing whether your UDP port is firewalled." +msgstr "Маршрутизатор проверяет, закрыт ли Ваш UDP порт." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +#, fuzzy +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "Маршрутизатор не конфигурируется для публикации адреса, поэтому он не ожидает входящего соединения." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +#, fuzzy +msgid "WARN - Firewalled and Fast" +msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Быстрый" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +#, fuzzy +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "Вы сконфигурировали протокол I2P, чтоб использовать более, чем 128 килобайт в секунду диапазона частоты, но доступа к порту нет." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +#, fuzzy +msgid "While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall." +msgstr "Хотя сеть будет должным образом работать в этой конфигурации, если Вы действительно имеете для совместного использования более 128 килобайт в секунду диапазона частот, будет лучше для сети, если б Вы открыли брандмауэр." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +#, fuzzy +msgid "WARN - Firewalled and Floodfill" +msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Floodfill" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +#, fuzzy +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "Вы настроили I2P быть floodfill маршрутизатора, но маршрутизатор за брандмауэром." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +#, fuzzy +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "Для лучшей совместной работы в качестве floodfill маршрутизатора, Вы должны открыть свой брандмауэр." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +#, fuzzy +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Входящий TCP Включено" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +#, fuzzy +msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well." +msgstr "Вы сконфигурировали входящий TCP, однако Ваш UDP порт закрыт, поэтому скорее всего Ваш TCP – порт так же закрыт." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +#, fuzzy +msgid "If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network." +msgstr "Если Ваш TCP порт закрыт входящим включенным TCP, маршрутизаторы не смогут соединиться с Вами через TCP, т.к. могут повредить сеть." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +#, fuzzy +msgid "Please open your firewall or disable inbound TCP above." +msgstr "Пожалуйста, откройте свой брандмауэр или отключенный входящий порт TCP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +#, fuzzy +msgid "WARN - Firewalled with UDP Disabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и UDP Отключенный" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +#, fuzzy +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "Вы сконфигурировали входящий TCP, но все равно Вы отключили UDP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +#, fuzzy +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "Вы firewalled on TCP, поэтому Ваш маршрутизатор не может принять входящие соединения." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +#, fuzzy +msgid "Please open your firewall or enable UDP." +msgstr "Пожалуйста, откройте свой брандмауер или закройте UDP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +#, fuzzy +msgid "ERR - Clock Skew" +msgstr "ОШИБКА - Часы Отклонение" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +#, fuzzy +msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +msgstr "Вашы часы системного времени сбились, что усложнит работу в сети." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +#, fuzzy +msgid "Correct your clock setting if this error persists." +msgstr "Настройте часы, если эта ошибка не исчезает." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +#, fuzzy +msgid "ERR - Private TCP Address" +msgstr "ОШИБКА - Частный TCP Адрес" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +#, fuzzy +msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address." +msgstr "Нельзя разглашать немаршрутизируемый IP –адрес, как 127.0.0.1 или 192.168.1.1 в качестве Вашего внешнего адреса." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +#, fuzzy +msgid "Correct the address or disable inbound TCP above." +msgstr "Исправьте адрес или отключите входящий TCP сверх." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +#, fuzzy +msgid "ERR - SymmetricNAT" +msgstr "ОШИБКА - симметрическим NAT" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +#, fuzzy +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "I2P определила, что порт был закрыт симметрическим NAT." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +#, fuzzy +msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network." +msgstr "I2P не работает должным образом из-за отсутствия доступа к порту. Возможно, Вы не сможете принять входящее соединение, которое будет ограничивать доступ к сети." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +#, fuzzy +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "ОШИБКА - UDP-порта уже используется - Настройте i2np.udp.internalPort=xxxx в advanced config и перезагрузите" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +#, fuzzy +msgid "I2P was unable to bind to port 8887 or other configured port." +msgstr "I2P не мог подсоединиться к порту 8887 или к другому конфигурируемому порту." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +#, fuzzy +msgid "Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port." +msgstr "Проверьте что другая программа использует настроенный порт. Если да, то остановить программу или настроить I2P использовать другой порт." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +#, fuzzy +msgid "This may be a transient error, if the other program is no longer using the port." +msgstr "Может произойти сбой, если другая программа больше не использует этот порт." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +#, fuzzy +msgid "However, a restart is always required after this error." +msgstr "Однако после такой ошибки всегда требуется перезагрузка." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +#, fuzzy +msgid "ERR - UDP Disabled and Inbound TCP host/port not set" +msgstr "ОШИБКА - UDP отключен и входящий TCP / порт не указан" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +#, fuzzy +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "Вы не сконфигурировали входящий TCP с именем хоста и выше указанным портом, но все равно Вы отключили UDP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +#, fuzzy +msgid "Therefore your router cannot accept inbound connections." +msgstr "Следовательно Ваш маршрутизатор не может принять входящее соединение." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:647 +#, fuzzy +msgid "Please configure a TCP host and port above or enable UDP." +msgstr "Пожалуйста, сконфигурируйте хост TCP и выше указанный порт или же включите UDP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +#, fuzzy +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "ОШИБКА - Менеджер Клиентов I2CP Ошибка - проверьте текстовые файлы (logs)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:651 +#, fuzzy +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "Обычно это обусловлено конфликтом порта 7654 (ошибка). Проверьте текстовые файлы (logs), чтоб удостовериться." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 +#, fuzzy +msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +msgstr "У Вас есть другое выполнение запроса через протокол I2P? Остановите эту программу и перезагрузите I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +#, fuzzy +msgid "config advanced" +msgstr "расширенные настройки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 +#, fuzzy +msgid "I2P Advanced Configuration" +msgstr "I2P Расширенные Настройки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 +#, fuzzy +msgid "Advanced I2P Configuration" +msgstr "Расширенные I2P Настройки" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:321 +#, fuzzy +msgid "Apply" +msgstr "Применить" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +#, fuzzy +msgid "Some changes may require a restart to take effect." +msgstr "Может потребоваться перезагрузка системы для того, чтобы некоторые изменения вступили в силу." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +#, fuzzy +msgid "config clients" +msgstr "настройка клиента" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:241 +#, fuzzy +msgid "I2P Client Configuration" +msgstr "I2P Настройка Клиента" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:306 +#, fuzzy +msgid "Client Configuration" +msgstr "Настройка Клиента" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:308 +#, fuzzy +msgid "The Java clients listed below are started by the router and run in the same JVM." +msgstr "Java-клиенты, приведенные ниже, запускаются маршрутизатором и действуют в одной и той же Java-машине." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#, fuzzy +msgid "To change other client options, edit the file" +msgstr "Для того, чтобы изменить другие пользовательские настройки, выполните редактирование файла" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:319 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331 +#, fuzzy +msgid "All changes require restart to take effect." +msgstr "Для того, чтобы данные изменения вступили в силу, выполните перезагрузку I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:323 +#, fuzzy +msgid "WebApp Configuration" +msgstr "WebApp Конфигурация" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#, fuzzy +msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)." +msgstr "Веб-приложения Java, перечисленные ниже, запускаются при помощи консольного клиента с веб-интерфейсом и действуют в той же Java-машине, что и маршрутизатор. Обычно это веб-приложения, доступные через консоль маршрутизатора. Они могут быть полными (например, i2psnark), обеспечивающими взаимодействие с внешними клиентами или приложениями, которые должны быть запущены отдельно (например, susidns, i2ptunnel), или же такими, которые не имеют интерфейса вообще (например, addressbook)." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#, fuzzy +msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method." +msgstr "Веб-приложение также можно блокировать посредством удаления файла с расширением .war из папки webappsс веб-приложениями; тем не менее, файл с расширением .war и веб-приложение появятся, когда вы обновите маршрутизатор до более новой версии, так что блокировка веб-приложения является предпочтительной." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +#, fuzzy +msgid "config keyring" +msgstr "конфигурация для устройств хранения данных" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 +#, fuzzy +msgid "I2P Keyring Configuration" +msgstr "Конфигурация I2P Для Устройств Хранения Данных" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 +#, fuzzy +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "Устройство хранения данных маршрутизатора используется для расшифровки зашифрованных наборов адресов." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297 +#, fuzzy +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "На устройстве могут содержаться ключи для локальных или удаленных адресов зашифрованных назначений." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307 +#, fuzzy +msgid "Manual Keyring Addition" +msgstr "Ручное Дополнение К Накопителю Информации" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 +#, fuzzy +msgid "Enter keys for encrypted remote destinations here." +msgstr "Введите ключи для зашифрованных удаленных адресов." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 +#, fuzzy +msgid "Keys for local destinations must be entered on the" +msgstr "Ключи для локальных адресов назначения необходимо ввести на" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 +#, fuzzy +msgid "I2PTunnel page" +msgstr "странице I2PTunnel" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 +#, fuzzy +msgid "Dest. name, hash, or full key" +msgstr "Имя адреса назначения, хэш или полный ключ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +#, fuzzy +msgid "Encryption Key" +msgstr "Криптографический ключ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +#, fuzzy +msgid "config logging" +msgstr "настройка журнала" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 +#, fuzzy +msgid "I2P Logging Configuration" +msgstr "I2P Настройке Журнала" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 +#, fuzzy +msgid "Configure I2P Logging Options" +msgstr "Опции Записи Конфигурации I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +#, fuzzy +msgid "Logging filename" +msgstr "Имя файла записи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 +#, fuzzy +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "(символ «@» будет заменен в процессе сканирования записи)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +#, fuzzy +msgid "Log record format" +msgstr "Формат записи системного журнала" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311 +#, fuzzy +msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "(используйте следующие обозначения: «d» = дата, «c» = класс, «t» = тред, «p» = приоритет, «m» = сообщение)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313 +#, fuzzy +msgid "Log date format" +msgstr "Формат даты записи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317 +#, fuzzy +msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" +msgstr "(«MM» = месяц, «dd» = день, «HH» = часы, «mm» = минуты, «ss» = секунды, «SSS» = миллисекунды)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319 +#, fuzzy +msgid "Max log file size" +msgstr "Максимальный размер файла системного журнала" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 +#, fuzzy +msgid "Default log level" +msgstr "Уровень записи по умолчанию" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 +#, fuzzy +msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +msgstr "(настройки DEBUG и INFO не являются рекомендованными по умолчанию, так как они значительно замедляют работу маршрутизатора)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 +#, fuzzy +msgid "Log level overrides" +msgstr "Редактирование уровня записи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +#, fuzzy +msgid "config peers" +msgstr "конфигурация пиров" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 +#, fuzzy +msgid "I2P Peer Configuration" +msgstr "Конфигурация Пиров I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 +#, fuzzy +msgid "Manual Peer Controls" +msgstr "Ручное Управление Пирами" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 +#, fuzzy +msgid "Router Hash" +msgstr "Хэш Маршрутизатора" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 +#, fuzzy +msgid "Manually Ban / Unban a Peer" +msgstr "ручную запретить / разрешить пиры" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312 +#, fuzzy +msgid "Banning will prevent the participation of this peer in tunnels you create." +msgstr "Запрет предотвратит участие данного пира в созданных вами туннелях." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:324 +#, fuzzy +msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the" +msgstr "Дополнительные потоки могут быть как положительными и отрицательными, оказывающими влияние на вовлечение узлов сети в быстрых узлах и узлах большой мощност. Быстрые узлы используются для клиентских туннелей, а узлы большой мощности используются в некоторых типах поисковых туннелей. Текущие потоки отображены на" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 +#, fuzzy +msgid "profiles page" +msgstr "странице профилей" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 +#, fuzzy +msgid "Adjust peer bonuses" +msgstr "Настройка дополнительных потоков пиров" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:253 +#, fuzzy +msgid "Banned Peers" +msgstr "Запрещенные Пиры" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +#, fuzzy +msgid "Banned IPs" +msgstr "Запрещенные IP адресы" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +#, fuzzy +msgid "config service" +msgstr "конфигурация сервиса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 +#, fuzzy +msgid "I2P Service Configuration" +msgstr "Конфигурация Сервиса I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 +#, fuzzy +msgid "Shutdown the router" +msgstr "Выключить маршрутизатор" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286 +#, fuzzy +msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." +msgstr "Постепенное выключение позволяет маршрутизатору выполнить запланированные задания до его выключения, но это займет несколько минут." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288 +#, fuzzy +msgid "If you need to kill the router immediately, that option is available as well." +msgstr "Постепенное выключение позволяет маршрутизатору выполнить запланированные задания до его выключения, но это займет несколько минут." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298 +#, fuzzy +msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgstr "Если Вы хотите, чтоб маршрутизатор перезагрузился после выключения, Вы можете выбрать одно из действий." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300 +#, fuzzy +msgid "This is useful in some situations" +msgstr "В некоторых случаях это полезно" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302 +#, fuzzy +msgid "for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on." +msgstr "к примеру, если Вы поменяли некоторые настройки, которые приложения-клиенты читают только при запуске, такие как пароль консоля маршрутизатора или прослушивание интерфейса." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 +#, fuzzy +msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgstr "Постепенное выключение будет длиться несколько минут (но твои пиры будут благодарны за твое терпение), а жесткая перезагрузка делает это незамедлительно." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:306 +#, fuzzy +msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgstr "После разбора настройки маршрутизатора, пройдет еще 1 минута до загрузки." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316 +#, fuzzy +msgid "Systray integration" +msgstr "Система лоток интеграции" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +#, fuzzy +msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status" +msgstr "На платформе Windows, есть небольшое приложение, чтобы сидеть в системном трее, что позволяет Вам просматривать статус маршрутизатора" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320 +#, fuzzy +msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." +msgstr "(позднее, I2P приложений клиент сможет интегрировать свои функции в системном трее тоже)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +#, fuzzy +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "Если вы на Windows, вы можете включить или отключить этот значок здесь." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +#, fuzzy +msgid "Run on startup" +msgstr "Запуск при старте" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +#, fuzzy +msgid "You can control whether I2P is run on startup or not by selecting one of the following options" +msgstr "Вы можете управлять ли I2P запускается при запуске или не выбрать один из следующих вариантов" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332 +#, fuzzy +msgid "I2P will install (or remove) a service accordingly." +msgstr "I2P будет установить (или удалить) услуга, соответственно." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 +#, fuzzy +msgid "If you prefer the command line, you can also run the " +msgstr "Если вы предпочитаете командную строку, вы можете также запустить " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:344 +#, fuzzy +msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgstr "Если вы используете I2P как сервис на данный момент, удалив будет закрыта маршрутизатор немедленно." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 +#, fuzzy +msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgstr "Вы можете рассмотреть вопрос о закрытии грациозно, как указано выше, затем запустить uninstall_i2p_service_winnt.bat." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 +#, fuzzy +msgid "Debugging" +msgstr "Отладка программы" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +#, fuzzy +msgid "Launch browser on router startup?" +msgstr "Загружать браузер при запуске маршрутизатора?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 +#, fuzzy +msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at" +msgstr "Основной интерфейс конфигурации I2P таки веб-консоли, поэтому для вашего удобства I2P может открыть веб-браузер при запуске указывая на" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +#, fuzzy +msgid "config stats" +msgstr "конфигурации статистики" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 +#, fuzzy +msgid "I2P Stats Configuration" +msgstr "Конфигурация Статистики I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 +#, fuzzy +msgid "Configure I2P Stat Collection" +msgstr "Конфигурация Сбора Статистики I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +#, fuzzy +msgid "Enable full stats?" +msgstr "Активировать полную статистику?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 +#, fuzzy +msgid "change requires restart to take effect" +msgstr "для того, чтобы изменения вступили в силу, необходима перезагрузка системы" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +#, fuzzy +msgid "Stat file" +msgstr "Файл статистики" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 +#, fuzzy +msgid "Filter" +msgstr "Фильтр" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:326 +#, fuzzy +msgid "toggle all" +msgstr "переключить все" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +#, fuzzy +msgid "Log" +msgstr "Запись" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +#, fuzzy +msgid "Graph" +msgstr "Диаграмма" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 +#, fuzzy +msgid "Advanced filter" +msgstr "Дополнительные фильтры" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +#, fuzzy +msgid "config tunnels" +msgstr "конфигурация туннеля" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241 +#, fuzzy +msgid "I2P Tunnel Configuration" +msgstr "Конфигурация Туннеля I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +#, fuzzy +msgid "The default settings work for most people." +msgstr "Стандартные настройки действуют в большинстве случаев." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 +#, fuzzy +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "Необходимо сделать выбор между анонимностью и производительностью." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312 +#, fuzzy +msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability." +msgstr "Туннели, длина которых составляет более 3 хопов (например, 2 хопа + 0-2 хопа, 3 хопа + 0-1 хоп, 3 хопа + 0-2 хопа), или большое количество + резервное количество, могут значительно уменьшить производительность или надежность." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315 +#, fuzzy +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "Это также может привести к перегрузке ЦП и/или ухудшению пропускной способности входящего канала." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 +#, fuzzy +msgid "Change these settings with care, and adjust them if you have problems." +msgstr "Будьте внимательны при изменении данных настроек, урегулируйте их в том случае, если возникнут какие-либо проблемы." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332 +#, fuzzy +msgid "Exploratory tunnel setting changes are stored in the router.config file." +msgstr "Разведочный туннель изменений параметров хранятся в файле router.config." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335 +#, fuzzy +msgid "Client tunnel changes are temporary and are not saved." +msgstr "Клиент туннель изменения являются временными и не сохраняются." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +#, fuzzy +msgid "To make permanent client tunnel changes see the" +msgstr "Для постоянных клиентов изменения туннеля см." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +#, fuzzy +msgid "i2ptunnel page" +msgstr "i2ptunnel страницу" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +#, fuzzy +msgid "config UI" +msgstr "конфигурации интерфейса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 +#, fuzzy +msgid "I2P UI Configuration" +msgstr "I2P Настройка Пользовательского Интерфейса" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 +#, fuzzy +msgid "Router Console Theme" +msgstr "Тема Консоля Маршрутизатора" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 +#, fuzzy +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "Выбор тем отключена для Internet Explorer, извините." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311 +#, fuzzy +msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes." +msgstr "Если вы не используете IE, то, скорее всего, ваш браузер притворяется IE, пожалуйста, настроить Ваш браузер (или прокси-сервера), чтобы использовать различные User Agent String, если вы хотите получить доступ к консоли темам." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 +#, fuzzy +msgid "Router Console Language" +msgstr "Язык Маршрутизатора Консоля" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319 +#, fuzzy +msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." +msgstr "Пожалуйста, помогите маршрутизатор консоли проект по переводу! Свяжете с разработчиками на IRC # I2P помочь." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +#, fuzzy +msgid "config update" +msgstr "обновленная конфигурация" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 +#, fuzzy +msgid "I2P Update Configuration" +msgstr "Обновленная Конфигурация I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:300 +#, fuzzy +msgid "Check for I2P and news updates" +msgstr "Проверьте данные I2P и обновление новостей" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 +#, fuzzy +msgid "News & I2P Updates" +msgstr "Новости и Обновление I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:306 +#, fuzzy +msgid "Update In Progress" +msgstr "Выполняется обновление" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:314 +#, fuzzy +msgid "News URL" +msgstr "Новости URL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:318 +#, fuzzy +msgid "Refresh frequency" +msgstr "Частота обновления" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:322 +#, fuzzy +msgid "Update policy" +msgstr "Обновление конфигурации" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 +#, fuzzy +msgid "Update through the eepProxy?" +msgstr "Обновление через eep-Прокси?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 +#, fuzzy +msgid "eepProxy host" +msgstr "eep-Прокси хост" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +#, fuzzy +msgid "eepProxy port" +msgstr "eep-Прокси порт" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 +#, fuzzy +msgid "Update URLs" +msgstr "Обновления URL-адресы" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 +#, fuzzy +msgid "Trusted keys" +msgstr "Доверенные криптографические ключи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 +#, fuzzy +msgid "Update with unsigned development builds?" +msgstr "Обновить беззнаковой тестовой сборкой?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 +#, fuzzy +msgid "Unsigned Build URL" +msgstr "Беззнаковая тестовая сборка URL" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 +#, fuzzy +msgid "Save" +msgstr "Сохранить" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +#, fuzzy +msgid "Page Not Found" +msgstr "Страница Не Найдена" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243 +#, fuzzy +msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource." +msgstr "Извините! Вы, как представляется, с просьбой о несуществующих Маршрутизатор консоли страницы или ресурса." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245 +#, fuzzy +msgid "Error 404" +msgstr "Ошибка 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 +#, fuzzy +msgid "not found" +msgstr "не найдено" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +#, fuzzy +msgid "graphs" +msgstr "диаграммы" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 +#, fuzzy +msgid "I2P Performance Graphs" +msgstr "I2P Диаграммы Производительности" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +#, fuzzy +msgid "home" +msgstr "дома" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +#, fuzzy +msgid "job queue" +msgstr "очереди заданий" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 +#, fuzzy +msgid "I2P Router Job Queue" +msgstr "Маршрутизатор I2P Очередь Заданий" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +#, fuzzy +msgid "logs" +msgstr "логи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 +#, fuzzy +msgid "I2P Router Logs" +msgstr "I2P Маршрутизатор Логи" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 +#, fuzzy +msgid "I2P Version & Running Environment" +msgstr "I2P Версии & Действуюшая Окружающей Среды" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 +#, fuzzy +msgid "Please include this information in bug reports" +msgstr "Пожалуйста, включите эту информацию в докладах ошибка" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +#, fuzzy +msgid "network database summary" +msgstr "база данных резюме" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 +#, fuzzy +msgid "I2P Network Database Summary" +msgstr "I2P База Данных Резюме" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +#, fuzzy +msgid "WebApp Not Found" +msgstr "Страница Не Найдена" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 +#, fuzzy +msgid "Web Application Not Running" +msgstr "Применение туннелей" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 +#, fuzzy +msgid "The requested web application is not running." +msgstr "Предложила веб-приложений не запущено." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 +#, fuzzy +msgid "Please visit the config clients page to start it." +msgstr "Пожалуйста, посетите страницу конфигурации клиента для его запуска." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +#, fuzzy +msgid "peer connections" +msgstr "связи пиров" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 +#, fuzzy +msgid "I2P Network Peers" +msgstr "I2P Сеть Пиры" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +#, fuzzy +msgid "peer profiles" +msgstr "профили пиров" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 +#, fuzzy +msgid "I2P Network Peer Profiles" +msgstr "Профили Пиров Сети I2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +#, fuzzy +msgid "statistics" +msgstr "статистика" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242 +#, fuzzy +msgid "I2P Router Statistics" +msgstr "I2P Маршрутизатор Статистика" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 +#, fuzzy, java-format +msgid "Disable {0}s Refresh" +msgstr "Откл. {0}с. Обновление" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +#, fuzzy +msgid "tunnel summary" +msgstr "туннель резюме" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 +#, fuzzy +msgid "I2P Tunnel Summary" +msgstr "I2P Тоннеля Резюме" + +#, fuzzy +#~ msgid "Depth" +#~ msgstr "Глубина" + From aca815c4aa9796e741366aadc5e7651ca1eafc33 Mon Sep 17 00:00:00 2001 From: walking Date: Sun, 13 Dec 2009 06:38:39 +0000 Subject: [PATCH 07/95] snark rough translation (i am not a bt guy, so need review and refine) --- apps/i2psnark/locale/messages_zh.po | 651 ++++++++++++++++++++++++++++ 1 file changed, 651 insertions(+) create mode 100644 apps/i2psnark/locale/messages_zh.po diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po new file mode 100644 index 000000000..cafed8fed --- /dev/null +++ b/apps/i2psnark/locale/messages_zh.po @@ -0,0 +1,651 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2psnark package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2psnark\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-12-10 17:41+0000\n" +"PO-Revision-Date: 2009-12-13 14:30+0800\n" +"Last-Translator: walking \n" +"Language-Team: foo \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Chinese\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:84 +#, java-format +msgid "Adding torrents in {0} minutes" +msgstr "将于{0}分钟内完成添加" + +#: ../java/src/org/klomp/snark/SnarkManager.java:241 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:243 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:255 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "上传带宽限制改为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:257 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "最小上传带宽限制为 {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:301 +msgid "Cannot change the I2CP settings while torrents are active" +msgstr "正在下载/上传,无法更改I2CP设置" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +msgid "Disconnecting old I2CP destination" +msgstr "正在断开旧的I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:311 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "I2CP设置改为{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:315 +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "无法通过新设置连接,恢复I2CP的旧设置" + +#: ../java/src/org/klomp/snark/SnarkManager.java:319 +msgid "Unable to reconnect with the old settings!" +msgstr "旧设置也无法连接!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +msgid "Reconnected on the new I2CP destination" +msgstr "重新连接新I2CP目标" + +#: ../java/src/org/klomp/snark/SnarkManager.java:332 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "\"{0}\"的I2CP监听端口已启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:343 +msgid "Enabled autostart" +msgstr "启用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:345 +msgid "Disabled autostart" +msgstr "禁用自动启动" + +#: ../java/src/org/klomp/snark/SnarkManager.java:351 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "启用OpenTracker-种子重新连接后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:353 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "禁用OpenTracker-种子重新连接后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:360 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "OpenTracker列表改变-种子重新连接后生效" + +#: ../java/src/org/klomp/snark/SnarkManager.java:367 +msgid "Configuration unchanged." +msgstr "设置未改变" + +#: ../java/src/org/klomp/snark/SnarkManager.java:377 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "无法保存设置到{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:395 +msgid "Connecting to I2P" +msgstr "正在连接到I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:398 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "连接I2P时发生错误 - 请检查I2CP设置!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:407 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "错误:无法添加种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:446 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "无效种子 \"{0}\" " + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "种子已添加并启动:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:463 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "种子已添加:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:559 +#, java-format +msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" +msgstr "\"{0}\" 中含有非I2P Tracker,从Tracker列表中删除之。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:562 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "\"{0}\" ({1}) 含有太多文件,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:564 +#, java-format +msgid "Torrent file \"{0}\" cannot end in '.torrent', deleting it!" +msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:566 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "\"{0}\" 中没有数据片,删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:568 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。" + +#: ../java/src/org/klomp/snark/SnarkManager.java:571 +#, java-format +msgid "Limit is {0}B" +msgstr "限额为 {0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:579 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:595 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "错误:无法删除种子{0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:616 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "种子已停止:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:631 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "种子已删除:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:664 +#, java-format +msgid "Download finished: \"{0}\"" +msgstr "下载已完成:\"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:664 +#, java-format +msgid "size: {0}B" +msgstr "大小:{0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:692 +msgid "Unable to connect to I2P!" +msgstr "无法连接至I2P!" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "I2PSnark - 匿名BitTorrent客户端" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:95 +msgid "Refresh page" +msgstr "刷新页面" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:97 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655 +msgid "I2PSnark" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:99 +msgid "Forum" +msgstr "论坛" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:125 +msgid "Status" +msgstr "状态" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:132 +msgid "Hide Peers" +msgstr "隐藏用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:134 +msgid "Show Peers" +msgstr "显示用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:138 +msgid "Torrent" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:140 +msgid "ETA" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:142 +msgid "Downloaded" +msgstr "已下载" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:144 +msgid "Uploaded" +msgstr "已上传" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:146 +msgid "Down Rate" +msgstr "下载速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:148 +msgid "Up Rate" +msgstr "上传速度" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:155 +msgid "Stop all torrents and the I2P tunnel" +msgstr "停止全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:157 +msgid "Stop All" +msgstr "停止全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:162 +msgid "Start all torrents and the I2P tunnel" +msgstr "启动全部种子及I2P隧道" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:164 +msgid "Start All" +msgstr "启动全部" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:181 +msgid "No torrents loaded." +msgstr "未载入任何种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:186 +msgid "Totals" +msgstr "总计" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:188 +#, java-format +msgid "{0} torrents" +msgstr "{0} 个种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:191 +#, java-format +msgid "{0} connected peers" +msgstr "{0} 已连接用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748 +msgid "Add torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226 +#, java-format +msgid "Torrent file {0} does not exist" +msgstr "种子文件{0}不存在" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 +#, java-format +msgid "Torrent already running: {0}" +msgstr "种子已启动:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "种子排队中:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:242 +#, java-format +msgid "Copying torrent to {0}" +msgstr "正在复制种子到{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:245 +#, java-format +msgid "Unable to copy the torrent to {0}" +msgstr "无法复制种子文件到{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:245 +#, java-format +msgid "from {0}" +msgstr "来源{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:253 +#, java-format +msgid "Fetching {0}" +msgstr "正在获取{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:257 +msgid "Invalid URL - must start with http://" +msgstr "无效链接 - 必须以http:// 开头" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 +msgid "Stop" +msgstr "停止" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:623 +msgid "Start" +msgstr "启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:287 +#, java-format +msgid "Starting up torrent {0}" +msgstr "正在启动种子{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:325 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "种子文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341 +#, java-format +msgid "Data file deleted: {0}" +msgstr "数据文件已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "无法删除数据文件:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "数据文件夹已删除:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:359 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 +msgid "Save configuration" +msgstr "保存设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 +msgid "Create torrent" +msgstr "创建种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383 +msgid "Error creating torrent - you must select a tracker" +msgstr "创建种子时发生错误 - 您必须选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "种子创建成功\"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 +#, java-format +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "创建种子时发生错误 \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "无法为不存在的数据文件创建种子:{0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "创建种子时发生错误 - 必须指定文件或文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:412 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "正在停用所有种子并关闭I2P隧道。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:421 +msgid "I2P tunnel closed." +msgstr "I2P隧道已关闭" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:424 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "正在打开I2P隧道并启动所有种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:501 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +msgid "Unknown" +msgstr "未知" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:504 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512 +msgid "TrackerErr" +msgstr "Tracker错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:506 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:518 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:858 +msgid "peers" +msgstr "用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:516 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520 +msgid "Seeding" +msgstr "正做种" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:522 +msgid "Complete" +msgstr "完成" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529 +msgid "OK" +msgstr "确定" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535 +msgid "Stalled" +msgstr "等待" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537 +msgid "No Peers" +msgstr "没有用户" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +msgid "Stopped" +msgstr "已停用" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552 +msgid "View files" +msgstr "浏览文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:554 +msgid "Open file" +msgstr "打开文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +msgid "Tracker" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:579 +msgid "Details" +msgstr "详情" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:613 +msgid "Stop the torrent" +msgstr "停止种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:621 +msgid "Start the torrent" +msgstr "启动种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "从活动列表中删除种子,删除.torrent文件。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630 +msgid "Remove" +msgstr "删除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "删除.torrent文件及相应的数据文件" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +msgid "Delete" +msgstr "删除" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +msgid "Seed" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:697 +msgid "Uninteresting" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +msgid "Choked" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:713 +msgid "Uninterested" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +msgid "Choking" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 +msgid "Add Torrent" +msgstr "添加种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +msgid "From URL" +msgstr "从URL" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#, java-format +msgid "Alternately, you can copy .torrent files to {0} ." +msgstr "否则,您可以将.torrent文件复制到{0}." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +msgid "Removing a .torrent file will cause the torrent to stop." +msgstr "删除.torrent 文件将导致该种子停止连接。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 +msgid "Create Torrent" +msgstr "创建种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +msgid "Data to seed" +msgstr "做种数据" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 +msgid "File to seed (must be within the specified path)" +msgstr "做种文件(必须处于指定的路径中)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "Select a tracker" +msgstr "选择一个Tracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 +msgid "or" +msgstr "后" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796 +msgid "Custom tracker URL" +msgstr "自定义TrackerURL" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816 +msgid "Configuration" +msgstr "设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819 +msgid "Data directory" +msgstr "数据文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822 +msgid "Directory to store torrents and data" +msgstr "种子及被做种文件的保存位置。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824 +msgid "Edit i2psnark.config and restart to change" +msgstr "编辑 i2psnark.config 并重启Snark后生效" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828 +msgid "Auto start" +msgstr "自动启动" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832 +msgid "If checked, automatically start torrents that are added" +msgstr "选中后Snark将自动启动已添加的所有种子。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855 +msgid "Total uploader limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862 +msgid "Up bandwidth limit" +msgstr "上传带宽限制" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:865 +msgid "Half available bandwidth< recommended." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:867 +msgid "Configure" +msgstr "设置" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:871 +msgid "Use open trackers also" +msgstr "同时使用OpenTracker" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:875 +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879 +msgid "Open tracker announce URLs" +msgstr "Open Tracker发布链接" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:890 +msgid "I2CP host" +msgstr "I2CP主机" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895 +msgid "I2CP port" +msgstr "I2CP端口" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:908 +msgid "I2CP options" +msgstr "I2CP选项" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "从{0}获取种子成功" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "{0}的种子中有错误" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "从{0}获得种子失败" + From 21e09cb0a5c39048d9803e815cd6f4a821a397b9 Mon Sep 17 00:00:00 2001 From: walking Date: Sun, 13 Dec 2009 07:35:30 +0000 Subject: [PATCH 08/95] no more 8887 --- installer/resources/readme/readme_zh.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/resources/readme/readme_zh.html b/installer/resources/readme/readme_zh.html index b6f8e0261..876bbe71d 100644 --- a/installer/resources/readme/readme_zh.html +++ b/installer/resources/readme/readme_zh.html @@ -35,4 +35,4 @@

疑难解答

-

保持耐心 - I2P 第一次启动时需要搜索节点,可能比较缓慢。如果30分钟后,您的活动节点计数仍在 10 个节点以下, 请在防火墙中打开 8887 端口改善连接性能。如果您根本无法打开任何EEPSITE(甚至 www.i2p2.i2p),检查您的浏览器代理设置是否为本地的 127.0.0.1:4444。你也可以到 I2P 网站 查找信息, 在 I2P 论坛 中发帖, 来 irc.freenode.net , irc.postman.i2p 或 irc.freshcoffee.i2p 上的 #i2p 或 #i2p-chat 这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。


+

保持耐心 - I2P 第一次启动时需要搜索节点,可能比较缓慢。如果30分钟后,您的活动节点计数仍在 10 个节点以下, 请在防火墙中打开 I2P端口(见 I2P内部设置>网络 下的IP与传输设置一节)改善连接性能。如果您根本无法打开任何EEPSITE(甚至 www.i2p2.i2p),检查您的浏览器代理设置是否为本地的 127.0.0.1:4444。你也可以到 I2P 网站 查找信息, 在 I2P 论坛 中发帖, 来 irc.freenode.net , irc.postman.i2p 或 irc.freshcoffee.i2p 上的 #i2p 或 #i2p-chat 这两个 IRC 频道上询问。 (这些服务器上的这两个频道是相通的)。


From e87ff25ef69dab4460fa2e9c2c9deac3a8ca56cb Mon Sep 17 00:00:00 2001 From: dev Date: Sun, 13 Dec 2009 09:24:25 +0000 Subject: [PATCH 09/95] fix NPE --- .../java/src/net/i2p/router/web/TunnelRenderer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java index 74a585d48..71aca046c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java @@ -306,6 +306,10 @@ public class TunnelRenderer { String lc = this.comm.getCountry(l); String rc = this.comm.getCountry(r); + // make them non-null + lc = (lc == null) ? "zzzz" : lc; + rc = (rc == null) ? "zzzz" : rc; + // let String handle the rest return lc.compareTo(rc); } From 7feed50af40c2817971ddb470b9c8db3bbd4245c Mon Sep 17 00:00:00 2001 From: dev Date: Sun, 13 Dec 2009 09:26:10 +0000 Subject: [PATCH 10/95] -5 --- history.txt | 1 + router/java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 907e71655..d324dcded 100644 --- a/history.txt +++ b/history.txt @@ -1,6 +1,7 @@ 2009-12-12 zzz * Disable InternalSockets until it's fixed * Sort peers on tunnels.jsp by country + * fix NPE in ^^ 2009-12-11 zzz * Addressbook, susidns: Rework addressbook into a diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index e4d51a2bb..b54d1de4b 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From 3fa9ae0b8206b999f957b626af19efed393acca8 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 13 Dec 2009 15:47:51 +0000 Subject: [PATCH 11/95] * Find ResourceBundles in wars * Fix restart from config.jsp if no wrapper * i2psnark: Elaborate popups --- apps/i2psnark/java/bundle-messages.sh | 2 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 10 +++--- apps/routerconsole/java/bundle-messages.sh | 2 +- .../net/i2p/router/web/ConfigNetHandler.java | 36 ++++++++++--------- core/java/src/net/i2p/util/Translate.java | 5 ++- history.txt | 11 ++++-- .../src/net/i2p/router/RouterVersion.java | 2 +- 7 files changed, 38 insertions(+), 30 deletions(-) diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh index ad8c0ab84..01aa5b1c7 100755 --- a/apps/i2psnark/java/bundle-messages.sh +++ b/apps/i2psnark/java/bundle-messages.sh @@ -73,7 +73,7 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java -r $CLASS -l $LG -d build/obj $i + msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i if [ $? -ne 0 ] then echo 'Warning - msgfmt failed, not updating translations' diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 305a9eb06..c3341229f 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -518,7 +518,7 @@ public class I2PSnarkServlet extends HttpServlet { curPeers + '/' + knownPeers + " " + _("peers") + ")"; else if (isRunning) - statusString = _("Seeding") + " (" + curPeers + "/" + knownPeers + ' ' + ("peers") + ')'; + statusString = _("Seeding") + " (" + curPeers + "/" + knownPeers + ' ' + _("peers") + ')'; else statusString = _("Complete"); } else { @@ -695,9 +695,9 @@ public class I2PSnarkServlet extends HttpServlet { } else { out.write(""); out.write(formatSize(peer.getDownloadRate()) + "ps"); } @@ -711,9 +711,9 @@ public class I2PSnarkServlet extends HttpServlet { } else { out.write(""); out.write(formatSize(peer.getUploadRate()) + "ps"); } diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index 33db27572..ddc6785a0 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -104,7 +104,7 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java -r $CLASS -l $LG -d build/obj $i + msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i if [ $? -ne 0 ] then echo 'Warning - msgfmt failed, not updating translations' diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java index 373a272f0..90f02596a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java @@ -256,24 +256,26 @@ public class ConfigNetHandler extends FormHandler { if (switchRequired) { hiddenSwitch(); } else if (restartRequired) { - // Wow this dumps all conns immediately and really isn't nice - //addFormNotice("Performing a soft restart"); - //_context.router().restart(); - //addFormNotice("Soft restart complete"); + if (System.getProperty("wrapper.version") == null) { + // Wow this dumps all conns immediately and really isn't nice + addFormNotice("Performing a soft restart"); + _context.router().restart(); + addFormNotice("Soft restart complete"); - // Most of the time we aren't changing addresses, just enabling or disabling - // things, so let's try just a new routerInfo and see how that works. - // Maybe we should restart if we change addresses though? - // No, this doesn't work well, really need to call SSU Transport externalAddressReceived(), - // but that's hard to get to, and doesn't handle port changes, etc. - // So don't do this... - //_context.router().rebuildRouterInfo(); - //addFormNotice("Router Info rebuilt"); - - // There's a few changes that don't really require restart (e.g. enabling inbound TCP) - // But it would be hard to get right, so just do a restart. - addFormError(_("Gracefully restarting I2P to change published router address")); - _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART); + // Most of the time we aren't changing addresses, just enabling or disabling + // things, so let's try just a new routerInfo and see how that works. + // Maybe we should restart if we change addresses though? + // No, this doesn't work well, really need to call SSU Transport externalAddressReceived(), + // but that's hard to get to, and doesn't handle port changes, etc. + // So don't do this... + //_context.router().rebuildRouterInfo(); + //addFormNotice("Router Info rebuilt"); + } else { + // There's a few changes that don't really require restart (e.g. enabling inbound TCP) + // But it would be hard to get right, so just do a restart. + addFormError(_("Gracefully restarting I2P to change published router address")); + _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART); + } } } diff --git a/core/java/src/net/i2p/util/Translate.java b/core/java/src/net/i2p/util/Translate.java index 75803968a..324b3a241 100644 --- a/core/java/src/net/i2p/util/Translate.java +++ b/core/java/src/net/i2p/util/Translate.java @@ -112,9 +112,8 @@ public abstract class Translate { ResourceBundle rv = _bundles.get(key); if (rv == null && !_missing.contains(key)) { try { - // Would it be faster to specify a class loader? - // No matter we only do this once per lang. - rv = ResourceBundle.getBundle(bun, new Locale(lang)); + // We must specify the class loader so that a webapp can find the bundle in the .war + rv = ResourceBundle.getBundle(bun, new Locale(lang), Thread.currentThread().getContextClassLoader()); if (rv != null) _bundles.put(key, rv); } catch (MissingResourceException e) { diff --git a/history.txt b/history.txt index d324dcded..9d16e53d3 100644 --- a/history.txt +++ b/history.txt @@ -1,8 +1,15 @@ -2009-12-12 zzz - * Disable InternalSockets until it's fixed +2009-12-13 zzz + * Find ResourceBundles in wars + * Fix restart from config.jsp if no wrapper + * i2psnark: Elaborate popups + +2009-12-12 welterde * Sort peers on tunnels.jsp by country * fix NPE in ^^ +2009-12-12 zzz + * Disable InternalSockets until it's fixed + 2009-12-11 zzz * Addressbook, susidns: Rework addressbook into a HttpServlet, so susidns can kick it when the subscription diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index b54d1de4b..5a4225cae 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 5; + public final static long BUILD = 6; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From a3d79aaa4efe1b43748cf44f8513bd0e1cde5449 Mon Sep 17 00:00:00 2001 From: forget Date: Mon, 14 Dec 2009 20:15:16 +0000 Subject: [PATCH 12/95] Russian translation: I2PSnark (140/140), SusiDNS (1/1), I2PTunnel (3/3) --- apps/i2psnark/locale/messages_ru.po | 648 +++++++++++++++++++++++++++ apps/i2ptunnel/locale/messages_ru.po | 31 ++ apps/susidns/locale/messages_ru.po | 23 + 3 files changed, 702 insertions(+) create mode 100644 apps/i2psnark/locale/messages_ru.po create mode 100644 apps/i2ptunnel/locale/messages_ru.po create mode 100644 apps/susidns/locale/messages_ru.po diff --git a/apps/i2psnark/locale/messages_ru.po b/apps/i2psnark/locale/messages_ru.po new file mode 100644 index 000000000..5412300a6 --- /dev/null +++ b/apps/i2psnark/locale/messages_ru.po @@ -0,0 +1,648 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2psnark package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2psnark\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-12-14 03:19+0000\n" +"PO-Revision-Date: 2009-12-14 19:58+0000\n" +"Last-Translator: 4get \n" +"Language-Team: foo \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" + +#: ../java/src/org/klomp/snark/SnarkManager.java:84 +#, java-format +msgid "Adding torrents in {0} minutes" +msgstr "Торренты будут подгружены через {0} минут(ы)" + +#: ../java/src/org/klomp/snark/SnarkManager.java:241 +#, java-format +msgid "Total uploaders limit changed to {0}" +msgstr "Новое значение лимита количества слотов отдачи: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:243 +#, java-format +msgid "Minimum total uploaders limit is {0}" +msgstr "Минимально допустимое значение для количества слотов: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:255 +#, java-format +msgid "Up BW limit changed to {0}KBps" +msgstr "Новое значение лимита скорости отдачи: {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:257 +#, java-format +msgid "Minimum up bandwidth limit is {0}KBps" +msgstr "Минимально допустимое значение для лимита скорости отдачи: {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:301 +msgid "Cannot change the I2CP settings while torrents are active" +msgstr "Невозможно изменить настройки I2CP пока есть активные торренты" + +#: ../java/src/org/klomp/snark/SnarkManager.java:307 +msgid "Disconnecting old I2CP destination" +msgstr "Рассоединяемся по старому адресу I2CP" + +#: ../java/src/org/klomp/snark/SnarkManager.java:311 +#, java-format +msgid "I2CP settings changed to {0}" +msgstr "Новые параметры I2CP: {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:315 +msgid "Unable to connect with the new settings, reverting to the old I2CP settings" +msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам" + +#: ../java/src/org/klomp/snark/SnarkManager.java:319 +msgid "Unable to reconnect with the old settings!" +msgstr "Не удалось пересоединиться с использованием старых настроек I2CP!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:321 +msgid "Reconnected on the new I2CP destination" +msgstr "Пересоединились по новому адресу I2CP" + +#: ../java/src/org/klomp/snark/SnarkManager.java:332 +#, java-format +msgid "I2CP listener restarted for \"{0}\"" +msgstr "I2CP-приёмник перезапущен для \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:343 +msgid "Enabled autostart" +msgstr "Автостарт включен" + +#: ../java/src/org/klomp/snark/SnarkManager.java:345 +msgid "Disabled autostart" +msgstr "Автостарт выключен" + +#: ../java/src/org/klomp/snark/SnarkManager.java:351 +msgid "Enabled open trackers - torrent restart required to take effect." +msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." + +#: ../java/src/org/klomp/snark/SnarkManager.java:353 +msgid "Disabled open trackers - torrent restart required to take effect." +msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." + +#: ../java/src/org/klomp/snark/SnarkManager.java:360 +msgid "Open Tracker list changed - torrent restart required to take effect." +msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." + +#: ../java/src/org/klomp/snark/SnarkManager.java:367 +msgid "Configuration unchanged." +msgstr "Настройки не изменились." + +#: ../java/src/org/klomp/snark/SnarkManager.java:377 +#, java-format +msgid "Unable to save the config to {0}" +msgstr "Не удалось сохранить настройки в {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:395 +msgid "Connecting to I2P" +msgstr "Устанавливается соединение с I2P" + +#: ../java/src/org/klomp/snark/SnarkManager.java:398 +msgid "Error connecting to I2P - check your I2CP settings!" +msgstr "Ошибка соединения с I2P, проверьте настройки I2CP!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:407 +#, java-format +msgid "Error: Could not add the torrent {0}" +msgstr "Ошибка: Не удалось добавить торрент {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:446 +#, java-format +msgid "Torrent in \"{0}\" is invalid" +msgstr "Торрент в \"{0}\" некорректен" + +#: ../java/src/org/klomp/snark/SnarkManager.java:461 +#, java-format +msgid "Torrent added and started: \"{0}\"" +msgstr "Торрент добавлен и запущен: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:463 +#, java-format +msgid "Torrent added: \"{0}\"" +msgstr "Торрент добавлен: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:559 +#, java-format +msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!" +msgstr "Обнаружен не-I2P трекер в торренте \"{0}\", удаляем его из нашего списка трекеров!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:562 +#, java-format +msgid "Too many files in \"{0}\" ({1}), deleting it!" +msgstr "Слишком много файлов в торренте \"{0}\" ({1}), удаляем его!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:564 +#, java-format +msgid "Torrent file \"{0}\" cannot end in '.torrent', deleting it!" +msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на '.torrent', удаляем его!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:566 +#, java-format +msgid "No pieces in \"{0}\", deleting it!" +msgstr "В торренте \"{0}\" не оказалось ни одной части, удаляем его!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:568 +#, java-format +msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!" +msgstr "Слишком много частей в торренте \"{0}\" (наш предел {1}), удаляем его!" + +#: ../java/src/org/klomp/snark/SnarkManager.java:570 +#, java-format +msgid "Pieces are too large in \"{0}\" ({1}B), deleting it." +msgstr "Слишком крупные части в торренте \"{0}\" ({1}B), удаляем его." + +#: ../java/src/org/klomp/snark/SnarkManager.java:571 +#, java-format +msgid "Limit is {0}B" +msgstr "Наш предел {0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:579 +#, java-format +msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\"" +msgstr "Торренты крупнее чем {0}B пока не поддерживается, удаляем \"{1}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:595 +#, java-format +msgid "Error: Could not remove the torrent {0}" +msgstr "Ошибка: Невозможно удалить торрент {0}" + +#: ../java/src/org/klomp/snark/SnarkManager.java:616 +#, java-format +msgid "Torrent stopped: \"{0}\"" +msgstr "Торрент остановлен: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:631 +#, java-format +msgid "Torrent removed: \"{0}\"" +msgstr "Торрент удален: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:664 +#, java-format +msgid "Download finished: \"{0}\"" +msgstr "Завершена загрузка: \"{0}\"" + +#: ../java/src/org/klomp/snark/SnarkManager.java:664 +#, java-format +msgid "size: {0}B" +msgstr "размер: {0}B" + +#: ../java/src/org/klomp/snark/SnarkManager.java:692 +msgid "Unable to connect to I2P!" +msgstr "Не удалось установить соединение с I2P!" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86 +msgid "I2PSnark - Anonymous BitTorrent Client" +msgstr "I2PSnark — Анонимный BitTorrent Клиент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:95 +msgid "Refresh page" +msgstr "Обновить страницу" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:97 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:99 +msgid "Forum" +msgstr "Форум" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:125 +msgid "Status" +msgstr "Статус" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:131 +msgid "Hide Peers" +msgstr "спрятать список пиров" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:134 +msgid "Show Peers" +msgstr "показать список пиров" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:139 +msgid "Torrent" +msgstr "Торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:141 +msgid "ETA" +msgstr "Осталось" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:143 +msgid "Downloaded" +msgstr "Получено" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:145 +msgid "Uploaded" +msgstr "Отдано" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:147 +msgid "Down Rate" +msgstr "Скорость загрузки" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:149 +msgid "Up Rate" +msgstr "Скорость отдачи" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:156 +msgid "Stop all torrents and the I2P tunnel" +msgstr "Остановить все торренты и закрыть соединение с I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:158 +msgid "Stop All" +msgstr "Остановить все" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:163 +msgid "Start all torrents and the I2P tunnel" +msgstr "Запустить все торренты и открыть соединение с I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:165 +msgid "Start All" +msgstr "Запустить все" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:182 +msgid "No torrents loaded." +msgstr "Нет загруженных торрентов." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187 +msgid "Totals" +msgstr "Всего" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:189 +#, java-format +msgid "{0} torrents" +msgstr "{0} торрентов" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:192 +#, java-format +msgid "{0} connected peers" +msgstr "{0} подсоединенных пиров" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227 +#, java-format +msgid "Torrent file {0} does not exist" +msgstr "Торрент {0} не существует" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:986 +#, java-format +msgid "Torrent already running: {0}" +msgstr "Торрент уже запущен: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988 +#, java-format +msgid "Torrent already in the queue: {0}" +msgstr "Торрент уже в очереди: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:243 +#, java-format +msgid "Copying torrent to {0}" +msgstr "Копируем торрент в: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 +#, java-format +msgid "Unable to copy the torrent to {0}" +msgstr "Не удалось скопировать торрент в: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 +#, java-format +msgid "from {0}" +msgstr "из: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254 +#, java-format +msgid "Fetching {0}" +msgstr "Получение торрента: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 +msgid "Invalid URL - must start with http://" +msgstr "Некорректный URL, должен начинаться с http://" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:288 +#, java-format +msgid "Starting up torrent {0}" +msgstr "Запускаем торрент: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326 +#, java-format +msgid "Torrent file deleted: {0}" +msgstr "Удален торрент: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342 +#, java-format +msgid "Data file deleted: {0}" +msgstr "Файл удален: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 +#, java-format +msgid "Data file could not be deleted: {0}" +msgstr "Не удалось удалить файл: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353 +#, java-format +msgid "Data dir deleted: {0}" +msgstr "Директория удалена: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +msgid "Error creating torrent - you must select a tracker" +msgstr "Торрент не создан — вы должны указать трекер" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:399 +#, java-format +msgid "Torrent created for \"{0}\"" +msgstr "Создан торрент для \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402 +#, java-format +msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"" +msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404 +#, java-format +msgid "Error creating a torrent for \"{0}\"" +msgstr "Ошибка при создании торрента для: \"{0}\"" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#, java-format +msgid "Cannot create a torrent for the nonexistent data: {0}" +msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 +msgid "Error creating torrent - you must enter a file or directory" +msgstr "Торрент не создан — вы должны указать файл или директорию" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:413 +msgid "Stopping all torrents and closing the I2P tunnel." +msgstr "Останавливаем все торренты и закрываем соединение с I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:422 +msgid "I2P tunnel closed." +msgstr "Соединение с I2P закрыто." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425 +msgid "Opening the I2P tunnel and starting all torrents." +msgstr "Соединяемся с I2P и запускаем все торренты." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:502 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670 +msgid "Unknown" +msgstr "Неизвестный" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:513 +msgid "TrackerErr" +msgstr "ОшибкаТрекера" + +# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:521 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:859 +msgid "peers" +msgstr "пир." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:521 +msgid "Seeding" +msgstr "Раздается" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523 +msgid "Complete" +msgstr "Завершен" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:530 +msgid "OK" +msgstr "Загружается" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:532 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536 +msgid "Stalled" +msgstr "Простаивает" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538 +msgid "No Peers" +msgstr "Нет Пиров" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:540 +msgid "Stopped" +msgstr "Остановлен" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553 +msgid "View files" +msgstr "Открыть директорию" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:555 +msgid "Open file" +msgstr "Открыть файл" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +msgid "Tracker" +msgstr "Трекер" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580 +msgid "Details" +msgstr "Подробнее" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +msgid "Stop the torrent" +msgstr "Остановить торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616 +msgid "Stop" +msgstr "Остановить" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:622 +msgid "Start the torrent" +msgstr "Запустить торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:624 +msgid "Start" +msgstr "Запустить" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629 +msgid "Remove the torrent from the active list, deleting the .torrent file" +msgstr "Удалить торрент из списка и с диска" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631 +msgid "Remove" +msgstr "Удалить" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +msgid "Delete the .torrent file and the associated data file(s)" +msgstr "Удалить торрент и стереть загруженные файлы" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 +msgid "Delete" +msgstr "Стереть" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680 +msgid "Seed" +msgstr "Сид" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 +msgid "Uninteresting (The peer has no pieces we need)" +msgstr "Uninteresting (У пира нет нужных нам частей)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:700 +msgid "Choked (The peer is not allowing us to request pieces)" +msgstr "Choked (Этот пир не позволяет нам запрашивать части)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:714 +msgid "Uninterested (We have no pieces the peer needs)" +msgstr "Uninterested (У нас нужных этому пиру частей)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:716 +msgid "Choking (We are not allowing the peer to request pieces)" +msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +msgid "Add Torrent" +msgstr "Добавить Торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +msgid "From URL" +msgstr "Из URL" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:749 +msgid "Add torrent" +msgstr "Добавить торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:752 +#, java-format +msgid "Alternately, you can copy .torrent files to the directory {0}." +msgstr "Ну или вы можете скопировать .torrent-файлы в директорию {0}." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:754 +msgid "Removing a .torrent file will cause the torrent to stop." +msgstr "Удаление .torrent-файла приведет к остановке торрента." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:770 +msgid "Create Torrent" +msgstr "Создать Торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +msgid "Data to seed" +msgstr "Файлы для раздачи" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +msgid "File or directory to seed (must be within the specified path)" +msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:781 +msgid "Select a tracker" +msgstr "Выбрать трекер" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +msgid "or" +msgstr "или" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 +msgid "Specify custom tracker announce URL" +msgstr "Задать URL анонсера вручную" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +msgid "Create torrent" +msgstr "Создать торрент" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:817 +msgid "Configuration" +msgstr "Настройки" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:820 +msgid "Data directory" +msgstr "Директория для файлов" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823 +msgid "Directory to store torrents and data" +msgstr "Директория, где будут храниться торренты и загружаемые файлы" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:825 +msgid "Edit i2psnark.config and restart to change" +msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829 +msgid "Auto start" +msgstr "Автозапуск" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833 +msgid "If checked, automatically start torrents that are added" +msgstr "Автоматически запускать торренты после добавления" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:856 +msgid "Total uploader limit" +msgstr "Ограничение количества слотов отдачи" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863 +msgid "Up bandwidth limit" +msgstr "Ограничение скорости отдачи" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866 +msgid "Half available bandwidth recommended." +msgstr "Рекомендуется использовать половину от доступной пропускной способности." + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:868 +msgid "View or change router bandwidth" +msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:872 +msgid "Use open trackers also" +msgstr "Дополнительно использовать открытые трекеры" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:876 +msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file" +msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:880 +msgid "Open tracker announce URLs" +msgstr "URL открытых трекеров" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891 +msgid "I2CP host" +msgstr "Адрес I2CP" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:896 +msgid "I2CP port" +msgstr "Порт I2CP" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:909 +msgid "I2CP options" +msgstr "Параметры I2CP" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:914 +msgid "Save configuration" +msgstr "Сохранить настройки" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#, java-format +msgid "Torrent fetched from {0}" +msgstr "Получен торрент из: {0}" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:994 +#, java-format +msgid "Torrent at {0} was not valid" +msgstr "Торрент полученный с адреса {0} некорректен" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:999 +#, java-format +msgid "Torrent was not retrieved from {0}" +msgstr "Не удалось получить торрент из: {0}" + diff --git a/apps/i2ptunnel/locale/messages_ru.po b/apps/i2ptunnel/locale/messages_ru.po new file mode 100644 index 000000000..57770b2e2 --- /dev/null +++ b/apps/i2ptunnel/locale/messages_ru.po @@ -0,0 +1,31 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the i2ptunnel package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P i2ptunnel\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-12-10 00:50+0000\n" +"PO-Revision-Date: 2009-12-14 11:51+0000\n" +"Last-Translator: 4get \n" +"Language-Team: foo \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Client Tunnel" +msgstr "Менеджер Туннелей I2P — Редактирование Клиентского Туннеля" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73 +msgid "I2P Tunnel Manager - Edit Server Tunnel" +msgstr "Менеджер Туннелей I2P — Редактирование Серверного Туннеля" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71 +msgid "I2P Tunnel Manager - List" +msgstr "Менеджер Туннелей I2P — Список" + diff --git a/apps/susidns/locale/messages_ru.po b/apps/susidns/locale/messages_ru.po new file mode 100644 index 000000000..0cebf4e7d --- /dev/null +++ b/apps/susidns/locale/messages_ru.po @@ -0,0 +1,23 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susidns package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P susidns\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-12-10 01:53+0000\n" +"PO-Revision-Date: 2009-12-14 20:01+0000\n" +"Last-Translator: 4get \n" +"Language-Team: foo \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" + +#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:88 +msgid "Introduction - SusiDNS" +msgstr "Введение - SusiDNS" + From e07e329c269f5bb1e8a0d5859133a2ce344cbfc6 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:41:43 +0000 Subject: [PATCH 13/95] Tunnels: static fix, synchronization fix, deprecate setPairedTunnel() --- .../java/src/net/i2p/router/tunnel/pool/BuildRequestor.java | 2 +- .../net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java | 4 +++- .../src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java | 2 +- .../src/net/i2p/router/tunnel/pool/TunnelPoolManager.java | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java index 21325be85..3f5a2ea23 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java @@ -109,7 +109,7 @@ class BuildRequestor { return; } - cfg.setPairedTunnel(pairedTunnel); + //cfg.setPairedTunnel(pairedTunnel); long beforeDispatch = System.currentTimeMillis(); if (cfg.isInbound()) { diff --git a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java index 3728ebc52..b2cb7c704 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java +++ b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java @@ -83,7 +83,9 @@ public class PooledTunnelCreatorConfig extends TunnelCreatorConfig { public void setTestJob(TestJob job) { _testJob = job; } public void setExpireJob(Job job) { /* _expireJob = job; */ } - // Fix memory leaks caused by references if you need to use pairedTunnel + /** + * @deprecated Fix memory leaks caused by references if you need to use pairedTunnel + */ public void setPairedTunnel(TunnelInfo tunnel) { /* _pairedTunnel = tunnel; */} // public TunnelInfo getPairedTunnel() { return _pairedTunnel; } } diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java index 2cfac2cc4..a3b5c4b20 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java @@ -491,7 +491,7 @@ public abstract class TunnelPeerSelector { * Now: * d((H(l+h), h) - d(H(r+h), h) */ - private class HashComparator implements Comparator { + private static class HashComparator implements Comparator { private Hash _hash; private HashComparator(Hash h) { diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index d87975035..dab276069 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -175,7 +175,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { public int getOutboundClientTunnelCount() { int count = 0; List destinations = null; - synchronized (_clientInboundPools) { + synchronized (_clientOutboundPools) { destinations = new ArrayList(_clientOutboundPools.keySet()); } for (int i = 0; i < destinations.size(); i++) { From e16227211f07b34dcb21e3d936d8b4f521d5556e Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:44:20 +0000 Subject: [PATCH 14/95] remove unused logs --- core/java/src/net/i2p/data/i2cp/AbuseReason.java | 4 +--- core/java/src/net/i2p/data/i2cp/AbuseSeverity.java | 4 +--- core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java | 2 -- core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/DisconnectMessage.java | 4 +--- .../src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java | 3 --- core/java/src/net/i2p/data/i2cp/GetDateMessage.java | 5 +---- core/java/src/net/i2p/data/i2cp/I2CPMessageException.java | 4 +--- core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java | 2 -- core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java | 4 +--- core/java/src/net/i2p/data/i2cp/MessageId.java | 4 +--- core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java | 2 -- core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java | 4 +--- .../src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java | 4 +--- .../java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java | 4 +--- .../src/net/i2p/data/i2cp/ReconfigureSessionMessage.java | 2 -- core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java | 2 -- .../src/net/i2p/data/i2cp/SendMessageExpiresMessage.java | 2 -- core/java/src/net/i2p/data/i2cp/SendMessageMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/SessionId.java | 5 +---- core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java | 4 +--- core/java/src/net/i2p/data/i2cp/SetDateMessage.java | 4 +--- 25 files changed, 18 insertions(+), 71 deletions(-) diff --git a/core/java/src/net/i2p/data/i2cp/AbuseReason.java b/core/java/src/net/i2p/data/i2cp/AbuseReason.java index db69fedd9..58c23d5e8 100644 --- a/core/java/src/net/i2p/data/i2cp/AbuseReason.java +++ b/core/java/src/net/i2p/data/i2cp/AbuseReason.java @@ -16,7 +16,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; -import net.i2p.util.Log; /** * Defines the structure for why abuse was reported either by the client to @@ -25,7 +24,6 @@ import net.i2p.util.Log; * @author jrandom */ public class AbuseReason extends DataStructureImpl { - private final static Log _log = new Log(AbuseReason.class); private String _reason; public AbuseReason() { @@ -64,4 +62,4 @@ public class AbuseReason extends DataStructureImpl { public String toString() { return "[AbuseReason: " + getReason() + "]"; } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java b/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java index 2f9140e08..0bdc4805c 100644 --- a/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java +++ b/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java @@ -16,7 +16,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; -import net.i2p.util.Log; /** * Provides a severity level (larger numbers are more severe) in association with @@ -26,7 +25,6 @@ import net.i2p.util.Log; * @author jrandom */ public class AbuseSeverity extends DataStructureImpl { - private final static Log _log = new Log(AbuseSeverity.class); private int _severityId; public AbuseSeverity() { @@ -65,4 +63,4 @@ public class AbuseSeverity extends DataStructureImpl { public String toString() { return "[AbuseSeverity: " + getSeverity() + "]"; } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java index 02308c7b4..bd8a2ff0e 100644 --- a/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java +++ b/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java @@ -11,7 +11,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Tell the other side the limits @@ -19,7 +18,6 @@ import net.i2p.util.Log; * @author zzz */ public class BandwidthLimitsMessage extends I2CPMessageImpl { - private final static Log _log = new Log(BandwidthLimitsMessage.class); public final static int MESSAGE_TYPE = 23; private static final int LIMITS = 16; private int[] data; diff --git a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java index 75818f483..cf6759a26 100644 --- a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java +++ b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java @@ -18,7 +18,6 @@ import net.i2p.data.DataHelper; import net.i2p.data.LeaseSet; import net.i2p.data.PrivateKey; import net.i2p.data.SigningPrivateKey; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when authorizing @@ -27,7 +26,6 @@ import net.i2p.util.Log; * @author jrandom */ public class CreateLeaseSetMessage extends I2CPMessageImpl { - private final static Log _log = new Log(CreateLeaseSetMessage.class); public final static int MESSAGE_TYPE = 4; private SessionId _sessionId; private LeaseSet _leaseSet; @@ -138,4 +136,4 @@ public class CreateLeaseSetMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java index 1de5dfdbd..1b8004ce0 100644 --- a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java +++ b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when establishing a new @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class CreateSessionMessage extends I2CPMessageImpl { - private final static Log _log = new Log(CreateSessionMessage.class); public final static int MESSAGE_TYPE = 1; private SessionConfig _sessionConfig; @@ -91,4 +89,4 @@ public class CreateSessionMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java index 3cd535afe..630e0e718 100644 --- a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java +++ b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when destroying @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class DestroySessionMessage extends I2CPMessageImpl { - private final static Log _log = new Log(DestroySessionMessage.class); public final static int MESSAGE_TYPE = 3; private SessionId _sessionId; @@ -93,4 +91,4 @@ public class DestroySessionMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java b/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java index 08f08f5e6..f9c32810d 100644 --- a/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java +++ b/core/java/src/net/i2p/data/i2cp/DisconnectMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when destroying @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class DisconnectMessage extends I2CPMessageImpl { - private final static Log _log = new Log(DisconnectMessage.class); public final static int MESSAGE_TYPE = 30; private String _reason; @@ -83,4 +81,4 @@ public class DisconnectMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java b/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java index 64a89824d..35f44b522 100644 --- a/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java +++ b/core/java/src/net/i2p/data/i2cp/GetBandwidthLimitsMessage.java @@ -8,15 +8,12 @@ package net.i2p.data.i2cp; import java.io.IOException; import java.io.InputStream; -import net.i2p.util.Log; - /** * Request the router tells us the current bw limits * * @author zzz */ public class GetBandwidthLimitsMessage extends I2CPMessageImpl { - private final static Log _log = new Log(GetBandwidthLimitsMessage.class); public final static int MESSAGE_TYPE = 8; public GetBandwidthLimitsMessage() { diff --git a/core/java/src/net/i2p/data/i2cp/GetDateMessage.java b/core/java/src/net/i2p/data/i2cp/GetDateMessage.java index 76ee1a58f..f36ec02d9 100644 --- a/core/java/src/net/i2p/data/i2cp/GetDateMessage.java +++ b/core/java/src/net/i2p/data/i2cp/GetDateMessage.java @@ -12,14 +12,11 @@ package net.i2p.data.i2cp; import java.io.IOException; import java.io.InputStream; -import net.i2p.util.Log; - /** * Request the other side to send us what they think the current time is * */ public class GetDateMessage extends I2CPMessageImpl { - private final static Log _log = new Log(GetDateMessage.class); public final static int MESSAGE_TYPE = 32; public GetDateMessage() { @@ -57,4 +54,4 @@ public class GetDateMessage extends I2CPMessageImpl { buf.append("[GetDateMessage]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java index b49028731..63d13b040 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java @@ -10,7 +10,6 @@ package net.i2p.data.i2cp; */ import net.i2p.I2PException; -import net.i2p.util.Log; /** * Represent an error serializing or deserializing an APIMessage @@ -18,7 +17,6 @@ import net.i2p.util.Log; * @author jrandom */ public class I2CPMessageException extends I2PException { - private final static Log _log = new Log(I2CPMessageException.class); public I2CPMessageException(String message, Throwable parent) { super(message, parent); @@ -27,4 +25,4 @@ public class I2CPMessageException extends I2PException { public I2CPMessageException(String message) { super(message); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java index 04da546f7..739f7823e 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java @@ -15,14 +15,12 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Handle messages from the server for the client or vice versa * */ public class I2CPMessageHandler { - private final static Log _log = new Log(I2CPMessageHandler.class); /** * Read an I2CPMessage from the stream and return the fully populated object. diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java index af86863d2..3ace5df9d 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java @@ -16,7 +16,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; -import net.i2p.util.Log; /** * Defines the base message implementation. @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public abstract class I2CPMessageImpl extends DataStructureImpl implements I2CPMessage { - private final static Log _log = new Log(I2CPMessageImpl.class); public I2CPMessageImpl() { // nop } @@ -129,4 +127,4 @@ public abstract class I2CPMessageImpl extends DataStructureImpl implements I2CPM throw new DataFormatException("Error writing the message", ime); } } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/MessageId.java b/core/java/src/net/i2p/data/i2cp/MessageId.java index d31d478f1..84bfa0dfe 100644 --- a/core/java/src/net/i2p/data/i2cp/MessageId.java +++ b/core/java/src/net/i2p/data/i2cp/MessageId.java @@ -16,7 +16,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; -import net.i2p.util.Log; /** * Defines the message ID of a message delivered between a router and a client @@ -25,7 +24,6 @@ import net.i2p.util.Log; * @author jrandom */ public class MessageId extends DataStructureImpl { - private final static Log _log = new Log(MessageId.class); private long _messageId; public MessageId() { @@ -67,4 +65,4 @@ public class MessageId extends DataStructureImpl { public String toString() { return "[MessageId: " + getMessageId() + "]"; } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java index 37b7828f9..fd0327d1c 100644 --- a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java +++ b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java @@ -16,7 +16,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.Payload; -import net.i2p.util.Log; /** * Defines the payload message a router sends to the client @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class MessagePayloadMessage extends I2CPMessageImpl { - private final static Log _log = new Log(MessagePayloadMessage.class); public final static int MESSAGE_TYPE = 31; private long _sessionId; private long _messageId; diff --git a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java index 54ecad07c..b246aadb4 100644 --- a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java +++ b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java @@ -15,7 +15,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when destroying @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class MessageStatusMessage extends I2CPMessageImpl { - private final static Log _log = new Log(SessionStatusMessage.class); public final static int MESSAGE_TYPE = 22; private long _sessionId; private long _messageId; @@ -179,4 +177,4 @@ public class MessageStatusMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java index 1b3a41655..8c6e0b2f1 100644 --- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java +++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java @@ -15,7 +15,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when asking the @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class ReceiveMessageBeginMessage extends I2CPMessageImpl { - private final static Log _log = new Log(ReceiveMessageBeginMessage.class); public final static int MESSAGE_TYPE = 6; private long _sessionId; private long _messageId; @@ -110,4 +108,4 @@ public class ReceiveMessageBeginMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java index 0ca0253e5..cf1325cc8 100644 --- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java +++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java @@ -14,7 +14,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when asking the @@ -23,7 +22,6 @@ import net.i2p.util.Log; * @author jrandom */ public class ReceiveMessageEndMessage extends I2CPMessageImpl { - private final static Log _log = new Log(ReceiveMessageEndMessage.class); public final static int MESSAGE_TYPE = 7; private long _sessionId; private long _messageId; @@ -94,4 +92,4 @@ public class ReceiveMessageEndMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java index 5b5ad638c..5f7314d64 100644 --- a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java +++ b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author zzz */ public class ReconfigureSessionMessage extends I2CPMessageImpl { - private final static Log _log = new Log(ReconfigureSessionMessage.class); public final static int MESSAGE_TYPE = 2; private SessionId _sessionId; private SessionConfig _sessionConfig; diff --git a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java index fd11ec142..54b90292e 100644 --- a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java +++ b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when asking the @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class ReportAbuseMessage extends I2CPMessageImpl { - private final static Log _log = new Log(ReportAbuseMessage.class); public final static int MESSAGE_TYPE = 29; private SessionId _sessionId; private AbuseSeverity _severity; @@ -133,4 +131,4 @@ public class ReportAbuseMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java index 46f62d264..e4db066cb 100644 --- a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java +++ b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java @@ -20,7 +20,6 @@ import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.TunnelId; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when destroying @@ -29,7 +28,6 @@ import net.i2p.util.Log; * @author jrandom */ public class RequestLeaseSetMessage extends I2CPMessageImpl { - private final static Log _log = new Log(RequestLeaseSetMessage.class); public final static int MESSAGE_TYPE = 21; private SessionId _sessionId; private List _endpoints; diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java index 81271b150..770a6777b 100644 --- a/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java +++ b/core/java/src/net/i2p/data/i2cp/SendMessageExpiresMessage.java @@ -18,7 +18,6 @@ import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.data.Payload; -import net.i2p.util.Log; /** * Same as SendMessageMessage, but with an expiration to be passed to the router @@ -26,7 +25,6 @@ import net.i2p.util.Log; * @author zzz */ public class SendMessageExpiresMessage extends SendMessageMessage { - private final static Log _log = new Log(SendMessageExpiresMessage.class); /* FIXME hides another field FIXME */ public final static int MESSAGE_TYPE = 36; private SessionId _sessionId; diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java index 9abd7f426..237306f0d 100644 --- a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java +++ b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java @@ -17,7 +17,6 @@ import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.Destination; import net.i2p.data.Payload; -import net.i2p.util.Log; /** * Defines the message a client sends to a router to ask it to deliver @@ -26,7 +25,6 @@ import net.i2p.util.Log; * @author jrandom */ public class SendMessageMessage extends I2CPMessageImpl { - private final static Log _log = new Log(SendMessageMessage.class); public final static int MESSAGE_TYPE = 5; private SessionId _sessionId; private Destination _destination; @@ -159,4 +157,4 @@ public class SendMessageMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/SessionId.java b/core/java/src/net/i2p/data/i2cp/SessionId.java index d4c75ea5f..f79589c42 100644 --- a/core/java/src/net/i2p/data/i2cp/SessionId.java +++ b/core/java/src/net/i2p/data/i2cp/SessionId.java @@ -1,5 +1,4 @@ package net.i2p.data.i2cp; - /* * free (adj.): unencumbered; not under the control of others * Written by jrandom in 2003 and released into the public domain @@ -16,7 +15,6 @@ import java.io.OutputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.data.DataStructureImpl; -import net.i2p.util.Log; /** * Defines the token passed between the router and client to associate messages @@ -25,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class SessionId extends DataStructureImpl { - private final static Log _log = new Log(SessionId.class); private int _sessionId; public SessionId() { @@ -64,4 +61,4 @@ public class SessionId extends DataStructureImpl { public String toString() { return "[SessionId: " + getSessionId() + "]"; } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java index d3775db0f..490e7e426 100644 --- a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java +++ b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java @@ -15,7 +15,6 @@ import java.io.InputStream; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; -import net.i2p.util.Log; /** * Defines the message a client sends to a router when destroying @@ -24,7 +23,6 @@ import net.i2p.util.Log; * @author jrandom */ public class SessionStatusMessage extends I2CPMessageImpl { - private final static Log _log = new Log(SessionStatusMessage.class); public final static int MESSAGE_TYPE = 20; private SessionId _sessionId; private int _status; @@ -104,4 +102,4 @@ public class SessionStatusMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java index ff308c5d0..f0abce1a5 100644 --- a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java +++ b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java @@ -17,14 +17,12 @@ import java.util.Date; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; import net.i2p.util.Clock; -import net.i2p.util.Log; /** * Tell the other side what time it is * */ public class SetDateMessage extends I2CPMessageImpl { - private final static Log _log = new Log(SetDateMessage.class); public final static int MESSAGE_TYPE = 33; private Date _date; @@ -86,4 +84,4 @@ public class SetDateMessage extends I2CPMessageImpl { buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} From 448ff4d398069dd8ba98dadad51f11aea2801395 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:45:15 +0000 Subject: [PATCH 15/95] better error msg on sud copy fail --- core/java/src/net/i2p/crypto/TrustedUpdate.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/src/net/i2p/crypto/TrustedUpdate.java b/core/java/src/net/i2p/crypto/TrustedUpdate.java index 4d8376c13..8729f128f 100644 --- a/core/java/src/net/i2p/crypto/TrustedUpdate.java +++ b/core/java/src/net/i2p/crypto/TrustedUpdate.java @@ -452,7 +452,8 @@ D8usM7Dxp5yrDrCYZ5AIijc= while ( (bytesRead = fileInputStream.read(buffer)) != -1) fileOutputStream.write(buffer, 0, bytesRead); } catch (IOException ioe) { - return "I/O Exception during file extraction"; + // probably permissions or disk full, so bring the message out to the console + return "Error copying update: " + ioe; } finally { if (fileInputStream != null) try { From ea36b7b153335a512397a924bb71de6815c3760f Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:46:10 +0000 Subject: [PATCH 16/95] susidns UTF-8 fixes --- apps/susidns/src/bundle-messages.sh | 2 +- apps/susidns/src/jsp/addressbook.jsp | 2 ++ apps/susidns/src/jsp/config.jsp | 2 ++ apps/susidns/src/jsp/index.jsp | 2 ++ apps/susidns/src/jsp/subscriptions.jsp | 2 ++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh index e21706e88..e46eccd73 100755 --- a/apps/susidns/src/bundle-messages.sh +++ b/apps/susidns/src/bundle-messages.sh @@ -75,7 +75,7 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java -r $CLASS -l $LG -d WEB-INF/classes $i + msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i if [ $? -ne 0 ] then echo 'Warning - msgfmt failed, not updating translations' diff --git a/apps/susidns/src/jsp/addressbook.jsp b/apps/susidns/src/jsp/addressbook.jsp index 2bcf298ed..d9ff34695 100644 --- a/apps/susidns/src/jsp/addressbook.jsp +++ b/apps/susidns/src/jsp/addressbook.jsp @@ -23,6 +23,7 @@ * $Revision: 1.3 $ */ %> +<%@page pageEncoding="UTF-8"%> <%@ page contentType="text/html"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> @@ -35,6 +36,7 @@ + ${book.book} addressbook - susidns v${version.version} diff --git a/apps/susidns/src/jsp/config.jsp b/apps/susidns/src/jsp/config.jsp index fd755300c..415bec755 100644 --- a/apps/susidns/src/jsp/config.jsp +++ b/apps/susidns/src/jsp/config.jsp @@ -23,6 +23,7 @@ * $Revision: 1.1 $ */ %> +<%@page pageEncoding="UTF-8"%> <%@ page contentType="text/html" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> @@ -31,6 +32,7 @@ + configuration - susidns v${version.version} diff --git a/apps/susidns/src/jsp/index.jsp b/apps/susidns/src/jsp/index.jsp index 795dd7373..581b638f9 100644 --- a/apps/susidns/src/jsp/index.jsp +++ b/apps/susidns/src/jsp/index.jsp @@ -23,6 +23,7 @@ * $Revision: 1.2 $ */ %> +<%@page pageEncoding="UTF-8"%> <%@ page contentType="text/html"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> @@ -30,6 +31,7 @@ + <%=intl._("Introduction - SusiDNS")%> v${version.version} diff --git a/apps/susidns/src/jsp/subscriptions.jsp b/apps/susidns/src/jsp/subscriptions.jsp index 75542d57d..a60710310 100644 --- a/apps/susidns/src/jsp/subscriptions.jsp +++ b/apps/susidns/src/jsp/subscriptions.jsp @@ -23,6 +23,7 @@ * $Revision: 1.2 $ */ %> +<%@page pageEncoding="UTF-8"%> <%@ page contentType="text/html"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> @@ -31,6 +32,7 @@ + subscriptions - susidns v${version.version} From 43f68136096c0c800e0ba1a2e0029e4d090a5a06 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:47:24 +0000 Subject: [PATCH 17/95] snark start/stop fix, action cleanups --- .../org/klomp/snark/web/I2PSnarkServlet.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index c3341229f..2fbf10462 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -185,7 +185,7 @@ public class I2PSnarkServlet extends HttpServlet { out.write("
\n" + "
" + _("Peer") + "" + _("Expl. + Client") + "" + _("% of total") + "" + _("Part. from + to") + "" + _("% of total") + "
"); out.write(_("Totals")); - out.write(" {"); + out.write(" ("); out.write(_("{0} torrents", snarks.size())); out.write(", "); out.write(DataHelper.formatSize(stats[5]) + "B, "); @@ -216,7 +216,7 @@ public class I2PSnarkServlet extends HttpServlet { String action = req.getParameter("action"); if (action == null) { // noop - } else if (_("Add torrent").equals(action)) { + } else if ("Add".equals(action)) { String newFile = req.getParameter("newFile"); String newURL = req.getParameter("newURL"); // NOTE - newFile currently disabled in HTML form - see below @@ -260,7 +260,7 @@ public class I2PSnarkServlet extends HttpServlet { } else { // no file or URL specified } - } else if (_("Stop").equals(action)) { + } else if ("Stop".equals(action)) { String torrent = req.getParameter("torrent"); if (torrent != null) { byte infoHash[] = Base64.decode(torrent); @@ -275,7 +275,7 @@ public class I2PSnarkServlet extends HttpServlet { } } } - } else if (_("Start").equals(action)) { + } else if ("Start".equals(action)) { String torrent = req.getParameter("torrent"); if (torrent != null) { byte infoHash[] = Base64.decode(torrent); @@ -357,7 +357,7 @@ public class I2PSnarkServlet extends HttpServlet { } } } - } else if (_("Save configuration").equals(action)) { + } else if ("Save".equals(action)) { String dataDir = req.getParameter("dataDir"); boolean autoStart = req.getParameter("autoStart") != null; String seedPct = req.getParameter("seedPct"); @@ -371,7 +371,7 @@ public class I2PSnarkServlet extends HttpServlet { boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null; String openTrackers = req.getParameter("openTrackers"); _manager.updateConfig(dataDir, autoStart, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, upLimit, upBW, useOpenTrackers, openTrackers); - } else if (_("Create torrent").equals(action)) { + } else if ("Create".equals(action)) { String baseData = req.getParameter("baseFile"); if (baseData != null && baseData.trim().length() > 0) { File baseFile = new File(_manager.getDataDir(), baseData); @@ -738,6 +738,7 @@ public class I2PSnarkServlet extends HttpServlet { // *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file out.write("
\n"); out.write("\n"); + out.write("\n"); out.write("
"); out.write(_("Add Torrent")); out.write("
\n
"); @@ -747,7 +748,7 @@ public class I2PSnarkServlet extends HttpServlet { //out.write("From file:
\n"); out.write("
 
\n"); + out.write("\" name=\"foo\" >
\n"); out.write("
 "); out.write(_("Alternately, you can copy .torrent files to the directory {0}.", _manager.getDataDir().getAbsolutePath())); out.write("\n"); @@ -766,6 +767,7 @@ public class I2PSnarkServlet extends HttpServlet { // *not* enctype="multipart/form-data", so that the input type=file sends the filename, not the file out.write("\n"); out.write("\n"); + out.write("\n"); out.write(""); out.write(_("Create Torrent")); out.write("
\n
"); @@ -798,7 +800,7 @@ public class I2PSnarkServlet extends HttpServlet { out.write("\" > "); out.write("
 
\n"); + out.write("\" name=\"foo\" >
\n"); out.write("\n
"); } @@ -813,6 +815,7 @@ public class I2PSnarkServlet extends HttpServlet { out.write("
\n"); out.write("
\n"); out.write("\n"); + out.write("\n"); out.write(""); out.write(_("Configuration")); out.write("
\n"); @@ -912,7 +915,7 @@ public class I2PSnarkServlet extends HttpServlet { out.write("
 \n"); + out.write("\" name=\"foo\" >\n"); out.write("
\n"); out.write(""); } @@ -970,6 +973,7 @@ private static class FetchAndAdd implements Runnable { in = new FileInputStream(file); MetaInfo info = new MetaInfo(in); String name = info.getName(); + name = DataHelper.stripHTML(name); // XSS name = name.replace('/', '_'); name = name.replace('\\', '_'); name = name.replace('&', '+'); From eb23306b12f458de17530df508b64693a46b6e74 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:48:57 +0000 Subject: [PATCH 18/95] configurable jump list --- .../i2p/i2ptunnel/I2PTunnelHTTPClient.java | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java index df0d75019..42fb39549 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java @@ -261,6 +261,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable public static final String PROP_REFERER = "i2ptunnel.httpclient.sendReferer"; public static final String PROP_USER_AGENT = "i2ptunnel.httpclient.sendUserAgent"; public static final String PROP_VIA = "i2ptunnel.httpclient.sendVia"; + public static final String PROP_JUMP_SERVERS = "i2ptunnel.httpclient.jumpServers"; private static long __requestId = 0; protected void clientConnectionRun(Socket s) { @@ -591,7 +592,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable if (_log.shouldLog(Log.WARN)) _log.warn("Unable to resolve " + destination + " (proxy? " + usingWWWProxy + ", request: " + targetRequest); byte[] header; - boolean showAddrHelper = false; + String jumpServers = null; if (usingWWWProxy) header = getErrorPage("dnfp", ERR_DESTINATION_UNKNOWN); else if(ahelper != 0) @@ -600,9 +601,11 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable header = getErrorPage("dnf", ERR_DESTINATION_UNKNOWN); else { header = getErrorPage("dnfh", ERR_DESTINATION_UNKNOWN); - showAddrHelper = true; + jumpServers = getTunnel().getClientOptions().getProperty(PROP_JUMP_SERVERS); + if (jumpServers == null) + jumpServers = DEFAULT_JUMP_SERVERS; } - writeErrorMessage(header, out, targetRequest, usingWWWProxy, destination, showAddrHelper); + writeErrorMessage(header, out, targetRequest, usingWWWProxy, destination, jumpServers); s.close(); return; } @@ -757,15 +760,16 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable } } - private static String jumpServers[] = { - "http://i2host.i2p/cgi-bin/i2hostjump?", - // "http://orion.i2p/jump/", - "http://stats.i2p/cgi-bin/jump.cgi?a=", - // "http://trevorreznik.i2p/cgi-bin/jump.php?hostname=", - "http://i2jump.i2p/" - }; + private static String DEFAULT_JUMP_SERVERS = + "http://i2host.i2p/cgi-bin/i2hostjump?," + + "http://stats.i2p/cgi-bin/jump.cgi?a=," + + "http://i2jump.i2p/"; + + /** + * @param jumpServers comma- or space-separated list, or null + */ private static void writeErrorMessage(byte[] errMessage, OutputStream out, String targetRequest, - boolean usingWWWProxy, String wwwProxy, boolean showAddrHelper) throws IOException { + boolean usingWWWProxy, String wwwProxy, String jumpServers) throws IOException { if (out != null) { out.write(errMessage); if (targetRequest != null) { @@ -781,12 +785,17 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable out.write(uri.getBytes()); out.write("".getBytes()); if (usingWWWProxy) out.write(("
WWW proxy: " + wwwProxy).getBytes()); - if (showAddrHelper) { + if (jumpServers != null && jumpServers.length() > 0) { // Fixme untranslated out.write("

Click a link below to look for an address helper by using a \"jump\" service:
".getBytes()); - for (int i = 0; i < jumpServers.length; i++) { + + StringTokenizer tok = new StringTokenizer(jumpServers, ", "); + while (tok.hasMoreTokens()) { + String jurl = tok.nextToken(); + if (!jurl.startsWith("http://")) + continue; // Skip jump servers we don't know - String jumphost = jumpServers[i].substring(7); // "http://" + String jumphost = jurl.substring(7); // "http://" jumphost = jumphost.substring(0, jumphost.indexOf('/')); try { Destination dest = I2PTunnel.destFromName(jumphost); @@ -796,10 +805,10 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable } out.write("
".getBytes()); - out.write(jumpServers[i].getBytes()); + out.write(jurl.getBytes()); out.write(uri.getBytes()); out.write("".getBytes()); } @@ -823,7 +832,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable header = getErrorPage(I2PAppContext.getGlobalContext(), "dnfp", ERR_DESTINATION_UNKNOWN); else header = getErrorPage(I2PAppContext.getGlobalContext(), "dnf", ERR_DESTINATION_UNKNOWN); - writeErrorMessage(header, out, targetRequest, usingWWWProxy, wwwProxy, false); + writeErrorMessage(header, out, targetRequest, usingWWWProxy, wwwProxy, null); } catch (IOException ioe) { // static //_log.warn(getPrefix(requestId) + "Error writing out the 'destination was unknown' " + "message", ioe); From cec75fa60e8bcaecfd0c5a928cb27052a4b6903c Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 01:51:56 +0000 Subject: [PATCH 19/95] fix i2ptunnel bundles --- apps/i2ptunnel/java/build.xml | 4 +--- apps/i2ptunnel/java/bundle-messages.sh | 2 +- .../java/src/net/i2p/i2ptunnel/web/Messages.java | 2 +- history.txt | 8 ++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index fa3e5d677..9647fa8d1 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -41,10 +41,8 @@ - - - + diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh index aa98a3167..a7e44226b 100755 --- a/apps/i2ptunnel/java/bundle-messages.sh +++ b/apps/i2ptunnel/java/bundle-messages.sh @@ -76,7 +76,7 @@ do echo "Generating ${CLASS}_$LG ResourceBundle..." # convert to class files in build/obj - msgfmt --java -r $CLASS -l $LG -d build/obj $i + msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i if [ $? -ne 0 ] then echo 'Warning - msgfmt failed, not updating translations' diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java index fa3839232..591d6a98c 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java @@ -7,7 +7,7 @@ import net.i2p.util.Translate; * Translate strings for this package. */ public class Messages { - private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.messages"; + private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.web.messages"; private final I2PAppContext _context; public Messages() { diff --git a/history.txt b/history.txt index 9d16e53d3..edb571f71 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2009-12-15 zzz + * HTTP Proxy: Make jump server list configurable + * i2psnark: Fix stop/start, cleanups + * i2ptunnel: Fix bundle location + * susidns: UTF-8 fixes + * TunnelManager: Fix a locking bug + * Update: Improve error message + 2009-12-13 zzz * Find ResourceBundles in wars * Fix restart from config.jsp if no wrapper diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 5a4225cae..aea509c4d 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 6; + public final static long BUILD = 7; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; From 7b1caac9ace001eec4897041e8efc7808625db0d Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 15 Dec 2009 17:25:01 +0000 Subject: [PATCH 20/95] cleanup and tag susidns jsps --- apps/susidns/src/jsp/addressbook.jsp | 48 +++++----- apps/susidns/src/jsp/config.jsp | 87 ++++++++++++------- apps/susidns/src/jsp/index.jsp | 52 +++++------ apps/susidns/src/jsp/subscriptions.jsp | 32 +++---- .../src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 127 insertions(+), 94 deletions(-) diff --git a/apps/susidns/src/jsp/addressbook.jsp b/apps/susidns/src/jsp/addressbook.jsp index d9ff34695..4fda75eff 100644 --- a/apps/susidns/src/jsp/addressbook.jsp +++ b/apps/susidns/src/jsp/addressbook.jsp @@ -28,6 +28,7 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> + @@ -37,7 +38,7 @@ -${book.book} addressbook - susidns v${version.version} +${book.book} <%=intl._("addressbook")%> - susidns v${version.version} @@ -47,19 +48,20 @@

-

${book.book} addressbook at ${book.fileName}

+

<%=intl._(book.getBook())%> <%=intl._("addressbook")%>: ${book.fileName}

${book.messages}
@@ -68,7 +70,7 @@
-

Filter: +

<%=intl._("Filter")%>: a b c @@ -96,10 +98,10 @@ y z 0-9 -all

+<%=intl._("all")%>

-

Current filter: ${book.filter} -(clear filter)

+

<%=intl._("Current filter")%>: ${book.filter} +(<%=intl._("clear filter")%>)

@@ -108,7 +110,7 @@

@@ -67,13 +69,13 @@ subscriptions *
-

Explanation

-The subscription file contains a list of (i2p) URLs. The addressbook application -regularly (once per hour) checks this list for new eepsites. Those URLs simply contain the published hosts.txt -file of other people. The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently. -So it is a good idea to add additional subscriptions to sites that have the latest addresses. -See the FAQ for a list of subscription URLs. +<%=intl._("The subscription file contains a list of i2p URLs.")%> +<%=intl._("The addressbook application regularly checks this list for new eepsites.")%> +<%=intl._("Those URLs refer to published hosts.txt files.")%> +<%=intl._("The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently.")%> +<%=intl._("So it is a good idea to add additional subscriptions to sites that have the latest addresses.")%> +<%=intl._("See the FAQ for a list of subscription URLs.")%>


diff --git a/apps/susidns/src/jsp/config.jsp b/apps/susidns/src/jsp/config.jsp index 4c3cefbdf..9f407ced9 100644 --- a/apps/susidns/src/jsp/config.jsp +++ b/apps/susidns/src/jsp/config.jsp @@ -34,7 +34,7 @@ -<%=intl._("configuration")%> - susidns v${version.version} +<%=intl._("configuration")%> - susidns @@ -64,8 +64,8 @@
- - +" > +" >
diff --git a/apps/susidns/src/jsp/index.jsp b/apps/susidns/src/jsp/index.jsp index 0f56bdf18..51e0517e9 100644 --- a/apps/susidns/src/jsp/index.jsp +++ b/apps/susidns/src/jsp/index.jsp @@ -32,7 +32,7 @@ -<%=intl._("Introduction")%> - SusiDNS v${version.version} +<%=intl._("Introduction")%> - SusiDNS diff --git a/apps/susidns/src/jsp/subscriptions.jsp b/apps/susidns/src/jsp/subscriptions.jsp index 7485e10bc..4edd704ae 100644 --- a/apps/susidns/src/jsp/subscriptions.jsp +++ b/apps/susidns/src/jsp/subscriptions.jsp @@ -34,7 +34,7 @@ -<%=intl._("subscriptions")%> - susidns v${version.version} +<%=intl._("subscriptions")%> - susidns @@ -64,8 +64,8 @@
- - +" > +" >
From b53031685063a034d612a58d0affed481b438be9 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 17 Dec 2009 01:05:29 +0000 Subject: [PATCH 25/95] * I2CP: - Move client-side writes to their own thread - Reenable InternalSockets --- .../net/i2p/client/ClientWriterRunner.java | 97 +++++++++++++++++++ .../src/net/i2p/client/I2PSessionImpl.java | 42 +++----- .../src/net/i2p/client/I2PSimpleSession.java | 1 + .../net/i2p/util/InternalServerSocket.java | 5 + .../java/src/net/i2p/util/InternalSocket.java | 10 +- 5 files changed, 123 insertions(+), 32 deletions(-) create mode 100644 core/java/src/net/i2p/client/ClientWriterRunner.java diff --git a/core/java/src/net/i2p/client/ClientWriterRunner.java b/core/java/src/net/i2p/client/ClientWriterRunner.java new file mode 100644 index 000000000..056208fb5 --- /dev/null +++ b/core/java/src/net/i2p/client/ClientWriterRunner.java @@ -0,0 +1,97 @@ +package net.i2p.client; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +import net.i2p.data.i2cp.I2CPMessage; +import net.i2p.data.i2cp.I2CPMessageImpl; +import net.i2p.data.i2cp.I2CPMessageException; +import net.i2p.util.I2PAppThread; + +/** + * Copied from net.i2p.router.client + * We need a single thread that writes so we don't have issues with + * the Piped Streams used in InternalSocket. + * + * @author zzz from net.i2p.router.client.ClientWriterRunner + */ +class ClientWriterRunner implements Runnable { + private OutputStream _out; + private I2PSessionImpl _session; + private BlockingQueue _messagesToWrite; + private static volatile long __Id = 0; + + /** starts the thread too */ + public ClientWriterRunner(OutputStream out, I2PSessionImpl session) { + _out = out; + _session = session; + _messagesToWrite = new LinkedBlockingQueue(); + Thread t = new I2PAppThread(this, "I2CP Client Writer " + (++__Id), true); + t.start(); + } + + /** + * Add this message to the writer's queue + * + */ + public void addMessage(I2CPMessage msg) { + try { + _messagesToWrite.put(msg); + } catch (InterruptedException ie) {} + } + + /** + * No more messages - dont even try to send what we have + * + */ + public void stopWriting() { + _messagesToWrite.clear(); + try { + _messagesToWrite.put(new PoisonMessage()); + } catch (InterruptedException ie) {} + } + + public void run() { + I2CPMessage msg; + while (!_session.isClosed()) { + try { + msg = _messagesToWrite.take(); + } catch (InterruptedException ie) { + continue; + } + if (msg.getType() == PoisonMessage.MESSAGE_TYPE) + break; + // only thread, we don't need synchronized + try { + msg.writeMessage(_out); + _out.flush(); + } catch (I2CPMessageException ime) { + _session.propogateError("Error writing out the message", ime); + _session.disconnect(); + break; + } catch (IOException ioe) { + _session.propogateError("Error writing out the message", ioe); + _session.disconnect(); + break; + } + } + _messagesToWrite.clear(); + } + + /** + * End-of-stream msg used to stop the concurrent queue + * See http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/BlockingQueue.html + * + */ + private static class PoisonMessage extends I2CPMessageImpl { + public static final int MESSAGE_TYPE = 999999; + public int getType() { + return MESSAGE_TYPE; + } + public void doReadMessage(InputStream buf, int size) throws I2CPMessageException, IOException {} + public byte[] doWriteMessage() throws I2CPMessageException, IOException { return null; } + } +} diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index c11c71549..b1fc2b226 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -73,6 +73,8 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa protected Socket _socket; /** reader that always searches for messages */ protected I2CPMessageReader _reader; + /** writer message queue */ + protected ClientWriterRunner _writer; /** where we pipe our messages */ protected /* FIXME final FIXME */OutputStream _out; @@ -277,11 +279,11 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa _out.write(I2PClient.PROTOCOL_BYTE); _out.flush(); } + _writer = new ClientWriterRunner(_out, this); InputStream in = _socket.getInputStream(); _reader = new I2CPMessageReader(in, this); if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "before startReading"); _reader.startReading(); - if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Before getDate"); sendMessage(new GetDateMessage()); if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After getDate / begin waiting for a response"); @@ -543,34 +545,14 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa * @throws I2PSessionException if the message is malformed or there is an error writing it out */ void sendMessage(I2CPMessage message) throws I2PSessionException { - if (isClosed()) throw new I2PSessionException("Already closed"); - - long beforeSync = _context.clock().now(); - long inSync = 0; - if (_log.shouldLog(Log.DEBUG)) _log.debug("before sync to write"); - try { - synchronized (_out) { - inSync = _context.clock().now(); - if (_log.shouldLog(Log.DEBUG)) _log.debug("before writeMessage"); - message.writeMessage(_out); - if (_log.shouldLog(Log.DEBUG)) _log.debug("after writeMessage"); - _out.flush(); - if (_log.shouldLog(Log.DEBUG)) _log.debug("after flush"); - } - } catch (I2CPMessageException ime) { - throw new I2PSessionException(getPrefix() + "Error writing out the message", ime); - } catch (IOException ioe) { - throw new I2PSessionException(getPrefix() + "Error writing out the message", ioe); - } - long afterSync = _context.clock().now(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug(getPrefix() + "Message written out and flushed w/ " - + (inSync-beforeSync) + "ms to sync and " - + (afterSync-inSync) + "ms to send"); + if (isClosed() || _writer == null) + throw new I2PSessionException("Already closed"); + _writer.addMessage(message); } /** * Pass off the error to the listener + * Misspelled, oh well. */ void propogateError(String msg, Throwable error) { if (_log.shouldLog(Log.ERROR)) @@ -629,8 +611,14 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa private void closeSocket() { if (_log.shouldLog(Log.INFO)) _log.info(getPrefix() + "Closing the socket", new Exception("closeSocket")); _closed = true; - if (_reader != null) _reader.stopReading(); - _reader = null; + if (_reader != null) { + _reader.stopReading(); + _reader = null; + } + if (_writer != null) { + _writer.stopWriting(); + _writer = null; + } if (_socket != null) { try { diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/I2PSimpleSession.java index 933a9578c..af5ab9a75 100644 --- a/core/java/src/net/i2p/client/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/I2PSimpleSession.java @@ -79,6 +79,7 @@ class I2PSimpleSession extends I2PSessionImpl2 { _out.write(I2PClient.PROTOCOL_BYTE); _out.flush(); } + _writer = new ClientWriterRunner(_out, this); InputStream in = _socket.getInputStream(); _reader = new I2CPMessageReader(in, this); _reader.startReading(); diff --git a/core/java/src/net/i2p/util/InternalServerSocket.java b/core/java/src/net/i2p/util/InternalServerSocket.java index 00d8352ee..bc9a19ff7 100644 --- a/core/java/src/net/i2p/util/InternalServerSocket.java +++ b/core/java/src/net/i2p/util/InternalServerSocket.java @@ -21,6 +21,11 @@ import net.i2p.I2PAppContext; * A simple in-JVM ServerSocket using Piped Streams. * We use port numbers just like regular sockets. * Can only be connected by InternalSocket. + * + * Warning - this uses Piped Streams, which don't like multiple writers from threads + * that may vanish. If you do use multipe writers, + * you may get intermittent 'write end dead' or 'pipe broken' IOExceptions on the reader side. + * See http://techtavern.wordpress.com/2008/07/16/whats-this-ioexception-write-end-dead/ */ public class InternalServerSocket extends ServerSocket { private static final ConcurrentHashMap _sockets = new ConcurrentHashMap(4); diff --git a/core/java/src/net/i2p/util/InternalSocket.java b/core/java/src/net/i2p/util/InternalSocket.java index 52b028c11..26280f254 100644 --- a/core/java/src/net/i2p/util/InternalSocket.java +++ b/core/java/src/net/i2p/util/InternalSocket.java @@ -34,12 +34,12 @@ public class InternalSocket extends Socket { * Convenience method to return either a Socket or an InternalSocket */ public static Socket getSocket(String host, int port) throws IOException { - //if (System.getProperty("router.version") != null && - // (host.equals("127.0.0.1") || host.equals("localhost"))) { - // return new InternalSocket(port); - //} else { + if (System.getProperty("router.version") != null && + (host.equals("127.0.0.1") || host.equals("localhost"))) { + return new InternalSocket(port); + } else { return new Socket(host, port); - //} + } } @Override From 7ca8e0c3a125f0677d992c102ad2a44cc6f0b15d Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 17 Dec 2009 14:02:02 +0000 Subject: [PATCH 26/95] fix spacing in update section --- .../java/src/net/i2p/router/web/SummaryBarRenderer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index 8643a9c0c..23f297031 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -176,7 +176,7 @@ public class SummaryBarRenderer { if (_helper.updateAvailable() || _helper.unsignedUpdateAvailable()) { // display all the time so we display the final failure message - buf.append("
").append(UpdateHandler.getStatus()); + buf.append(UpdateHandler.getStatus()); if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress"))) { // nothing } else if( @@ -191,7 +191,7 @@ public class SummaryBarRenderer { System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+""); String uri = _helper.getRequestURI(); - buf.append("
\n"); + buf.append("

\n"); buf.append("\n"); if (_helper.updateAvailable()) { buf.append("

\n"); } From 8e656427d8de41be361407a919ecd429d3ad36c6 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:47:18 +0000 Subject: [PATCH 36/95] * Console: - Fix status to show a disconnected network error rather than clock skew or UDP error when disconnected - Use peer clock skew rather than clock offset for determining whether to display clock skew error, i.e. display what matters * Transport: Rework peer clock skew method to always return a value by falling back to router clock offset; Fix possible AIOOBE and divide by zero; remove logging; reduce min number of peers --- .../src/net/i2p/router/web/SummaryHelper.java | 19 +++++++++++--- .../transport/CommSystemFacadeImpl.java | 26 +++++++------------ 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 1fc6c31b7..516855e2d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -62,6 +62,9 @@ public class SummaryHelper extends HelperBase { return DataHelper.formatDuration(router.getUptime()); } +/** + this displayed offset, not skew - now handled in reachability() + private String timeSkew() { if (_context == null) return ""; //if (!_context.clock().getUpdatedSuccessfully()) @@ -72,6 +75,7 @@ public class SummaryHelper extends HelperBase { return ""; return " (" + DataHelper.formatDuration(diff) + " " + _("skew") + ")"; } +**/ public boolean allowReseed() { return _context.netDb().isInitialized() && @@ -83,15 +87,20 @@ public class SummaryHelper extends HelperBase { public int getAllPeers() { return Math.max(_context.netDb().getKnownRouters() - 1, 0); } public String getReachability() { - return reachability() + timeSkew(); + return reachability(); // + timeSkew(); } private String reachability() { if (_context.router().getUptime() > 60*1000 && (!_context.router().gracefulShutdownInProgress()) && !_context.clientManager().isAlive()) return _("ERR-Client Manager I2CP Error - check logs"); // not a router problem but the user should know - if (!_context.clock().getUpdatedSuccessfully()) - return _("ERR-ClockSkew"); + // Warn based on actual skew from peers, not update status, so if we successfully offset + // the clock, we don't complain. + //if (!_context.clock().getUpdatedSuccessfully()) + Long skew = _context.commSystem().getFramedAveragePeerClockSkew(33); + // Display the actual skew, not the offset + if (skew != null && Math.abs(skew.longValue()) > 45) + return _("ERR-Clock Skew of {0}", DataHelper.formatDuration(Math.abs(skew.longValue()) * 1000)); if (_context.router().isHidden()) return _("Hidden"); @@ -118,7 +127,9 @@ public class SummaryHelper extends HelperBase { default: ra = _context.router().getRouterInfo().getTargetAddress("SSU"); if (ra == null && _context.router().getUptime() > 5*60*1000) { - if (_context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME) == null || + if (getActivePeers() <= 0) + return _("ERR-No Active Peers, Check Network Connection and Firewall"); + else if (_context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME) == null || _context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_PORT) == null) return _("ERR-UDP Disabled and Inbound TCP host/port not set"); else diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 6a7eaca84..f1460b9f7 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -77,31 +77,26 @@ public class CommSystemFacadeImpl extends CommSystemFacade { public boolean haveHighOutboundCapacity() { return (_manager == null ? false : _manager.haveHighOutboundCapacity()); } /** - * Framed average clock skew of connected peers in seconds, or null if we cannot answer. + * Framed average clock skew of connected peers in seconds, or the clock offset if we cannot answer. * Average is calculated over the middle "percentToInclude" peers. */ @Override public Long getFramedAveragePeerClockSkew(int percentToInclude) { if (_manager == null) { - if (_log.shouldLog(Log.INFO)) - _log.info("Returning null for framed averege peer clock skew (no transport manager)!"); - return null; + // round toward zero + return Long.valueOf(_context.clock().getOffset() / 1000); } Vector skews = _manager.getClockSkews(); if (skews == null) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Returning null for framed average peer clock skew (no data)!"); - return null; + return Long.valueOf(_context.clock().getOffset() / 1000); } - if (skews.size() < 20) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Returning null for framed average peer clock skew (only " + skews.size() + " peers)!"); - return null; + if (skews.size() < 5) { + return Long.valueOf(_context.clock().getOffset() / 1000); } // Going to calculate, sort them Collections.sort(skews); // Calculate frame size - int frameSize = (skews.size() * percentToInclude / 100); + int frameSize = Math.min((skews.size() * percentToInclude / 100), 2); int first = (skews.size() / 2) - (frameSize / 2); int last = (skews.size() / 2) + (frameSize / 2); // Sum skew values @@ -112,11 +107,8 @@ public class CommSystemFacadeImpl extends CommSystemFacade { _log.debug("Adding clock skew " + i + " valued " + value + " s."); sum = sum + value; } - // Calculate average - Long framedAverageClockSkew = new Long(sum / frameSize); - if (_log.shouldLog(Log.INFO)) - _log.info("Our framed average peer clock skew is " + framedAverageClockSkew + " s."); - return framedAverageClockSkew; + // Calculate average (round toward zero) + return Long.valueOf(sum / frameSize); } public List getBids(OutNetMessage msg) { From 4baff9fbab70965e7cdb397e1d09cb0fcafed2d4 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:49:55 +0000 Subject: [PATCH 37/95] * Router: Move some more threads to I2PAppThread so an OOM won't crash the router --- router/java/src/net/i2p/router/Router.java | 13 ++++++------- .../net/i2p/router/networkdb/reseed/Reseeder.java | 6 ++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 7e231097b..4ed70a772 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -41,6 +41,7 @@ import net.i2p.stat.Rate; import net.i2p.stat.RateStat; import net.i2p.stat.StatManager; import net.i2p.util.FileUtil; +import net.i2p.util.I2PAppThread; import net.i2p.util.I2PThread; import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; @@ -201,6 +202,8 @@ public class Router { installUpdates(); // Apps may use this as an easy way to determine if they are in the router JVM + // But context.isRouterContext() is even easier... + // Both of these as of 0.7.9 System.setProperty("router.version", RouterVersion.VERSION); // NOW we start all the activity @@ -228,14 +231,10 @@ public class Router { } }; _shutdownHook = new ShutdownHook(_context); - _gracefulShutdownDetector = new I2PThread(new GracefulShutdown()); - _gracefulShutdownDetector.setDaemon(true); - _gracefulShutdownDetector.setName("Graceful shutdown hook"); + _gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(), "Graceful shutdown hook", true); _gracefulShutdownDetector.start(); - I2PThread watchdog = new I2PThread(new RouterWatchdog(_context)); - watchdog.setName("RouterWatchdog"); - watchdog.setDaemon(true); + Thread watchdog = new I2PAppThread(new RouterWatchdog(_context), "RouterWatchdog", true); watchdog.start(); } @@ -339,7 +338,7 @@ public class Router { long waited = System.currentTimeMillis() - before; if (_log.shouldLog(Log.INFO)) _log.info("Waited " + waited + "ms to initialize"); - + _context.jobQueue().addJob(new StartupJob(_context)); } diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index f37f01aa2..2e93cb3e0 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -15,7 +15,7 @@ import java.util.StringTokenizer; import net.i2p.I2PAppContext; import net.i2p.router.RouterContext; import net.i2p.util.EepGet; -import net.i2p.util.I2PThread; +import net.i2p.util.I2PAppThread; import net.i2p.util.Log; /** @@ -52,13 +52,15 @@ public class Reseeder { return; } else { System.setProperty(PROP_INPROGRESS, "true"); - I2PThread reseed = new I2PThread(_reseedRunner, "Reseed"); + // set to daemon so it doesn't hang a shutdown + Thread reseed = new I2PAppThread(_reseedRunner, "Reseed", true); reseed.start(); } } } + /** Todo: translate the messages sent via PROP_STATUS */ public class ReseedRunner implements Runnable, EepGet.StatusListener { private boolean _isRunning; From f0d444b32eea1ef45ce9d0dab4791834091281fa Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:52:18 +0000 Subject: [PATCH 38/95] add to javadoc and adjust logging --- .../i2p/router/tunnel/FragmentHandler.java | 73 +++++++++++++++++-- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java index 43e1d1314..57e44203e 100644 --- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java +++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java @@ -21,6 +21,65 @@ import net.i2p.util.SimpleTimer; * Handle fragments at the endpoint of a tunnel, peeling off fully completed * I2NPMessages when they arrive, and dropping fragments if they take too long * to arrive. + * + * From tunnel-alt.html: + +

When the gateway wants to deliver data through the tunnel, it first +gathers zero or more I2NP messages, selects how much padding will be used, +fragments it across the necessary number of 1KB tunnel messages, and decides how +each I2NP message should be handled by the tunnel endpoint, encoding that +data into the raw tunnel payload:

+
    +
  • the first 4 bytes of the SHA256 of the remaining preprocessed data concatenated + with the IV, using the IV as will be seen on the tunnel endpoint (for + outbound tunnels) or the IV as was seen on the tunnel gateway (for inbound + tunnels) (see below for IV processing).
  • +
  • 0 or more bytes containing random nonzero integers
  • +
  • 1 byte containing 0x00
  • +
  • a series of zero or more { instructions, message } pairs
  • +
+ +

The instructions are encoded with a single control byte, followed by any +necessary additional information. The first bit in that control byte determines +how the remainder of the header is interpreted - if it is not set, the message +is either not fragmented or this is the first fragment in the message. If it is +set, this is a follow on fragment.

+ +

With the first bit being 0, the instructions are:

+
    +
  • 1 byte control byte:
    +      bit 0: is follow on fragment?  (1 = true, 0 = false, must be 0)
    +   bits 1-2: delivery type
    +             (0x0 = LOCAL, 0x01 = TUNNEL, 0x02 = ROUTER)
    +      bit 3: delay included?  (1 = true, 0 = false)
    +      bit 4: fragmented?  (1 = true, 0 = false)
    +      bit 5: extended options?  (1 = true, 0 = false)
    +   bits 6-7: reserved
  • +
  • if the delivery type was TUNNEL, a 4 byte tunnel ID
  • +
  • if the delivery type was TUNNEL or ROUTER, a 32 byte router hash
  • +
  • if the delay included flag is true, a 1 byte value:
    +      bit 0: type (0 = strict, 1 = randomized)
    +   bits 1-7: delay exponent (2^value minutes)
  • +
  • if the fragmented flag is true, a 4 byte message ID
  • +
  • if the extended options flag is true:
    +   = a 1 byte option size (in bytes)
    +   = that many bytes
  • +
  • 2 byte size of the I2NP message or this fragment
  • +
+ +

If the first bit being 1, the instructions are:

+
    +
  • 1 byte control byte:
    +      bit 0: is follow on fragment?  (1 = true, 0 = false, must be 1)
    +   bits 1-6: fragment number
    +      bit 7: is last? (1 = true, 0 = false)
  • +
  • 4 byte message ID (same one defined in the first fragment)
  • +
  • 2 byte size of this fragment
  • +
+ +

The I2NP message is encoded in its standard form, and the +preprocessed payload must be padded to a multiple of 16 bytes.

+ * */ public class FragmentHandler { @@ -165,21 +224,19 @@ public class FragmentHandler { _log.debug("endpoint IV: " + Base64.encode(preV, validLength - HopProcessor.IV_LENGTH, HopProcessor.IV_LENGTH)); Hash v = _context.sha().calculateHash(preV, 0, validLength); + _validateCache.release(ba); - //Hash v = _context.sha().calculateHash(preV, 0, validLength); boolean eq = DataHelper.eq(v.getData(), 0, preprocessed, offset + HopProcessor.IV_LENGTH, 4); if (!eq) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Corrupt tunnel message - verification fails: \n" + Base64.encode(preprocessed, offset+HopProcessor.IV_LENGTH, 4) - + "\n" + Base64.encode(v.getData(), 0, 4)); - if (_log.shouldLog(Log.WARN)) - _log.warn("nomatching endpoint: # pad bytes: " + (paddingEnd-(HopProcessor.IV_LENGTH+4)-1) + "\n" + if (_log.shouldLog(Log.WARN)) { + _log.warn("Corrupt tunnel message - verification fails: " + Base64.encode(preprocessed, offset+HopProcessor.IV_LENGTH, 4) + + " != " + Base64.encode(v.getData(), 0, 4)); + _log.warn("No matching endpoint: # pad bytes: " + (paddingEnd-(HopProcessor.IV_LENGTH+4)-1) + " offset=" + offset + " length=" + length + " paddingEnd=" + paddingEnd + Base64.encode(preprocessed, offset, length)); + } } - _validateCache.release(ba); - if (eq) { int excessPadding = paddingEnd - (HopProcessor.IV_LENGTH + 4 + 1); if (excessPadding > 0) // suboptimal fragmentation From 2cd5c209f5f5c190ddce31d71c2278b6deab7553 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:52:49 +0000 Subject: [PATCH 39/95] unused cleanup --- router/java/src/net/i2p/router/tunnel/TunnelParticipant.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/router/java/src/net/i2p/router/tunnel/TunnelParticipant.java b/router/java/src/net/i2p/router/tunnel/TunnelParticipant.java index a73208e3b..6263f8ec7 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelParticipant.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelParticipant.java @@ -101,8 +101,11 @@ public class TunnelParticipant { } } +/**** private int _periodMessagesTransferred; private long _lastCoallesced = System.currentTimeMillis(); +****/ + /** * take note that the peers specified were able to push us data. hmm, is this safe? * this could be easily gamed to get us to rank some peer of their choosing as quite From f226392c9d74b0e3cc7089e2a7944a73a2bdbffe Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:53:49 +0000 Subject: [PATCH 40/95] static access fix --- router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index e1cec3607..5e4456490 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -54,9 +54,7 @@ class BuildExecutor implements Runnable { // Get stat manager, get recognized bandwidth tiers StatManager statMgr = _context.statManager(); - @SuppressWarnings("static-access") - /* FIXME Accessing static field "BW_CAPABILITY_CHARS" FIXME */ - String bwTiers = _context.router().getRouterInfo().BW_CAPABILITY_CHARS; + String bwTiers = RouterInfo.BW_CAPABILITY_CHARS; // For each bandwidth tier, create tunnel build agree/reject/expire stats for (int i = 0; i < bwTiers.length(); i++) { String bwTier = String.valueOf(bwTiers.charAt(i)); From 72eafe0920d5b0a48663a4dffbf27701428fa9f6 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:54:59 +0000 Subject: [PATCH 41/95] * Tunnels: Reduce the drop probability for TunnelBuildMessages at the OBEP --- .../src/net/i2p/router/tunnel/TunnelDispatcher.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index 681dadec1..6b5457719 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -605,12 +605,17 @@ public class TunnelDispatcher implements Service { if (pctDrop <= 0) return false; // increase the drop probability for OBEP, + // (except lower it for tunnel build messages (type 21)), // and lower it for IBGW, for network efficiency double len = length; - if (type.startsWith("OBEP")) - len *= 1.5; - else if (type.startsWith("IBGW")) + if (type.startsWith("OBEP")) { + if (type.equals("OBEP 21")) + len /= 1.5; + else + len *= 1.5; + } else if (type.startsWith("IBGW")) { len /= 1.5; + } // drop in proportion to size w.r.t. a standard 1024-byte message // this is a little expensive but we want to adjust the curve between 0 and 1 // Most messages are 1024, only at the OBEP do we see other sizes From 579b450029cba2068154e724ac383c2a35360867 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 16:56:38 +0000 Subject: [PATCH 42/95] clean up context usage --- .../router/tunnel/InboundEndpointProcessor.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java index 6c572cb42..7376a5046 100644 --- a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java @@ -1,6 +1,5 @@ package net.i2p.router.tunnel; -import net.i2p.I2PAppContext; import net.i2p.data.ByteArray; import net.i2p.data.Hash; import net.i2p.router.RouterContext; @@ -16,7 +15,7 @@ import net.i2p.util.Log; * */ public class InboundEndpointProcessor { - private I2PAppContext _context; + private RouterContext _context; private Log _log; private TunnelCreatorConfig _config; private IVValidator _validator; @@ -24,10 +23,10 @@ public class InboundEndpointProcessor { static final boolean USE_ENCRYPTION = HopProcessor.USE_ENCRYPTION; private static final ByteCache _cache = ByteCache.getInstance(128, HopProcessor.IV_LENGTH); - public InboundEndpointProcessor(I2PAppContext ctx, TunnelCreatorConfig cfg) { + public InboundEndpointProcessor(RouterContext ctx, TunnelCreatorConfig cfg) { this(ctx, cfg, DummyValidator.getInstance()); } - public InboundEndpointProcessor(I2PAppContext ctx, TunnelCreatorConfig cfg, IVValidator validator) { + public InboundEndpointProcessor(RouterContext ctx, TunnelCreatorConfig cfg, IVValidator validator) { _context = ctx; _log = ctx.logManager().getLog(InboundEndpointProcessor.class); _config = cfg; @@ -73,23 +72,19 @@ public class InboundEndpointProcessor { _cache.release(ba); - // now for a little bookkeeping - RouterContext ctx = null; - if (_context instanceof RouterContext) - ctx = (RouterContext)_context; - if ( (ctx != null) && (_config.getLength() > 0) ) { + if (_config.getLength() > 0) { int rtt = 0; // dunno... may not be related to an rtt if (_log.shouldLog(Log.DEBUG)) _log.debug("Received a " + length + "byte message through tunnel " + _config); for (int i = 0; i < _config.getLength(); i++) - ctx.profileManager().tunnelDataPushed(_config.getPeer(i), rtt, length); + _context.profileManager().tunnelDataPushed(_config.getPeer(i), rtt, length); _config.incrementVerifiedBytesTransferred(length); } return true; } - private void decrypt(I2PAppContext ctx, TunnelCreatorConfig cfg, byte iv[], byte orig[], int offset, int length) { + private void decrypt(RouterContext ctx, TunnelCreatorConfig cfg, byte iv[], byte orig[], int offset, int length) { Log log = ctx.logManager().getLog(OutboundGatewayProcessor.class); ByteArray ba = _cache.acquire(); byte cur[] = ba.getData(); // new byte[HopProcessor.IV_LENGTH]; // so we dont malloc From 2a1d358141e7341c8c88e97a7d42f5e32469ce0c Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 17:10:39 +0000 Subject: [PATCH 43/95] * Profile, DBHistory: - Tweak the rate periods - Add a global fail rate stat - Increase the HashMap sizes --- router/java/src/net/i2p/router/peermanager/DBHistory.java | 8 ++++++-- .../src/net/i2p/router/peermanager/ProfileOrganizer.java | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/router/java/src/net/i2p/router/peermanager/DBHistory.java b/router/java/src/net/i2p/router/peermanager/DBHistory.java index a8e084e49..36b9bc9a3 100644 --- a/router/java/src/net/i2p/router/peermanager/DBHistory.java +++ b/router/java/src/net/i2p/router/peermanager/DBHistory.java @@ -105,6 +105,7 @@ public class DBHistory { */ public RateStat getFailedLookupRate() { return _failedLookupRate; } + /** not sure how much this is used, to be investigated */ public RateStat getInvalidReplyRate() { return _invalidReplyRate; } /** @@ -115,6 +116,7 @@ public class DBHistory { public void lookupSuccessful() { _successfulLookups++; _failedLookupRate.addData(0, 0); + _context.statManager().addRateData("peer.failedLookupRate", 0, 0); _lastLookupSuccessful = _context.clock().now(); } @@ -124,6 +126,7 @@ public class DBHistory { public void lookupFailed() { _failedLookups++; _failedLookupRate.addData(1, 0); + _context.statManager().addRateData("peer.failedLookupRate", 1, 0); _lastLookupFailed = _context.clock().now(); } @@ -136,6 +139,7 @@ public class DBHistory { // Fixme, redefined this to include both lookup and store fails, // need to fix the javadocs _failedLookupRate.addData(0, 0); + _context.statManager().addRateData("peer.failedLookupRate", 0, 0); _lastStoreSuccessful = _context.clock().now(); } @@ -275,9 +279,9 @@ public class DBHistory { private void createRates(String statGroup) { if (_failedLookupRate == null) - _failedLookupRate = new RateStat("dbHistory.failedLookupRate", "How often does this peer to respond to a lookup?", statGroup, new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l }); + _failedLookupRate = new RateStat("dbHistory.failedLookupRate", "How often does this peer to respond to a lookup?", statGroup, new long[] { 10*60*1000l, 60*60*1000l, 24*60*60*1000l }); if (_invalidReplyRate == null) - _invalidReplyRate = new RateStat("dbHistory.invalidReplyRate", "How often does this peer give us a bad (nonexistant, forged, etc) peer?", statGroup, new long[] { 30*60*1000l, 60*60*1000l, 24*60*60*1000l }); + _invalidReplyRate = new RateStat("dbHistory.invalidReplyRate", "How often does this peer give us a bad (nonexistant, forged, etc) peer?", statGroup, new long[] { 30*60*1000l }); _failedLookupRate.setStatLog(_context.statManager().getStatLog()); _invalidReplyRate.setStatLog(_context.statManager().getStatLog()); } diff --git a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java index 20f0fba3d..d249dc968 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileOrganizer.java @@ -97,10 +97,10 @@ public class ProfileOrganizer { _log = context.logManager().getLog(ProfileOrganizer.class); _comp = new InverseCapacityComparator(); _fastPeers = new HashMap(16); - _highCapacityPeers = new HashMap(16); + _highCapacityPeers = new HashMap(32); _wellIntegratedPeers = new HashMap(16); - _notFailingPeers = new HashMap(64); - _notFailingPeersList = new ArrayList(64); + _notFailingPeers = new HashMap(256); + _notFailingPeersList = new ArrayList(256); _failingPeers = new HashMap(16); _strictCapacityOrder = new TreeSet(_comp); _thresholdSpeedValue = 0.0d; @@ -113,6 +113,8 @@ public class ProfileOrganizer { _context.statManager().createRateStat("peer.profileThresholdTime", "How long the reorg takes determining the tier thresholds", "Peers", new long[] { 10*60*1000 }); _context.statManager().createRateStat("peer.profilePlaceTime", "How long the reorg takes placing peers in the tiers", "Peers", new long[] { 10*60*1000 }); _context.statManager().createRateStat("peer.profileReorgTime", "How long the reorg takes overall", "Peers", new long[] { 10*60*1000 }); + // used in DBHistory + _context.statManager().createRateStat("peer.failedLookupRate", "DB Lookup fail rate", "Peers", new long[] { 10*60*1000l, 60*60*1000l, 24*60*60*1000l }); } private void getReadLock() { From 9bf22fb0d336b47dd66d40545eeb0a2356f8a33e Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 19 Dec 2009 17:41:47 +0000 Subject: [PATCH 44/95] stats.jsp tagging --- .../net/i2p/router/web/StatsGenerator.java | 29 +++++++++++-------- apps/routerconsole/java/strings/Strings.java | 19 ++++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 9ac1ae542..4ddc6e6f4 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -40,7 +40,7 @@ public class StatsGenerator { String group = (String)entry.getKey(); Set stats = (Set)entry.getValue(); buf.append("\n"); + buf.append(_(group)).append("\n"); for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) { String stat = (String)statIter.next(); buf.append("