From f16ba8ee06e2b6aca3039dff72c40f1f88bc1472 Mon Sep 17 00:00:00 2001 From: forget Date: Fri, 8 Jan 2010 15:46:22 +0000 Subject: [PATCH 01/72] Tagged missing strings. Retagged (merged) couple strings to have 1 string per sentence instead of translating them chunk by chunk while their internal punctuation marks were outside of the translation scope. --- apps/routerconsole/jsp/configservice.jsp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index e76e03623..5b081b412 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -32,8 +32,7 @@ <% if (System.getProperty("wrapper.version") != null) { %>

<%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%> - <%=intl._("This is useful in some situations")%> - - <%=intl._("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.")%> + <%=intl._("This is useful in some situations - 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.")%> <%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%> <%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%>


@@ -50,8 +49,7 @@ " > " >

<%=intl._("Run on startup")%>

-

<%=intl._("You can control whether I2P is run on startup or not by selecting one of the following options")%> - - <%=intl._("I2P will install (or remove) a service accordingly.")%> +

<%=intl._("You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly.")%> <%=intl._("If you prefer the command line, you can also run the ")%> install_i2p_service_winnt.bat (<%=intl._("or")%> uninstall_i2p_service_winnt.bat).


@@ -63,9 +61,7 @@ <% if (System.getProperty("wrapper.version") != null) { %>

<%=intl._("Debugging")%>

-

At times, it may be helpful to debug I2P by getting a thread dump. - To do so, please select the following option and review the thread dumped to - wrapper.log.

+

<%=intl._("At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log.")%>


" > <% } %>
From e8e6f6f531e9ba909ca01b94e6f36f5a86f30b89 Mon Sep 17 00:00:00 2001 From: forget Date: Fri, 8 Jan 2010 15:57:48 +0000 Subject: [PATCH 02/72] Tagged missing strings. --- .../java/src/net/i2p/router/web/ConfigLoggingHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java index 63a5a799b..bde9b0893 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java @@ -43,9 +43,9 @@ public class ConfigLoggingHelper extends HelperBase { buf.append(prefix).append('=').append(level).append('\n'); } buf.append("
\n"); - buf.append("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN
"); - buf.append("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN
"); - buf.append("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT\n"); + buf.append("" + _("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN") + "
"); + buf.append("" + _("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN") + "
"); + buf.append("" + _("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT") + "\n"); return buf.toString(); } From 9e8f2ce7716d190f30841700ba713966ff7eecd1 Mon Sep 17 00:00:00 2001 From: forget Date: Sat, 9 Jan 2010 02:58:49 +0000 Subject: [PATCH 03/72] Russian translation: Router console (969/969), router help page, eepsite help page --- apps/routerconsole/jsp/help_ru.jsp | 173 ++ apps/routerconsole/locale/messages_ru.po | 3005 ++++++++------------- installer/resources/eepsite_index_ru.html | 94 + 3 files changed, 1416 insertions(+), 1856 deletions(-) create mode 100644 apps/routerconsole/jsp/help_ru.jsp create mode 100644 installer/resources/eepsite_index_ru.html diff --git a/apps/routerconsole/jsp/help_ru.jsp b/apps/routerconsole/jsp/help_ru.jsp new file mode 100644 index 000000000..595aa2ce0 --- /dev/null +++ b/apps/routerconsole/jsp/help_ru.jsp @@ -0,0 +1,173 @@ +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> + +<% + /* + * Do not tag this file for translation - copy it to help_xx.jsp and translate inline. + */ +%> +Консоль маршрутизатора I2P - справка +<%@include file="css.jsi" %> + +<%@include file="summary.jsi" %> + +

Справка маршрутизатора I2P

+ +
+ +

Если Вы хотите помочь в улучшении или переводе документации, если у Вас есть идеи, как еще помочь проекту, пожалуйста, загляните в раздел документации +как стать участником.

+ +

Дальнейшие инструкции доступны в FAQ на www.i2p2.i2p + +
Также, имеет смысл зайти на форум I2P и IRC-каналы проекта.

+ +

Описание статусной панели

+ +

+Для большинства параметров на статусной панели можно настроить построение графиков в целях более подробного анализа. +

+ +

Общая информация

    + +
  • Локальный идентификатор + +Первые 4 символа (24 бита) из Вашего 44-символьного (256-битного) Base64 хеша маршрутизатора. Полный хеш показывается на странице информации о маршрутизаторе. Никогда никому не показывайте хеш своего маршрутизатора, так как в нем содержится информация о Вашем IP-адресе. + + +
  • Версия: + +Версия Вашего I2P маршрутизатора. + +
  • Время: + +Текущее время (UTC) и величина рассинхронизации времени (если есть). Для правильной работы I2P нужно точное системное время. Пожалуйста, поправьте системное время, если расхождение приближается к 1-ой минуте. + +
  • Доступность: + +Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на странице сетевых настроек. + +
+ +

Пиры

    + +
  • Активные: + +Первое число — это количество пиров, с которыми происходил обмен сообщениями за последние несколько минут. Значение может меняться от 8-10 до нескольких сотен в зависимости от Вашего общего трафика, доли транзитного трафика, локально создаваемого трафика. Второе число — это количество пиров, наблюдавшихся за последний час. Не волнуйтесь, если эти числа сильно меняются. Это нормально. [Включить построение графика]. + +
  • Быстрые: + +Количество пиров, которые используются Вашим маршрутизатором для построения клиентских туннелей. В общем случае это значение будет в диапазоне 8-15. Список быстрых пиров можно посмотреть на странице профили. [Включить построение графика]. + +
  • Высокоёмкие: + +Количество пиров, которые используются Вашим маршрутизатором для построения части зондирующих туннелей. В общем случае это значение будет в диапазоне 8-25. Быстрые пиры входят в группу высокоёмких. Список высокоёмких пиров можно посмотреть на странице профили. [Включить построение графика]. + +
  • Хорошо интегрированные: + +Количество пиров, которые используются Вашим маршрутизатором для запросов к сетевой базе данных. Обычно в таком качестве выступают «floodfill» пиры. Список хорошо интегрированных пиров можно посмотреть в конце страницы профили. + +
  • Известные: + +Это общее количество пиров известных Вашему маршрутизатору. Их список показывается на странице обзор сетевой базы данных. Это значение может варьироваться от десятков до тысяч. Значение не соответствует реальному полному размеру сети, так как маршрутизатору в сети I2P достаточно знать лишь часть других маршрутизаторов. Значение зависит от Вашего общего трафика, доли транзитного трафика, локально создаваемого трафика. + +
+ +

Трафик (входящий/исходящий)

+ +
+Все значения показаны в байтах/секунду. Настроить ограничения трафика можно на странице сетевых настроек. +Для трафика по умолчанию включено построение графиков.
+ +

Локальные туннели

+ +
+Локальные приложения, выходящие в I2P сеть через Ваш маршрутизатор. Это могут быть клиенты, запущенные через менеджер туннелей, внешние программы, подключающиеся через интерфейсы SAM, BOB или напрямую через I2CP. +
+ +

Туннели (входящие/исходящие)

+ +
+Список туннелей можно посмотреть на странице обзор туннелей.
+ +
    + +
  • Зондирующие: +Туннели, созданные Вашим маршрутизатором для связи с floodfill-пирами, тестирования уже существующих туннелей и построения новых.
    + +
  • Клиентские: +Туннели, созданные Вашим маршрутизатором для каждого локального клиента. + +
  • Транзитные: + +Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице сетевых настроек. Также можно задать точный ограничитель количества через параметр router.maxParticipatingTunnels=nnn на странице дополнительных настроек. + +[Включить построение графика]. + + +
+ +

Занятость

+ +
Некоторые базовые индикаторы перегруженности маршрутизатора:
+
    + +
  • Задержка заданий: + +Как долго задания ожидают выполнения. Содержимое очереди можно посмотреть на странице очередь заданий. К сожалению, есть ещё несколько внутренних очередей, статус которых в консоли не показывается. Задержка заданий в нормальной ситуации должна быть нулевой. Если она систематически выше 500ms, то либо Ваш компьютер слишком медленный, либо с Вашим маршрутизатором проблемы. + +[Включить построение графика]. + +
  • Задержка сообщений: + +Как долго исходящие сообщения находятся в очереди. В нормальном случае эта задержка должна быть не выше нескольких сотен миллисекунд. Если она систематически выше 1000ms, то либо Ваш компьютер слишком медленный, либо Вам следует перенастроить ограничение скорости, либо локальные клиенты (чаще всего bittorrent) посылают слишком много данных. Для таких клиентов имеет смысл ограничить скорость. + +[Включить построение графика] (transport.sendProcessingTime). + +
  • Задержка туннелей: + +Время прохождения сигнала при проверке туннеля (сообщение посылается от клиентского туннеля до зондирующего или в обратном направлении). Это значение в нормальном случае должно быть ниже 5 секунд. Если оно систематически выше, то либо Ваш компьютер слишком медленный, либо Вам следует перенастроить ограничение скорости, либо с сетью что-то не в порядке. + +[Включить построение графика] (tunnel.testSuccessTime). + +
  • Очередь запросов: + +Количество пока необработанных запросов от других маршрутизаторов о построении транзитных туннелей через Ваш маршрутизатор. В нормальном случае это значение должно быть около нуля. Если оно систематически выше, то Ваш компьютер слишком медленный и Вам следует настроить меньшую долю транзитного трафика. + +
  • Принимаем/Не принимаем туннели: + +Состояние Вашего маршрутизатора по приему или отклонению запросов от других маршрутизаторов о построении туннелей. Ваш маршрутизатор может принимать все запросы, принимать/отклонять часть запросов или отклонять все запросы, в зависимости от сетевой загрузки, нагрузки на процессор и необходимости резервировать полосу пропускания для локальных клиентов. + +
+ +

Лицензии

+ +

Код I2P-маршрутизатора (router.jar) и его SDK (i2p.jar) находятся в общественном достоянии с некоторыми исключениями:

+ +
    +
  • Код для алгоритмов ElGamal и DSA — под лицензией BSD, автор: TheCrypto
  • +
  • Код для алгоритмов SHA256 и HMAC-SHA256 — под лицензией MIT, автор: Legion из Bouncycastle
  • +
  • Код для алгоритма AES — под лицензией Cryptix (MIT), авторы: Cryptix team
  • +
  • Код для SNTP — под лицензией BSD, автор: Adam Buckley
  • +
  • Всё остальное полностью в общественном достоянии, авторы: jrandom, mihi, hypercubus, oOo, ugha, duck, shendaras, и другие.
  • +
+ +

Поверх I2P маршрутизатора работают различные приложения-клиенты, каждое со своим набором лицензий и зависимостей. Например, эта страница входит в приложение консоли маршрутизатора, которое сделано из усеченной версии Jetty (в сборку не включены демонстрационные приложения и прочие дополнения, настройки упрощены). Jetty позволяет запускать в составе маршрутизатора стандартные JSP/сервлеты. Jetty использует javax.servlet.jar разработанный в составе проекта Apache (http://www.apache.org/). +

+ +

Ещё одно приложение на этой странице — I2PTunnel (а тут его вебинтерфейс). Автор mihi, лицензия GPL. I2PTunnel занимается туннелированнием обычного TCP/IP трафика через I2P (может применяться для eepproxy и irc-прокси). susimail — почтовый клиент с вебинтерфейсом, автор susi23, лицензия GPL. Адресная книга помогает управлять содержимым Ваших hosts.txt файлов (подробнее см. ./addressbook/), автор Ragnarok.

+ +

В поставку маршрутизатора включен SAM интерфейс, автор human, приложение в общественном достоянии. SAM предназначен для использования приложениями-клиентами, такими как bittorrent-клиенты. Маршрутизатором используется оптимизированная под разные PC-архитектуры библиотека для вычислений с большими числами – jbigi, которая в свою очередь использует библиотеку GMP (LGPL лицензия). Вспомогательные приложения для Windows созданы с использованием Launch4J, а инсталлятор собран при помощи IzPack. Подробнее о других доступных приложениях и их лицензиях смотрите на странице I2P Software Licenses. Исходный код I2P маршрутизатора и идущих в комплекте приложений можно найти на нашей странице загрузки.

+ + +

История версий

+ + + <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "history.txt"); %> + + + + + +

Более подробный список изменений можно найти в файле history.txt в каталоге Вашего I2P. +


diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index 684fa78b9..1eb7859df 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,1668 +8,1377 @@ 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" +"POT-Creation-Date: 2010-01-06 20:14+0000\n" +"PO-Revision-Date: 2010-01-09 05:50+0300\n" +"Last-Translator: 4get \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" +"X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n" #: ../../../router/java/src/net/i2p/router/Blocklist.java:117 -#, fuzzy, java-format +#, java-format msgid "Banned by router hash: {0}" -msgstr "Забанен маршрутизатора хэш: {0}" +msgstr "Забанен по хэшу маршрутизатора: {0}" #: ../../../router/java/src/net/i2p/router/Blocklist.java:119 -#, fuzzy msgid "Banned by router hash" -msgstr "Забанен маршрутизатора хэш" +msgstr "Забанен по хэшу маршрутизатора" #: ../../../router/java/src/net/i2p/router/Blocklist.java:664 -#, fuzzy msgid "IP banned" -msgstr "IP запрещен" +msgstr "IP заблокирован" #: ../../../router/java/src/net/i2p/router/Blocklist.java:734 -#, fuzzy, java-format +#, java-format msgid "IP banned by blocklist.txt entry {0}" -msgstr "IP запрещен в blocklist.txt этой записей {0}" +msgstr "IP заблокирован по записи в blocklist.txt: {0}" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:91 -#, fuzzy msgid "Rejecting tunnels: Shutting down" -msgstr "Отвергая туннели: Выключение" +msgstr "Не принимаем туннели: Маршрутизатор в процессе остановки" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:140 -#, fuzzy msgid "Rejecting tunnels: High message delay" -msgstr "Отвергая туннели: Высокая сообщения задержка" +msgstr "Не принимаем туннели: Слишком большая задержка сообщений" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:176 -#, fuzzy msgid "Rejecting most tunnels: High number of requests" -msgstr "Отвергая большинстве туннелей: Высокое число запросов" +msgstr "Не принимаем большую часть туннелей: Слишком много запросов" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:232 -#, fuzzy msgid "Rejecting tunnels: Limit reached" -msgstr "Отвергая туннелей: дошел до предела" +msgstr "Не принимаем туннели: Достигнут предел количества туннелей" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:300 -#, fuzzy msgid "Rejecting tunnels: Bandwidth limit" -msgstr "Отвергая туннели: ограничить пропускную способность" +msgstr "Не принимаем туннели: Достигнут предел пропускной способности" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:370 -#, fuzzy msgid "Rejecting most tunnels: Bandwidth limit" -msgstr "Отвергая наиболее туннели: ограничить пропускную способность" +msgstr "Не принимаем большую часть туннелей: Достигнут предел пропускной способности" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:374 -#, fuzzy msgid "Accepting most tunnels" -msgstr "Принимая большинство туннели" +msgstr "Принимаем большую часть туннелей" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:376 -#, fuzzy msgid "Accepting tunnels" -msgstr "Принимая туннелей" +msgstr "Принимаем туннели" #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:486 -#, fuzzy msgid "Rejecting tunnels" -msgstr "Отвергая туннелей" +msgstr "Не принимаем туннели" #: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 -#, fuzzy msgid "No transports (hidden or starting up?)" -msgstr "Нет транспорты (скрытой или начинать?)" +msgstr "Нет транспортных протоколов (в скрытом режиме или запущен недавно?)" #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 -#, fuzzy msgid "Unreachable on any transport" -msgstr "Недоступные на любом транспорте" +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 +#, java-format msgid "Excessive clock skew: {0}" -msgstr "Чрезмерное часы не совпадающие по времени: {0}" +msgstr "Чрезмерное расхождение времени: {0}" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:128 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:137 msgid "Dropping tunnel requests: Too slow" -msgstr "Удаление туннель просит: слишком медленный" +msgstr "Игнорируем запросы туннелей: Время выполнения превысило ожидаемое" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:340 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:354 msgid "Dropping tunnel requests: Overloaded" -msgstr "Удаление туннель просит: Перегруженный" +msgstr "Игнорируем запросы туннелей: Слишком высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:499 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:521 msgid "Rejecting tunnels: Request overload" -msgstr "Отвергая туннелей: Запрос перегрузки" +msgstr "Не принимаем туннели: Слишком много запросов" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:524 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:546 msgid "Rejecting tunnels: Connection limit" -msgstr "Отвергая туннелей: Подключение к пределу" +msgstr "Не принимаем туннели: Достигнут предел количества соединений" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:725 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:748 msgid "Dropping tunnel requests: High load" -msgstr "Удаление туннель просит: Высокие нагрузки" +msgstr "Игнорируем запросы туннелей: Высокая нагрузка" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:734 -#, fuzzy +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:757 msgid "Dropping tunnel requests: Queue time" -msgstr "Удаление туннель просит: Очередь время" +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 "Фолклендские (Мальвинские)" +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 "Северные Марианские о-ва" +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 "Мозамбик" +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 "Папуа-Новая Гвинея" +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 "Русская Федерация" +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 "Сан - Марине" +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 "Объединенная Республика Танзания" +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 "Соединенные Штаты Америки" +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/CSSHelper.java:54 #: ../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" +msgstr "Консоль маршрутизатора I2P" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 -#, fuzzy msgid "Error updating the configuration - please see the error logs" -msgstr "Ошибка при обновлении конфигурации - смотрите логи ошибок" +msgstr "Не удалось обновить настройки — загляните в журнал ошибок" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:251 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:263 msgid "Configuration saved successfully" -msgstr "Конфигурация успешно сохранены" +msgstr "Настройки сохранены" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:253 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:265 msgid "Error saving the configuration (applied but not saved) - please see the error logs" -msgstr "Ошибка при сохранении конфигурации (применяется, но не сохранили) - пожалуйста, смотрите логи ошибок" +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 "Сохраните Настройки Клиента" +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 Конфигурацию" +msgstr "Сохранить настройки веб-апплетов" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:67 -#, fuzzy msgid "Start" -msgstr "Включать" +msgstr "Запустить" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:68 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 -#, fuzzy msgid "Unsupported" -msgstr "Неподдерживаемый" +msgstr "Не поддерживается" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:83 -#, fuzzy msgid "Client configuration saved successfully - restart required to take effect." -msgstr "Настройка клиента успешно сохранены - Требуется перезагрузка вступили в силу." +msgstr "Настройки клиентов сохранены, требуется перезагрузка маршрутизатора для вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 -#, fuzzy msgid "Bad client index." -msgstr "Индекс плохой клиент." +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 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 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 "началось" +msgstr "запущен" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:111 -#, fuzzy msgid "WebApp configuration saved successfully - restart required to take effect." -msgstr "Конфигурация веб-приложений успешно сохранены - Требуется перезагрузка вступили в силу." +msgstr "Настройки веб-апплетов сохранены, требуется перезагрузка маршрутизатора для вступления в силу." #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 -#, fuzzy msgid "WebApp" -msgstr "Веб-приложение" +msgstr "Веб-апплет" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:131 -#, fuzzy msgid "Failed to start" -msgstr "Сбой при запуске" +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 "Класс и параметры" +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 "Запустить при следующем запуске системы?" +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ейчас" +msgstr "Запустить вручную" #: ../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 "Вы должны ввести назначения" +msgstr "Вы должны ввести адрес назначения" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 -#, fuzzy msgid "You must enter a key" -msgstr "Вы должны ввести ключевые" +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 "добавить в связку ключей" +msgstr "добавлен в связку ключей" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 -#, fuzzy msgid "Invalid destination or key" -msgstr "Invalid destination or key" +msgstr "Некорректный адрес назначения или ключ" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 -#, fuzzy msgid "removed from keyring" -msgstr "удалены из связку ключей" +msgstr "удален из связки ключей" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 -#, fuzzy msgid "not found in keyring" -msgstr "Не найдено в связку ключей" +msgstr "не найден в связке ключей" #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 -#, fuzzy msgid "Invalid destination" -msgstr "Invalid destination" +msgstr "Некорректный адрес назначения" +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:46 +msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "Впишите выше дополнительные настройки уровней детальности журнала. Пример: net.i2p.router.tunnel=WARN" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:47 +msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" +msgstr "Либо добавьте эти записи в файл logger.config. Пример: logger.record.net.i2p.router.tunnel=WARN" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "Поддерживаемые уровни: DEBUG, INFO, WARN, ERROR, CRIT" + +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -#, fuzzy msgid "CRIT" -msgstr "КРИТИЧЕСКИЕ" +msgstr "CRIT" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -#, fuzzy msgid "DEBUG" -msgstr "ОТЛАДКА" +msgstr "DEBUG" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -#, fuzzy msgid "ERROR" -msgstr "ОШИБКА" +msgstr "ERROR" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -#, fuzzy msgid "INFO" -msgstr "ИНФОРМАЦИЯ" +msgstr "INFO" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -#, fuzzy msgid "WARN" -msgstr "ПРЕДУПРЕЖДЕНИЕ" +msgstr "WARN" #: ../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 "Сервис" +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 +#: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "Туннели" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#, fuzzy msgid "UI" -msgstr "Интерфейс Пользователя" +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 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216 msgid "Update" msgstr "Обновление" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#, fuzzy msgid "Clients" -msgstr "Клиенты" +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лючей" +msgstr "Ключи" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#, fuzzy msgid "Logging" -msgstr "Логи" +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 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:234 +#: ../java/strings/Strings.java:67 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 "Расширенный" +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/ConfigNetHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:261 #: ../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/config_jsp.java:502 #: ../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 "Сохранить изменения" +msgstr "Сохранить настройки" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:119 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 msgid "Rechecking router reachability..." -msgstr "Повторная проверка доступности маршрутизатора..." +msgstr "Перепроверяем доступность маршрутизатора..." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:148 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:150 msgid "Updating IP address" -msgstr "Обновление IP-адреса" +msgstr "Обновляем IP-адрес" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:166 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:168 msgid "Disabling TCP completely" -msgstr "Отключение TCP полностью" +msgstr "Полностью отключаем использование TCP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:170 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:172 msgid "Updating inbound TCP address to" -msgstr "Обновление входящего в адрес TCP" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:174 -#, fuzzy -msgid "Disabling inbound TCP" -msgstr "Отключение входящие TCP" +msgstr "Адрес для входящих TCP соединений изменен на" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 -#, fuzzy +msgid "Disabling inbound TCP" +msgstr "Отключаем использование TCP на вход" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:178 msgid "Updating inbound TCP address to auto" -msgstr "Обновление входящего адреса TCP автоматически" +msgstr "Адрес для входящих TCP соединений будет определяться автоматически" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:185 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:187 msgid "Updating inbound TCP port to" -msgstr "Обновление входящего порта TCP для" +msgstr "Порт для входящих TCP соединений изменен на" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:188 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 msgid "Updating inbound TCP port to auto" -msgstr "Обновление входящего порта TCP автоматически" +msgstr "Порт для входящих TCP соединений будет выбираться автоматически" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 msgid "Updating UDP port from" -msgstr "Обновление от UDP порта" +msgstr "Порт для UDP соединений изменен с" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:200 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 msgid "to" -msgstr "к" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:216 -#, fuzzy -msgid "Gracefully restarting into Hidden Router Mode" -msgstr "Правильно перезапуска в скрытые режиме маршрутизатора" +msgstr "на" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:218 -#, fuzzy -msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "Правильно перезапуска для выхода Скрытый режим маршрутизатора" +msgid "Gracefully restarting into 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:220 +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "Плавная перезагрузка для выхода из скрытого режима" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:229 -#, fuzzy +msgid "Enabling UPnP, restart required to take effect" +msgstr "UPnP включен, необходима перезагрузка маршрутизатора" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 msgid "Disabling UPnP, restart required to take effect" -msgstr "Отключение UPnP, необходима перезагрузка вступили в силу" +msgstr "UPnP выключен, необходима перезагрузка маршрутизатора" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:235 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:239 +msgid "Enabling laptop mode" +msgstr "Включение laptop mode" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:241 +msgid "Disabling laptop mode" +msgstr "Выключение laptop mode" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 msgid "Requiring SSU introducers" -msgstr "Требование SSU поручителями" +msgstr "Запрашиваем SSU-посредников" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:275 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:288 msgid "Gracefully restarting I2P to change published router address" -msgstr "Правильно перезапуска I2P изменить опубликован адрес маршрутизатора" +msgstr "Плавная перезагрузка для изменения публикуемого адреса" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:293 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:308 msgid "Updating bandwidth share percentage" -msgstr "Обновление пропускную процентной доли" +msgstr "Обновление доли транзитного трафика" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:363 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:378 msgid "Updated bandwidth limits" -msgstr "Обновлен пределы полосы пропускания" +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 "неизвестный" +msgstr "неизвестен" -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:165 -#, fuzzy +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 msgid "bits per second" -msgstr "бит в секунду" +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 "Запрет пир пока маршрутизатора перезагружается" +msgstr "Забанить пира до перезагрузки маршрутизатора" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 -#, fuzzy, java-format +#, java-format msgid "Manually banned via {0}" -msgstr "Вручную запретили через {0}" +msgstr "Забанен вручную через {0}" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 @@ -1677,1813 +1386,1604 @@ msgstr "Вручную запретили через {0}" #: ../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 "Запрещена пока перезагрузка" +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 "Неверное сверстников" +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 "Отмена запрета пира" +msgstr "Разбанить пира" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 -#, fuzzy msgid "unbanned" -msgstr "запрет удален" +msgstr "разбанен" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 -#, fuzzy msgid "is not currently banned" -msgstr "в настоящее время не запрещена" +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 "Настройка дополнительных потоков профиля" +msgstr "Настроить бонусы для этого пира" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 -#, fuzzy msgid "Bad speed value" -msgstr "Неправильное значение скорости" +msgstr "Некорректное значение скорости" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 -#, fuzzy msgid "Bad capacity value" -msgstr "Неправильное значение потенциала" +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 "Выключить сразу" +msgstr "Выключить немедленно" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 -#, fuzzy msgid "Cancel shutdown" -msgstr "Отмена выключения" +msgstr "Отменить выключение" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 -#, fuzzy msgid "Cancel restart" -msgstr "Отмена перезагрузка" +msgstr "Отменить перезагрузку" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 -#, fuzzy msgid "Restart immediately" -msgstr "Перезагрузка сразу" +msgstr "Перезагрузить немедленно" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 -#, fuzzy msgid "Restart" -msgstr "Перезагрузка" +msgstr "Перезагрузить" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46 -#, fuzzy msgid "Shutdown" -msgstr "Выключение" +msgstr "Выключить" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 -#, fuzzy msgid "Restart imminent" -msgstr "Перезагрузка сразу" +msgstr "Неотменяемая перезагрузка" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 -#, fuzzy msgid "Shutdown imminent" -msgstr "Выключения неминуемого" +msgstr "Неотменяемое выключение" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 -#, fuzzy, java-format +#, java-format msgid "Shutdown in {0}" msgstr "Выключение через {0}" #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 -#, fuzzy, java-format +#, 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 "Грациозно выключить" +msgstr "Выключить плавно" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 -#, fuzzy msgid "Graceful shutdown initiated" -msgstr "Изящный выключение инициативе" +msgstr "Запущено плавное выключение" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 -#, fuzzy msgid "Shutdown immediately! boom bye bye bad bwoy" -msgstr "выключения немедленно! бум пока пока плохой мальчик" +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 "Отмена изящные выключении" +msgstr "Отменить плавное выключение" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 -#, fuzzy msgid "Graceful shutdown cancelled" -msgstr "Изящный выключения отменен" +msgstr "Плавное отключение отменено" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:306 msgid "Graceful restart" -msgstr "Мягкого перезапуска" +msgstr "Перезагрузить плавно" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 -#, fuzzy msgid "Graceful restart requested" -msgstr "Мягкого перезапуска просил" +msgstr "Запущена плавная перезагрузка" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:310 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308 msgid "Hard restart" -msgstr "Жесткая перезагрузка" +msgstr "Перезагрузить немедленно" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 -#, fuzzy msgid "Hard restart requested" -msgstr "Жесткая перезагрузка просил" +msgstr "Запрошена быстрая перезагрузка" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 -#, fuzzy msgid "Rekey and Restart" -msgstr "Восстановить Ключ и Перезагрузите" +msgstr "Сменить ключ и перезагрузить" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 -#, fuzzy msgid "Rekeying after graceful restart" -msgstr "Повторный ввод после мягкого перезапуска" +msgstr "Смена ключа после плавной перезагрузки" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 -#, fuzzy msgid "Rekey and Shutdown" -msgstr "Восстановить Ключ и Выключении" +msgstr "Сменить ключ и выключить" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 -#, fuzzy msgid "Rekeying after graceful shutdown" -msgstr "Повторный ввод после выключения изящный" +msgstr "Смена ключа после плавного выключения" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 msgid "Run I2P on startup" -msgstr "Запуск I2P при запуске" +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336 msgid "Don't run I2P on startup" -msgstr "Не запускать при запуске I2P" +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 msgid "Dump threads" -msgstr "Сваливать Память" +msgstr "Вывести список тредов" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 msgid "Show systray icon" -msgstr "Показать системном трее значок" +msgstr "Показать значок статуса" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -#, fuzzy msgid "System tray icon enabled." -msgstr "Значок на панели задач включена." +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 "Значок на панели задач функция не поддерживается на этой платформе. Извините!" +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 "Предупреждение: Не удается связаться с менеджером системный трей" +msgstr "Предупреждение: Не удалось соединиться с менеджером области уведомлений" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 msgid "Hide systray icon" -msgstr "Скрыть системном трее значок" +msgstr "Спрятать значок статуса" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 -#, fuzzy msgid "System tray icon disabled." -msgstr "Значок на панели задач отключен." +msgstr "Выключен значок-индикатор статуса в области уведомлений." #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 msgid "View console on startup" -msgstr "Открыть консоль при старте" +msgstr "Открывать веб-консоль при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 -#, fuzzy msgid "Console is to be shown on startup" -msgstr "Консоль будет показано при старте" +msgstr "Веб-консоль будет открываться при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:366 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 msgid "Do not view console on startup" -msgstr "Не рассматривают консоль при старте" +msgstr "Не открывать веб-консоль при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 -#, fuzzy msgid "Console is not to be shown on startup" -msgstr "Консоли не будет показано при старте" +msgstr "Веб-консоль не будет открываться при запуске I2P" #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 -#, fuzzy msgid "Service installed" -msgstr "Установлена служба" +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 "Предупреждение: Не удается удалить службу" +msgstr "Предупреждение: не удалось удалить службу" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 -#, fuzzy msgid "Stat filter and location updated successfully to" -msgstr "Стат фильтра и расположения успешно обновлена до" +msgstr "Обновлены настройки файла и фильтра статистики. Новый фильтр" #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 -#, fuzzy msgid "Failed to update the stat filter and location" -msgstr "Не удалось обновить фильтра стат и местоположение" +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 должно быть отражено здесь и на графов странице " +msgstr "Список графиков обновлен, для обновления содержимого страницы графиков может потребоваться до 60 секунд." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:137 -#, fuzzy msgid "Updated settings for all pools." -msgstr "Обновление настройки для всех бассейнов." +msgstr "Обновлены настройки для всех пулов." #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 -#, fuzzy msgid "Exploratory tunnel configuration saved successfully." -msgstr "Разведочный конфигурации туннеля успешно сохранены." +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 "Ошибка при сохранении конфигурации (применяется, но не сохранили) - пожалуйста, смотрите логи ошибок." +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 "туннели" +msgstr "туннелей" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:40 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 msgid "Exploratory tunnels" -msgstr "Разведочные туннели" +msgstr "Зондирующие туннели" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:60 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 msgid "Client tunnels for" -msgstr "Клиентские туннели для" +msgstr "Клиентские туннели для:" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 -#, fuzzy msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "АНОНИМНОСТЬ ПРЕДУПРЕЖДЕНИЕ - Настройки включают 0-хоп туннелей." +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." +msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки задают 1-хоповые туннели." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 -#, fuzzy msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "ИСПОЛНЕНИИ ВНИМАНИЕ - настройки включают в себя очень длинные туннели." +msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 -#, fuzzy msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "ИСПОЛНЕНИИ ВНИМАНИЕ - настройки включают в больших количествах туннель." +msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества туннелей." #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 -#, fuzzy msgid "Inbound" -msgstr "Входящий" +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 "Лесото" +msgstr "Длина" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 -#, fuzzy msgid "Randomization" -msgstr "Рандомизации" +msgstr "Разброс" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 -#, fuzzy msgid "Quantity" -msgstr "Колич." +msgstr "Количество" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 -#, fuzzy msgid "Backup quantity" -msgstr "Резервное копирование количестве" +msgstr "Резервное количество" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 -#, fuzzy msgid "Inbound options" -msgstr "Входящий конфигурации" +msgstr "Дополнительные параметры для входящих" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 -#, fuzzy msgid "Outbound options" -msgstr "Исходящие конфигурации" +msgstr "Дополнительные параметры для исходящих" #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 -#, fuzzy msgid "Theme change saved." -msgstr "Изменение сохраненной тема." +msgstr "Изменение темы оформления сохранено." #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 -#, fuzzy msgid "Refresh the page to view." -msgstr "Обновите страницу, чтобы просмотреть." +msgstr "Обновите страницу для просмотра." #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -#, fuzzy msgid "English" -msgstr "Английский" +msgstr "English" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -#, fuzzy msgid "French" -msgstr "Французский" +msgstr "Français" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -#, fuzzy msgid "German" -msgstr "Немецкий" +msgstr "Deutsch" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -#, fuzzy msgid "Chinese" -msgstr "Китайский" +msgstr "中文" #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -#, fuzzy msgid "Dutch" -msgstr "Голландский" +msgstr "Nederlands" #: ../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 "Шведский" +msgstr "Svenska" #: ../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 "Проверка обновлений" +msgstr "Проверить обновления" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:63 -#, fuzzy msgid "Update available, attempting to download now" -msgstr "Доступно обновление, пытаясь загрузить сейчас" +msgstr "Доступно обновление, пытаемся загрузить" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:65 -#, fuzzy msgid "Update available, click button on left to download" -msgstr "Доступные обновления, нажмите кнопку на левой скачать" +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" +msgstr "Новый URL новостей" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:83 -#, fuzzy msgid "Updating proxy host to" -msgstr "Обновление прокси-сервера для" +msgstr "Новый адрес I2P-прокси" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:91 -#, fuzzy msgid "Updating proxy port to" -msgstr "Обновление прокси порта" +msgstr "Новый порт I2P-прокси" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 -#, fuzzy msgid "Updating refresh frequency to" -msgstr "Обновление частоту обновления для" +msgstr "Новый интервал проверки обновлений" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 -#, fuzzy msgid "Updating update policy to" -msgstr "Updating update rules to" +msgstr "Новый режим обновлений" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 -#, fuzzy msgid "Updating update URLs." -msgstr "Обновляет обновления URL-адресов." +msgstr "Новые URL обновлений" #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:128 -#, fuzzy msgid "Updating trusted keys." -msgstr "Обновление доверенных ключей." +msgstr "Обновление списка доверенных ключей." #: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:136 -#, fuzzy msgid "Updating unsigned update URL to" -msgstr "Обновление неподписанных URL обновления" +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 "Каждый" +msgstr "Каждые" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90 #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:92 -#, fuzzy msgid "Notify only" -msgstr "Сообщите только" +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 "Скачать и проверить только" +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 "Скачать, проверки и перезапуск" +msgstr "Скачать, проверить и обновить I2P" #: ../java/src/net/i2p/router/web/GraphHelper.java:107 -#, fuzzy msgid "Configure Graph Display" -msgstr "Конфигурация Диаграмм Дисплея" +msgstr "Настройка показа графиков" #: ../java/src/net/i2p/router/web/GraphHelper.java:107 -#, fuzzy msgid "Select Stats" -msgstr "Выберите статистику" +msgstr "Выбрать параметры" #: ../java/src/net/i2p/router/web/GraphHelper.java:109 -#, fuzzy msgid "Periods" -msgstr "Периоды" +msgstr "Количество интервалов" #: ../java/src/net/i2p/router/web/GraphHelper.java:110 -#, fuzzy msgid "Plot averages" -msgstr "Среднее значение диаграммы" +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332 msgid "or" msgstr "или" #: ../java/src/net/i2p/router/web/GraphHelper.java:111 -#, fuzzy msgid "plot events" -msgstr "показания диаграммы" +msgstr "строить график количества событий" #: ../java/src/net/i2p/router/web/GraphHelper.java:112 -#, fuzzy msgid "Image sizes" -msgstr "Размеры изображения" +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 "пиксели" +msgstr "пикселей" #: ../java/src/net/i2p/router/web/GraphHelper.java:115 -#, fuzzy msgid "Refresh delay" -msgstr "Задержка обновления" +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 "минуты" +msgstr "минут(ы)" #: ../java/src/net/i2p/router/web/GraphHelper.java:116 -#, fuzzy msgid "Redraw" msgstr "Перерисовать" +#: ../java/src/net/i2p/router/web/LogsHelper.java:13 +#: ../java/src/net/i2p/router/web/LogsHelper.java:37 +msgid "File location" +msgstr "Путь к файлу журнала" + #: ../java/src/net/i2p/router/web/NetDbRenderer.java:59 -#, fuzzy msgid "Network Database RouterInfo Lookup" -msgstr "Поиск Информации о Маршрутизаторе Базы Данных Сети" +msgstr "Просмотр RouterInfo" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 -#, fuzzy +#: ../java/strings/Strings.java:68 msgid "Router" msgstr "Маршрутизатор" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 -#, fuzzy msgid "not found in network database" -msgstr "не найдено в сети баз данных" +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 "База Данных Содержание" +msgstr "Просмотр сетевой базы данных" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 -#, fuzzy msgid "View RouterInfo" -msgstr "Открыть Маршрутизатор Информация" +msgstr "Показать список RouterInfo" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 -#, fuzzy msgid "LeaseSets" -msgstr "АрендаНаборы" +msgstr "Список LeaseSet" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 -#, fuzzy msgid "LeaseSet" -msgstr "АрендаНаборы" +msgstr "LeaseSet" #: ../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 "Неопубликованные" +msgstr "Неопубликованный" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:104 -#, fuzzy msgid "Destination" -msgstr "Направление" +msgstr "Адрес назначения" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:114 -#, fuzzy, java-format +#, java-format msgid "Expires in {0}" -msgstr "Срок истекает в {0}" +msgstr "Истекает через {0}" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:116 -#, fuzzy, java-format +#, 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 "Шлюз" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 -#, fuzzy msgid "Lease" -msgstr "Аренда" +msgstr "Lease" #: ../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 "Смотреть на Аренду-Наборы" +msgstr "Показать список LeaseSet" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 -#, fuzzy msgid "Not initialized" -msgstr "Не инициализируется" +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 "Показать все маршрутизаторы" +msgstr "Показать полный список" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:149 -#, fuzzy msgid "Show all routers with full stats" -msgstr "Показать все маршрутизаторы с полной статистики" +msgstr "Показать полный список с полной статистикой" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:184 -#, fuzzy msgid "Network Database Router Statistics" -msgstr "Сетевая База Данных Статистики Маршрутизатора" +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 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 msgid "Version" msgstr "Версия" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:204 -#, fuzzy msgid "Transports" -msgstr "Транспортные" +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 "Наша информация" +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 "Полная запись" +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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 msgid "Hidden" -msgstr "Скрыто" +msgstr "Скрытый" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 -#, fuzzy msgid "Updated" -msgstr "Обновлено" +msgstr "Обновленный" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 -#, fuzzy, java-format +#, 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 "Опубликован" +msgstr "Опубликовано" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:275 -#, fuzzy msgid "Address(es)" -msgstr "Адреса" +msgstr "Адрес(а)" #: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 -#, fuzzy msgid "Hidden or starting up" -msgstr "Скрытая или запуском" +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 с поручителями" +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 с поручителями" +msgstr "NTCP и SSU через посредников" #: ../java/src/net/i2p/router/web/NewsFetcher.java:80 -#, fuzzy, java-format +#, java-format msgid "News last updated {0} ago." -msgstr "Новости Последнее обновление {0} назад." +msgstr "Новости последний раз обновлялись {0} назад." #: ../java/src/net/i2p/router/web/NewsFetcher.java:86 -#, fuzzy, java-format +#, java-format msgid "News last checked {0} ago." -msgstr "Новости Последняя проверка: {0} назад." +msgstr "Новости последний раз проверялись {0} назад." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 -#, fuzzy msgid "Peer Profiles" -msgstr "Профили Пиров" +msgstr "Профили пиров" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 -#, fuzzy, java-format +#, java-format msgid "Showing {0} recent profiles." -msgstr "Показаны {0} последних профилей." +msgstr "Показано {0} недавно обновленных профилей" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 -#, fuzzy, java-format +#, java-format msgid "Hiding {0} older profiles." -msgstr "Сокрытие {0} взрослыми профилей." +msgstr "Скрыто {0} устаревших профилей." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 -#, fuzzy, java-format +#, java-format msgid "Hiding {0} standard profiles." -msgstr "Сокрытие {0} стандартных профилей." +msgstr "Также скрыто {0} стандартных профилей (кликните для показа)." #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 -#, fuzzy msgid "Groups (Caps)" -msgstr "Группы (Способности)" +msgstr "Входит в группы (Caps)" #: ../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 "Способность" +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 "Быстрый, Высокая Производительная Мощность" +msgstr "Быстрые, Высокоёмкие" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127 -#, fuzzy msgid "High Capacity" -msgstr "Высокая производительная мощность" +msgstr "Высокоёмкие" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 -#, fuzzy msgid "Standard" -msgstr "Стандартный" +msgstr "Стандартные" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 -#, fuzzy msgid "Failing" -msgstr "В противном случае" +msgstr "Сбоит" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 msgid "Integrated" msgstr "Интегрированные" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 -#, fuzzy msgid "Banned" -msgstr "Запрещена" +msgstr "Забанен" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 -#, fuzzy msgid "Unreachable" -msgstr "Недоступные" +msgstr "Недоступен" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 -#, fuzzy msgid "Test Fails" -msgstr "Испытание Неудачи" +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 и Интегрированные Пиры" +msgstr "Floodfill и хорошо интегрированные пиры" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -#, fuzzy msgid "Caps" -msgstr "Предельные" +msgstr "Caps" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 -#, fuzzy msgid "Integ. Value" -msgstr "Интегрированное значение" +msgstr "Интег. Значение" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 -#, fuzzy msgid "Last Heard About" -msgstr "Последний Слышали О" +msgstr "Последний раз слышали о" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 -#, fuzzy msgid "Last Heard From" -msgstr "Последний Раз Слышали От" +msgstr "Последний приём" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 -#, fuzzy msgid "Last Good Send" -msgstr "Последний Хорошо Отправить" +msgstr "Последняя удачная передача" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 -#, fuzzy msgid "Last Bad Send" -msgstr "Последний Плохо Отправить" +msgstr "Последняя неудачная передача" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 -#, fuzzy msgid "10m Resp. Time" -msgstr "10 мин. Время отклика" +msgstr "Время отклика (последние 10 мин)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 -#, fuzzy msgid "1h Resp. Time" -msgstr "1 час Время отклика" +msgstr "Время отклика (последний 1 час)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 -#, fuzzy msgid "1d Resp. Time" -msgstr "1 день Время отклика" +msgstr "Время отклика (последний 1 день)" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 -#, fuzzy msgid "Last Good Lookup" -msgstr "Последний Хороший Поиск" +msgstr "Последний удачный поиск" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 -#, fuzzy msgid "Last Bad Lookup" -msgstr "Последний Плохо Поиска" +msgstr "Последний неудачный поиск" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 -#, fuzzy msgid "Last Good Store" -msgstr "Последний Хорошо Хранения" +msgstr "Последнее удачное размещение" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 -#, fuzzy msgid "Last Bad Store" -msgstr "Последний Плохо Хранения" +msgstr "Последнее неудачное размещение" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 -#, fuzzy msgid "1h Fail Rate" -msgstr "1ч Интенсивность Отказов" +msgstr "Уровень отказов за 1 час" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 -#, fuzzy msgid "1d Fail Rate" -msgstr "1д Интенсивность Отказов" +msgstr "Уровень отказов за 1 день" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 -#, fuzzy msgid "Thresholds" -msgstr "Порог" +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 "пиры у которых высокая производительная мощность" +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 "Определение" +msgstr "Определения" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 -#, fuzzy msgid "as determined by the profile organizer" -msgstr "как определяется профилем организатор" +msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности пира" #: ../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 "возможности в сетьБД, не используются для определения профилей" +msgstr "информация о пире, предоставленная сетевой базой данных; для профилирования не используется" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 -#, fuzzy msgid "caps" -msgstr "пределы" +msgstr "caps" #: ../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 минуты периода, что партнер имеет выдержанный в одном туннеле" +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 "потенциала" +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колько туннелей мы можем попросить их присоединиться к часу?" +msgstr "к скольким туннелям мы можем попросить этого пира подсоединиться за час?" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 -#, fuzzy msgid "how many new peers have they told us about lately?" -msgstr "сколько новых узлов не нам сказали последнее время?" +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 "это совокупность запрещены или недоступны, или не туннель тесты?" +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 "не доступно" +msgstr "нет данных" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 -#, fuzzy, java-format +#, java-format msgid "Temporary ban expiring in {0}" -msgstr "Временного запрета истекает в {0}" +msgstr "Временный бан истекает через {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 -#, fuzzy, java-format +#, java-format msgid "Banned until restart or in {0}" -msgstr "Запрещены до перезагрузку через {0}" +msgstr "Забанен до перезагрузки или истечения {0}" #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 -#, fuzzy msgid "unban now" -msgstr "удалить запрета сейчас" +msgstr "разбанить" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:55 +msgid "GO" +msgstr "Перейти" #: ../java/src/net/i2p/router/web/StatsGenerator.java:58 -#, fuzzy msgid "Statistics gathered during this router's uptime" -msgstr "Статистические данные, полученные во время проведенное на сайте этого маршрутизатора" +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 минуты периода, поэтому следует использовать в качестве оценки." +msgstr "Собираемые данные округляются за 1-минутные промежутки, поэтому используйте эту информацию только для приблизительной оценки." + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:107 +msgid "frequency" +msgstr "частота" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 +msgid "No lifetime events" +msgstr "Счетчик lifetime событий пуст" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:153 +msgid "rate" +msgstr "интервал" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:155 +msgid "avg value" +msgstr "среднее значение" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:184 +msgid "events" +msgstr "событий" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:190 +msgid "No events" +msgstr "Нет событий" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:196 +msgid "lifetime average" +msgstr "среднее за время работы" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:198 +msgid "peak average" +msgstr "пиковое среднее" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:216 +msgid "lifetime average value" +msgstr "среднее значение за время работы" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44 -#, fuzzy msgid "Configure startup of clients and webapps (services); manually start dormant services" -msgstr "Настройка запуска клиентов и Webapps (услуг); вручную запустить покоя услуги" +msgstr "Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных приложений" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46 -#, fuzzy msgid "I2P Services" -msgstr "Сервисы I2P" +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 доменных имен)" +msgstr "Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P для отображения доменных имен)" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 -#, fuzzy msgid "Addressbook" -msgstr "Адресная Книжка" +msgstr "Адресная Книга" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58 -#, fuzzy msgid "Built-in anonymous BitTorrent Client" -msgstr "Встроенные в анонимной загрузки клиента" +msgstr "Встроенный анонимный Bittorrent-клиент" #: ../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 "Аноним электронной почтовый веб-клиент" +msgstr "Анонимный почтовый клиент с веб-интерфейсом" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66 -#, fuzzy msgid "Webmail" -msgstr "Веб-Почта" +msgstr "Веб-почта" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 -#, fuzzy msgid "Anonymous resident webserver" -msgstr "Аноним сервер резидента" +msgstr "Встроенный анонимный веб-сервер" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72 -#, fuzzy msgid "Webserver" -msgstr "Веб-Сервер" +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" +msgstr "I2P свойства" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:355 msgid "View existing tunnels and tunnel build status" -msgstr "Просмотр существующих туннелей и туннелей построить статус" +msgstr "Обзор списка существующих туннелей и статуса строящихся" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:225 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232 msgid "Show all current peer connections" -msgstr "Показать все текущие подключения сверстников" +msgstr "Просмотр списка текущих соединения с пирами" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96 -#, fuzzy msgid "Show recent peer performance profiles" -msgstr "Показать последних профили производительности сверстников" +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 маршрутизаторы" +msgstr "Показать список всех известных I2P маршрутизаторов" +# This term intentionally left in English #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104 -#, fuzzy msgid "NetDB" -msgstr "СетьДБ" +msgstr "NetDB" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108 -#, fuzzy msgid "Health Report" -msgstr "Доклад о Состоянии Здравоохранения" +msgstr "Журналы сообщений маршрутизатора" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110 -#, fuzzy msgid "Logs" -msgstr "Логи" +msgstr "Журналы" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114 -#, fuzzy msgid "Show the router's workload, and how it's performing" -msgstr "Показать нагрузку на маршрутизатор, и как это исполняющей" +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 "Диаграммы" +msgstr "Графики" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126 -#, fuzzy msgid "Textual router performance statistics" -msgstr "Текстовое маршрутизатора статистики по эффективности" +msgstr "Статистика производительности маршрутизатора в текстовом виде" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Local Destinations" +msgstr "Локальные туннели" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "Менеджер Туннелей" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145 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 маршрутизатора идентичность" +msgstr "Справка Маршрутизатора I2P" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -#, fuzzy +msgid "General" +msgstr "Общая информация" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150 +msgid "Your unique I2P router identity is" +msgstr "Уникальный идентификатор Вашего I2P маршрутизатора:" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 msgid "never reveal it to anyone" -msgstr "никогда не показывайте его никому" +msgstr "никому его не показывайте." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:156 msgid "Local Identity" -msgstr "Локальный Адрес" +msgstr "Локальный идентификатор" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:168 msgid "How long we've been running for this session" -msgstr "Как долго мы уже в течение этой сессии" +msgstr "Время работы маршрутизатора с последнего запуска" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 msgid "Uptime" msgstr "Аптайм" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178 msgid "Help with configuring your firewall and router for optimal I2P performance" msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:205 msgid "Download" -msgstr "Загрузка" +msgstr "Скачать" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:207 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214 msgid "Download Unsigned" -msgstr "Загрузка Неподписанных" +msgstr "Скачать неподписанное" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 msgid "Active" msgstr "Активные" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:241 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248 msgid "Fast" msgstr "Быстрые" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:247 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 msgid "High capacity" -msgstr "Высокая производительная мощность" +msgstr "Высокоёмкие" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 msgid "Known" -msgstr "Общепризнанные" +msgstr "Известные" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 msgid "Help with firewall configuration" msgstr "Помощь в настройке брандмауэра" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283 msgid "Check NAT/firewall" -msgstr "Проверка NAT/брандмауэры" +msgstr "Проверьте настройки NAT/брандмауэров." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 msgid "Reseed" -msgstr "Повтор Первой Сети Связи" +msgstr "Повторить начальную загрузку" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:313 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:320 msgid "Configure router bandwidth allocation" -msgstr "Настройка маршрутизатора распределения пропускной способностью" +msgstr "Настройка ограничений скорости" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:315 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:322 msgid "Bandwidth in/out" -msgstr "Пропускная способность входящего / выходящего" +msgstr "Трафик (вх./исх.)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339 msgid "Total" msgstr "Всего" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:340 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 msgid "Used" -msgstr "Колич." +msgstr "Объем" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:350 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:357 msgid "Tunnels in/out" -msgstr "Туннели входящие / выходящие " +msgstr "Туннели (вх./исх.)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:355 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:362 msgid "Exploratory" -msgstr "Разведочные" +msgstr "Зондирующие" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378 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 "Перегрузка" +msgstr "Транзитные" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 -#, fuzzy +msgid "What's in the router's job queue?" +msgstr "Просмотр очереди заданий маршрутизатора." + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +msgid "Congestion" +msgstr "Занятость" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 msgid "Job lag" -msgstr "Задержка задачи" +msgstr "Задержка задач" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 msgid "Message delay" -msgstr "Задержка доставки сообщения" +msgstr "Задежка сообщений" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:396 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 msgid "Tunnel lag" -msgstr "Задержка туннеля" +msgstr "Задержка туннелей" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:96 msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "ОШИБКА-менеджер клиентов I2CP ошибка - проверьте журналы" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:94 -#, fuzzy -msgid "ERR-ClockSkew" -msgstr "ОШИБКА-ЧасиОтклонение" +msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок" #: ../java/src/net/i2p/router/web/SummaryHelper.java:103 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 -#, fuzzy +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "ОШИБКА - Часы сбиты (расхождение {0})" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 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" +msgstr "OK" #: ../java/src/net/i2p/router/web/SummaryHelper.java:113 -#, fuzzy +msgid "ERR-Private TCP Address" +msgstr "ОШИБКА - Частный TCP Адрес" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +msgid "ERR-SymmetricNAT" +msgstr "ОШИБКА - Симмметричный NAT" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +msgid "WARN-Firewalled and Floodfill" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 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 Расширенный конфигурации и перезапустить" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" #: ../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" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +msgid "Firewalled" +msgstr "Заблокирован извне" #: ../java/src/net/i2p/router/web/SummaryHelper.java:125 -#, fuzzy -msgid "WARN-Firewalled with UDP Disabled" -msgstr "ПРЕДУПРЕЖДЕНИЕ-файрвол с UDP отключено" +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:127 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:131 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "ОШИБКА - Нет активных пиров, проверьте подключение к сети и брандмауэр" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:134 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:136 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:138 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 msgid "Testing" msgstr "Проверка" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:360 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 msgid "Add/remove/edit & control your client and server tunnels" -msgstr "Добавлять / удалять / редактировать и управлять вашим клиентом и сервером туннелей" +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 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 msgid "Server" msgstr "Сервер" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:373 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 msgid "Show tunnels" -msgstr "Показать туннелей" +msgstr "Перейти к списку туннелей" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 msgid "Leases expired" -msgstr "Срока аренды" +msgstr "Срок аренды истек" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:385 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "Rebuilding" -msgstr "Восстановление" +msgstr "Построение заново" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:385 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 msgid "ago" msgstr "назад" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:388 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 msgid "Ready" -msgstr "Готовый" +msgstr "Готов к работе" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building" -msgstr "Строительство" +msgstr "Построение" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 -#, fuzzy +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "Building tunnels" -msgstr "Строительство туннелей" +msgstr "Построение туннелей" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:404 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "нет" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:421 #: ../java/strings/Strings.java:36 -#, fuzzy msgid "shared clients" -msgstr "общие клиенты" +msgstr "коллективные клиенты" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:40 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:62 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:273 msgid "configure" -msgstr "конфигурировать" +msgstr "настроить" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:64 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 msgid "dead" -msgstr "мертвый" +msgstr "мертв" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:70 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 msgid "Participating tunnels" -msgstr "Участвующие туннели" +msgstr "Транзитные туннели" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "From" -msgstr "От" +msgstr "От кого" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 msgid "Receive on" -msgstr "Получить на" +msgstr "ID принимающего туннеля" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Expiration" -msgstr "Истечение срока" +msgstr "Истечение срока работы" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "Send on" -msgstr "Отправить по" +msgstr "ID передающего туннеля" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 msgid "To" -msgstr "К" +msgstr "Кому" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Rate" -msgstr "Ставка" +msgstr "Скорость" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 -#, fuzzy +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 msgid "Role" msgstr "Роль" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -#, fuzzy msgid "Usage" -msgstr "Использование" +msgstr "Трафик" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 -#, fuzzy msgid "grace period" -msgstr "льготный период" +msgstr "резервный период" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 -#, fuzzy msgid "Outbound Endpoint" -msgstr "Исходящие Конечная точка" +msgstr "Выходная конечная точка" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 -#, fuzzy msgid "Inbound Gateway" -msgstr "Входящий Сетевой Шлюз" +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 "Неактивные участвующие туннелей" +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 "Использование долговечной пропускной способности входящего канала" +msgstr "Трафик за время существования" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -#, fuzzy msgid "Expiry" -msgstr "Истечение Срока" +msgstr "Истечение срока работы" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -#, fuzzy msgid "In/Out" -msgstr "Входящего / Выходящего" +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 "Конечная Точка" +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 "Опираясь на данном моменте" +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 "Нет туннелях, ожидая льготного периода и до конца." +msgstr "Нет туннелей. Ожидаем окончания резервного периода." #: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 -#, fuzzy msgid "in" -msgstr "входящий" +msgstr "(входящий)" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 -#, fuzzy msgid "out" -msgstr "исходящий" +msgstr "(исходящий)" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:234 -#, fuzzy msgid "Tunnel Counts By Peer" -msgstr "Тоннель графов По Пиру" +msgstr "Статистика участия пиров в туннелях" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -#, fuzzy msgid "% of total" -msgstr "% всего" +msgstr "% от всех" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -#, fuzzy -msgid "Expl. + Client" -msgstr "Разведочной + Клиентский" +msgid "Our Tunnels" +msgstr "Наших туннелей" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -#, fuzzy -msgid "Part. from + to" -msgstr "Участие от + до" +msgid "Participating Tunnels" +msgstr "Транзитных туннелей" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:253 +msgid "Totals" +msgstr "Всего" #: ../java/strings/Strings.java:12 -#, fuzzy msgid "addressbook" -msgstr "адресная книжка" +msgstr "адресная книга" #: ../java/strings/Strings.java:13 -#, fuzzy msgid "i2psnark" -msgstr "i2psnark" +msgstr "i2psnark (bittorrent-клиент)" #: ../java/strings/Strings.java:14 -#, fuzzy msgid "i2ptunnel" -msgstr "i2p-туннель" +msgstr "менеджер туннелей i2p" +# This term intentionally left in English #: ../java/strings/Strings.java:15 -#, fuzzy msgid "susimail" -msgstr "susi-почта" +msgstr "susimail (почтовый клиент)" +# This term intentionally left in English #: ../java/strings/Strings.java:16 -#, fuzzy msgid "susidns" msgstr "susidns" #: ../java/strings/Strings.java:17 -#, fuzzy msgid "routerconsole" -msgstr "маршрутизатор-консоли" +msgstr "консоль маршрутизатора i2p" #: ../java/strings/Strings.java:22 -#, fuzzy msgid "Web console" msgstr "Веб-консоль" #: ../java/strings/Strings.java:23 -#, fuzzy msgid "SAM application bridge" -msgstr "Мост приложения SAM" +msgstr "интерфейс SAM" #: ../java/strings/Strings.java:24 -#, fuzzy msgid "Application tunnels" -msgstr "Применение туннелей" +msgstr "Клиентские туннели" #: ../java/strings/Strings.java:25 -#, fuzzy msgid "My eepsite web server" -msgstr "Мой веб-сервер «eepsite»" +msgstr "i2p-вебсервер (eepsite)" #: ../java/strings/Strings.java:26 -#, fuzzy msgid "I2P webserver (eepsite)" -msgstr "Мой веб-сервер «eepsite»" +msgstr "i2p-вебсервер (eepsite)" #: ../java/strings/Strings.java:27 -#, fuzzy msgid "Browser launch at startup" -msgstr "Запуск браузера при запуске I2P" +msgstr "Запуск браузера при старте I2P" #: ../java/strings/Strings.java:28 -#, fuzzy msgid "BOB application bridge" -msgstr "Мост приложения BOB" +msgstr "интерфейс BOB" #: ../java/strings/Strings.java:30 -#, fuzzy msgid "Open Router Console in web browser at startup" -msgstr "Открыть консоль маршрутизатора в веб-браузере при запуске" +msgstr "Открыть консоль маршрутизатора в веб-браузере при старте I2P" #: ../java/strings/Strings.java:37 -#, fuzzy msgid "IRC proxy" -msgstr "IRC прокси" +msgstr "IRC-прокси" #: ../java/strings/Strings.java:38 -#, fuzzy msgid "eepsite" -msgstr "eepsite" +msgstr "i2p-сайт" #: ../java/strings/Strings.java:39 -#, fuzzy msgid "I2P webserver" -msgstr "I2P web-server" +msgstr "i2p-вебсервер" #: ../java/strings/Strings.java:40 -#, fuzzy msgid "HTTP Proxy" -msgstr "HTTP Прокси" +msgstr "HTTP-прокси" #: ../java/strings/Strings.java:42 -#, fuzzy msgid "eepProxy" -msgstr "eep-Прокси" +msgstr "I2P-прокси" #: ../java/strings/Strings.java:43 -#, fuzzy msgid "ircProxy" -msgstr "irc-Прокси" +msgstr "IRC-прокси" +# This term intentionally left in English #: ../java/strings/Strings.java:45 -#, fuzzy msgid "I2PSnark" msgstr "I2PSnark" +# This term intentionally left in English #: ../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 "темная" +msgstr "тёмная" #: ../java/strings/Strings.java:53 -#, fuzzy msgid "light" msgstr "светлая" #: ../java/strings/Strings.java:54 -#, fuzzy msgid "midnight" msgstr "полуночная" +#: ../java/strings/Strings.java:57 +msgid "Bandwidth" +msgstr "Трафик" + +#: ../java/strings/Strings.java:58 +msgid "BandwidthLimiter" +msgstr "Ограничитель скорости" + +#: ../java/strings/Strings.java:59 +msgid "ClientMessages" +msgstr "Клиентские сообщения" + +#: ../java/strings/Strings.java:60 +msgid "Encryption" +msgstr "Шифрование" + +# This term intentionally left in English +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "i2cp" + +# This term intentionally left in English +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "InNetPool" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "Очередь заданий" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "Сетевая база данных" + +# This term intentionally left in English +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "ntcp" + +# This term intentionally left in English +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "Stream" + +# This term intentionally left in English +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "Throttle" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "Транспортные протоколы" + +# This term intentionally left in English +#: ../java/strings/Strings.java:73 +msgid "udp" +msgstr "udp" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 -#, fuzzy msgid "config networking" -msgstr "конфигурация сети" +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 @@ -3499,6 +2999,7 @@ msgstr "конфигурация сети" #: ../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_005fru_jsp.java:220 #: ../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 @@ -3509,11 +3010,10 @@ msgstr "конфигурация сети" #: ../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/summaryframe_jsp.java:235 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216 -#, fuzzy msgid "Refresh (s)" -msgstr "Обновить (сек)" +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 @@ -3529,6 +3029,7 @@ msgstr "Обновить (сек)" #: ../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_005fru_jsp.java:224 #: ../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 @@ -3539,81 +3040,69 @@ msgstr "Обновить (сек)" #: ../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/summaryframe_jsp.java:238 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220 -#, fuzzy msgid "Enable" -msgstr "Включать" +msgstr "Включить" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 -#, fuzzy msgid "I2P Network Configuration" -msgstr "I2P Настройке Сети" +msgstr "Настройки сетевых свойств I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 -#, fuzzy msgid "Bandwidth limiter" -msgstr "Ограничитель диапазона частот" +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 будет работать лучше, если Вы настроите частоту для подбора соответствующей скорости подсоединения к Интернету." +msgstr "I2P будет работать лучше, если Вы настроите ограничение скорости в соответствии со скоростью Вашего подключения к Интернету." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303 -#, fuzzy msgid "KBps In" -msgstr "Кбит/сек Загруженное" +msgstr "Килобайт/секунду (на приём)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 -#, fuzzy msgid "KBps Out" -msgstr "Кбит/сек Закаченное" +msgstr "Килобайт/секунду (на отдачу)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 -#, fuzzy msgid "Share" -msgstr "Поделено" +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 "ЗАМЕТЬТЕ" +msgstr "ПРИМЕЧАНИЕ" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 -#, fuzzy, java-format +#, java-format msgid "You have configured I2P to share only {0} KBps." -msgstr "Вы настроили протокол I2P, чтоб использовать только {0} килобит информации за секунду." +msgstr "Вы настроили очень низкий лимит для транзитного трафика (всего {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 чтобы поделить трафик. " +msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции." #: ../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 "Пожалуйста, включите поделен трафик (участие в туннелях), настроя больше пропускной способностью. " +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 "Это улучшает вашу анонимность создавая покрытия трафика, а также помогает в сети." +msgstr "Это одновременно повысит Вашу анонимность (благодаря маскирующему транзитному трафику) и поможет сети." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350 -#, fuzzy, java-format +#, java-format msgid "You have configured I2P to share {0} KBps." -msgstr "Вы настроили протокол I2P, чтоб использовать {0} килобит информации за секунду." +msgstr "Вы задали долю транзитного трафика {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 "Чем больше пропускная способность входящего/исходящего канала расшаренного ресурса, тем больше Вы поддерживаете анонимность и тем самым помогаете сети." +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/config_jsp.java:504 #: ../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 @@ -3621,1241 +3110,1045 @@ msgstr "Чем больше пропускная способность вход #: ../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 "Отклонить изменения" +msgstr "Отменить" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 -#, fuzzy msgid "IP and Transport Configuration" -msgstr "IP и конфигурации транспорта" +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 "Настройки по умолчанию будет работать для большинства людей." +msgstr "Большинству пользователей подойдут настройки по умолчанию." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:367 -#, fuzzy msgid "There is help below." -msgstr "Дополнительную информацию смотрите ниже:" +msgstr "В конце страницы приведена справка по настройкам." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 -#, fuzzy msgid "UPnP Configuration" -msgstr "Конфигурация UPnP" +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, чтоб открыть порты брандмауэра" +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 Конфигурация" +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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 msgid "Externally reachable hostname or IP address" -msgstr "Внешне достижимое имя хоста или IP -адрес" +msgstr " Имя хоста или IP-адрес доступные из интернета" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 -#, fuzzy msgid "Use all auto-detect methods" -msgstr "Используйте все методы автоматического опознавания" +msgstr "Определять автоматически всеми доступными способами" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 -#, fuzzy msgid "Disable UPnP IP address detection" -msgstr "Отключите детектор IP-адреса UPnP" +msgstr "Определять автоматически (без использования UPnP)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -#, fuzzy msgid "Ignore local interface IP address" -msgstr "Отклоните IP адрес локального интерфейса." +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" +msgstr "Определять автоматически (только через 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 msgid "Specify hostname or IP" -msgstr "Установите имя хоста или IP" +msgstr "Задать хост или IP вручную" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 -#, fuzzy msgid "Select Interface" -msgstr "Выбирать Интерфейс" +msgstr "Выбрать сетевой интерфейс" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 -#, fuzzy msgid "Hidden mode - do not publish IP" -msgstr "Скрытый метод – не разглашайте IP адрес" +msgstr "Скрытый режим, не публиковать IP" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 -#, fuzzy msgid "(prevents participating traffic)" -msgstr "(препятствует причастному трафику)" +msgstr "(такой режим предотвращает транзит трафика)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:423 -#, fuzzy +msgid "Action when IP changes" +msgstr "Действие при смене IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:427 +msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgstr "Режим мобильного компьютера: автоматически менять идентификатор маршрутизатора и UDP-порт после смены IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +msgid "Experimental" +msgstr "экспериментальный режим, повышает анонимность" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 msgid "UDP Configuration:" -msgstr "UDP Конфигурация" +msgstr "Настройки UDP" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 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 -адрес" +msgstr "UDP-порт:" #: ../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 "в настоящее время" +msgid "TCP Configuration" +msgstr "Настройки TCP" -#: ../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:453 +msgid "Use auto-detected IP address" +msgstr "Использовать автоматически определенный IP-адрес" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:487 +msgid "currently" +msgstr "сейчас" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "if we are not firewalled" +msgstr "если входящий порт не заблокирован" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 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 "(выберете, только если брандмауэр тормозит работу или блокирует выходные данные протокола управления передачей данных)" +msgstr "Всегда использовать автоматически определенный IP-адрес" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 -#, fuzzy -msgid "Externally reachable TCP port" -msgstr "Внешне достижимый порт протокола TCP" +msgid "Disable inbound (Firewalled)" +msgstr "Отключить поддержку входящих соединений" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 -#, fuzzy -msgid "Use the same port configured for UDP" -msgstr "Используйте тот же порт, настроенный для протокола UDP" +msgid "Completely disable" +msgstr "Полностью отключить поддержку TCP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "(используйте этот режим только при наличии в системе брандмауэра, который замедляет или блокирует исходящие TCP-соединения)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:481 +msgid "Externally reachable TCP port" +msgstr "Доступный из интернета TCP-порт" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 -#, fuzzy +msgid "Use the same port configured for UDP" +msgstr "Использовать настройки UDP-порта" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 msgid "Specify Port" -msgstr "Определите Порт" +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/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 #: ../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 "Помощь конфигурации" +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» переключили трафик." +msgid "Changing these settings will restart your router." +msgstr "Изменение этих настрок повлечет перезагрузку I2P маршрутизатора." #: ../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 работает неверно, или брандмауэр находится вне контроля и причиняет вред." +msgid "Configuration Help" +msgstr "Справка по настройкам сети" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +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:510 +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "Попробуйте открыть доступ на Вашем брандмауэре для произвольных входящих UDP и TCP пакетов на порт I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +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 (Universal Plug and Play) и обход NAT с помощью SSU-посредников." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +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 или возник конфликт брандмауэра и I2P." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 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 в устройстве" +msgstr "Некоторые виды брандмауэров могут быть частично несовместимы с I2P (например, симметричные NAT)." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525 -#, fuzzy -msgid "Software firewall interference with UPnP" -msgstr "Взаимодействие программного обеспечения брандмауэра с UPnP" +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP используется для взаимодействия с IGD (Internet Gateway Devices) при определении внешнего IP-адреса и переадресации портов." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 -#, fuzzy -msgid "Bugs in the device's UPnP implementation" -msgstr "Ошибки при внедрении устройства UPnP" +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "Поддержка UPnP находится в разработке (бета-версия). В следующих случаях 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 "Разнообразные брандмауэры/маршрутизаторы в способах подсоединения к интернету" +msgid "No UPnP-compatible device present" +msgstr "Не обнаружено UPnP-совместимых устройств" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:531 -#, fuzzy -msgid "UPnP device change, reset, or address change" -msgstr "Замена устройства UPnP, перезагрузка или изменение адреса" +msgid "UPnP disabled on the device" +msgstr "UPnP отключено на устройстве" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:533 -#, fuzzy -msgid "Review the UPnP status here." -msgstr "Обзор статуса UPnP здесь." +msgid "Software firewall interference with UPnP" +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 может быть включено или отключено, но для получения желательного результата изменения требуется перезагрузка маршрутизатора." +msgid "Bugs in the device's UPnP implementation" +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 "Имена хоста, зарегистрированные выше, будут опубликованы в базе данных сети." +msgid "Multiple firewall/routers in the internet connection path" +msgstr "Несколько маршрутизаторов/брандмауэров на пути к интернету" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 -#, fuzzy -msgid "They are not private." -msgstr "Они не являются личными." +msgid "UPnP device change, reset, or address change" +msgstr "Смена/сброс UPnP-устройства или изменение адреса " #: ../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." +msgid "Review the UPnP status here." +msgstr "Посмотреть статус UPnP можно тут." #: ../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-устройство или брандмауэр, работа сети будет существенно ухудшаться." +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "UPnP можно включить/выключить в настройках выше. Настройка вступит в силу только после перезагрузки I2P-маршрутизатора." #: ../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 "Если Вы сомневаетесь, не заходите на настройки." +msgid "Hostnames entered above will be published in the network database." +msgstr "Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 -#, fuzzy -msgid "Reachability Help" -msgstr "Помощь доступности" +msgid "They are not private." +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:549 +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:551 +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 "Производительность Вашего соединения с I2P-сетью может сильно пострадать, если Вы введете неверный IP-адрес, неверное имя хоста или неправильно настроите NAT/брандмауэр." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "When in doubt, leave the settings at the defaults." +msgstr "Если сомневаетесь — оставьте настройки по умолчанию." #: ../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) могут помочь раскрыть сущность проблемы." +msgid "Reachability Help" +msgstr "Справка по статусу сетевой доступности" -#: ../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:560 +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: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 %, может случайно обнаружиться ошибка." +msgid "If there is an error, the logs may also help diagnose the problem." +msgstr "В случае ошибок журналы могут помочь диагностировать проблему." #: ../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 "Сеть заработает должным образом, если будет закрыт порт, причин для беспокойства нет. Когда доступа к порту нет, маршрутизатор использует «устройство ввода», чтоб ретранслировать входящее соединение." +msgid "Your UDP port does not appear to be firewalled." +msgstr "Ваш UDP-порт доступен извне." #: ../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 "Несмотря на это, Вы получите больше сетевого трафика и тем самым поможете работе сети при условии, если откроете брандмауэры." +msgid "Your UDP port appears to be firewalled." +msgstr "Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие соединения." #: ../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 "Если думаете, что Вы все сделали правильно, помните, что у Вас может быть как аппаратное, так и программное оборудование, и что в обходе дополнительного, основного брандмауэра, Вы не можете контролировать." +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +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." +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgstr "Но если оно появляется постоянно, Вам следует проверить, что на всех брандмауэрах порт для I2P открыт." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "Повода для паники нет, 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 порт." +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:581 +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: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 "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Быстрый" +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: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 килобайт в секунду диапазона частот, будет лучше для сети, если б Вы открыли брандмауэр." +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:591 -#, fuzzy -msgid "WARN - Firewalled and Floodfill" -msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Floodfill" +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "В настройках I2P-маршрутизатора запрещена публикация его адреса, как результат, маршрутизатор не ожидает входящих соединений." #: ../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 маршрутизатора, но маршрутизатор за брандмауэром." +msgid "WARN - Firewalled and Fast" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый" #: ../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 маршрутизатора, Вы должны открыть свой брандмауэр." +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "Вы настроили долю транзитного трафика выше 128 килобайт/секунду, при этом у Вас заблокирован входящий порт." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 -#, fuzzy -msgid "WARN - Firewalled with Inbound TCP Enabled" -msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и Входящий TCP Включено" +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 "I2P будет работать нормально в такой конфигурации, но Вы можете помочь сети разблокировав входящий порт, если у Вас действительно быстрый интернет." #: ../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 – порт так же закрыт." +msgid "WARN - Firewalled and Floodfill" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill" #: ../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, т.к. могут повредить сеть." +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:603 -#, fuzzy -msgid "Please open your firewall or disable inbound TCP above." -msgstr "Пожалуйста, откройте свой брандмауэр или отключенный входящий порт TCP." +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:605 -#, fuzzy -msgid "WARN - Firewalled with UDP Disabled" -msgstr "ПРЕДУПРЕЖДЕНИЕ - За Брандмауэром и UDP Отключенный" +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP" #: ../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." +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:609 -#, fuzzy -msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." -msgstr "Вы firewalled on TCP, поэтому Ваш маршрутизатор не может принять входящие соединения." +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:611 -#, fuzzy -msgid "Please open your firewall or enable UDP." -msgstr "Пожалуйста, откройте свой брандмауер или закройте UDP." +msgid "Please open your firewall or disable inbound TCP above." +msgstr "Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите поддержку входящих TCP-соединений." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -#, fuzzy -msgid "ERR - Clock Skew" -msgstr "ОШИБКА - Часы Отклонение" +msgid "WARN - Firewalled with UDP Disabled" +msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP" #: ../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 "Вашы часы системного времени сбились, что усложнит работу в сети." +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате Ваш маршрутизатор не может принимать входящие соединения." +# This string intentionally left blank #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 -#, fuzzy -msgid "Correct your clock setting if this error persists." -msgstr "Настройте часы, если эта ошибка не исчезает." +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr " " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -#, fuzzy +msgid "Please open your firewall or enable UDP." +msgstr "Пожалуйста, разблокируйте порт или включите поддержку UDP." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +msgid "ERR - Clock Skew" +msgstr "ОШИБКА - Часы сбиты" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +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:625 +msgid "Correct your clock setting if this error persists." +msgstr "Поправьте настройки времени, если Вы постоянно видите это сообщение об ошибке." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 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 не работает должным образом из-за отсутствия доступа к порту. Возможно, Вы не сможете принять входящее соединение, которое будет ограничивать доступ к сети." +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) в качестве своего внешнего IP-адреса." #: ../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 и перезагрузите" +msgid "Correct the address or disable inbound TCP above." +msgstr "Исправьте адрес или отключите поддержку входящих TCP-соединений." #: ../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 или к другому конфигурируемому порту." +msgid "ERR - SymmetricNAT" +msgstr "ОШИБКА - Симметричный NAT" #: ../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 использовать другой порт." +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:637 -#, fuzzy -msgid "This may be a transient error, if the other program is no longer using the port." -msgstr "Может произойти сбой, если другая программа больше не использует этот порт." +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:639 -#, fuzzy -msgid "However, a restart is always required after this error." -msgstr "Однако после такой ошибки всегда требуется перезагрузка." +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор" #: ../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 / порт не указан" +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:643 -#, fuzzy -msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." -msgstr "Вы не сконфигурировали входящий TCP с именем хоста и выше указанным портом, но все равно Вы отключили UDP." +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." +# This string intentionally left blank #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 -#, fuzzy -msgid "Therefore your router cannot accept inbound connections." -msgstr "Следовательно Ваш маршрутизатор не может принять входящее соединение." +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:647 -#, fuzzy -msgid "Please configure a TCP host and port above or enable UDP." -msgstr "Пожалуйста, сконфигурируйте хост TCP и выше указанный порт или же включите UDP." +msgid "However, a restart is always required after this error." +msgstr "После возникновения этой ошибки необходим перезапуск I2P." #: ../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)" +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:651 -#, fuzzy -msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "Обычно это обусловлено конфликтом порта 7654 (ошибка). Проверьте текстовые файлы (logs), чтоб удостовериться." +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "Вы не задали адрес/порт для входящих TCP-соединений и одновременно отключили поддержку UDP, в результате Ваш маршрутизатор не может принимать входящие соединения." +# This string intentionally left blank #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:653 -#, fuzzy +msgid "Therefore your router cannot accept inbound connections." +msgstr " " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +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:657 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в журнал ошибок." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." -msgstr "У Вас есть другое выполнение запроса через протокол I2P? Остановите эту программу и перезагрузите I2P." +msgstr "Не запущена ли у вас ещё одна копия I2P? Остановите вызвавшую конфликт программу и перезапустите I2P." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 -#, fuzzy msgid "config advanced" -msgstr "расширенные настройки" +msgstr "дополнительные настройки" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 -#, fuzzy msgid "I2P Advanced Configuration" -msgstr "I2P Расширенные Настройки" +msgstr "Дополнительные настройки I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 -#, fuzzy msgid "Advanced I2P Configuration" -msgstr "Расширенные I2P Настройки" +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 "Может потребоваться перезагрузка системы для того, чтобы некоторые изменения вступили в силу." +msgstr "Для вступления некоторых изменений в силу может потребоваться перезагрузка I2P-маршрутизатора." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 -#, fuzzy msgid "config clients" -msgstr "настройка клиента" +msgstr "настройки клиентов" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:241 -#, fuzzy msgid "I2P Client Configuration" -msgstr "I2P Настройка Клиента" +msgstr "Настройки клиентов I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:306 -#, fuzzy msgid "Client Configuration" -msgstr "Настройка Клиента" +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-машине." +msgstr "Перечисленные ниже Java-клиенты запускаются маршрутизатором внутри своей JVM." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 -#, fuzzy msgid "To change other client options, edit the file" -msgstr "Для того, чтобы изменить другие пользовательские настройки, выполните редактирование файла" +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." +msgstr "Для вступления изменённых настроек в силу потребуется перезагрузка маршрутизатора." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:323 -#, fuzzy msgid "WebApp Configuration" -msgstr "WebApp Конфигурация" +msgstr "Настройки веб-апплетов" #: ../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)." +msgstr "Перечисленные ниже Java веб-апплеты запускаются консолью маршрутизатора внутри JVM маршрутизатора. Обычно эти приложения доступны через консоль маршрутизатора. Это могут быть как самостоятельные приложения (например, 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 и веб-приложение появятся, когда вы обновите маршрутизатор до более новой версии, так что блокировка веб-приложения является предпочтительной." +msgstr "Веб-апплет также можно отключить, просто удалив .war-файл из директории webapps. Однако при обновлении маршрутизатора и .war-файл и соответствующее приложение будут возвращены на свои места, поэтому отключение веб-апплетов через эту страницу это более корректный способ." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 -#, fuzzy msgid "config keyring" -msgstr "конфигурация для устройств хранения данных" +msgstr "настройки ключей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 -#, fuzzy msgid "I2P Keyring Configuration" -msgstr "Конфигурация I2P Для Устройств Хранения Данных" +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 "Устройство хранения данных маршрутизатора используется для расшифровки зашифрованных наборов адресов." +msgstr "Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet." #: ../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 "На устройстве могут содержаться ключи для локальных или удаленных адресов зашифрованных назначений." +msgstr "Связка ключей может хранить ключи как для локальных, так и для удаленных зашифрованных адресов назначения." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307 -#, fuzzy msgid "Manual Keyring Addition" -msgstr "Ручное Дополнение К Накопителю Информации" +msgstr "Добавление ключей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 -#, fuzzy msgid "Enter keys for encrypted remote destinations here." -msgstr "Введите ключи для зашифрованных удаленных адресов." +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 "Ключи для локальных адресов назначения необходимо ввести на" +msgstr "Ключи для локальных адресов назначения настраиваются в" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 -#, fuzzy msgid "I2PTunnel page" -msgstr "странице I2PTunnel" +msgstr "Менеджере Туннелей" #: ../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 "Криптографический ключ" +msgstr "Ключ шифрования" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 -#, fuzzy msgid "config logging" -msgstr "настройка журнала" +msgstr "настройки журнала" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 -#, fuzzy msgid "I2P Logging Configuration" -msgstr "I2P Настройке Журнала" +msgstr "Настройки журнала I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 -#, fuzzy msgid "Configure I2P Logging Options" -msgstr "Опции Записи Конфигурации I2P" +msgstr "Настройки журнала I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 -#, fuzzy msgid "Logging filename" -msgstr "Имя файла записи" +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 "(символ «@» будет заменен в процессе сканирования записи)" +msgstr "(во время ротации журнала символ @ будет заменен на номер)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 -#, fuzzy msgid "Log record format" -msgstr "Формат записи системного журнала" +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» = сообщение)" +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 "Формат даты записи" +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» = миллисекунды)" +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 "Максимальный размер файла системного журнала" +msgstr "Максимальный размер файла журнала" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 -#, fuzzy msgid "Default log level" -msgstr "Уровень записи по умолчанию" +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 не являются рекомендованными по умолчанию, так как они значительно замедляют работу маршрутизатора)" +msgstr "(не рекомендуется использовать уровни DEBUG и INFO для постоянного использования, так как они сильно замедлят работу Вашего маршрутизатора)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329 -#, fuzzy msgid "Log level overrides" -msgstr "Редактирование уровня записи" +msgstr "Дополнительные настройки" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 -#, fuzzy msgid "config peers" -msgstr "конфигурация пиров" +msgstr "настройки пиров" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 -#, fuzzy msgid "I2P Peer Configuration" -msgstr "Конфигурация Пиров I2P" +msgstr "Настройки пиров I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 -#, fuzzy msgid "Manual Peer Controls" -msgstr "Ручное Управление Пирами" +msgstr "Ручное управление пирами" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 -#, fuzzy msgid "Router Hash" -msgstr "Хэш Маршрутизатора" +msgstr "Хеш маршрутизатора" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 -#, fuzzy msgid "Manually Ban / Unban a Peer" -msgstr "ручную запретить / разрешить пиры" +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 "Запрет предотвратит участие данного пира в созданных вами туннелях." +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 "Дополнительные потоки могут быть как положительными и отрицательными, оказывающими влияние на вовлечение узлов сети в быстрых узлах и узлах большой мощност. Быстрые узлы используются для клиентских туннелей, а узлы большой мощности используются в некоторых типах поисковых туннелей. Текущие потоки отображены на" +msgstr "Бонусы могут быть положительными и отрицательными и вводятся для управления включением пира в группы «Быстрые» и «Высокоёмкие» (Быстрые пиры используются для построения клиентских туннелей, Высокоёмкие пиры используются для некоторых зондирующих туннелей). Текущие бонусы можно посмотреть на" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 -#, fuzzy msgid "profiles page" -msgstr "странице профилей" +msgstr "странице профилей пиров" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 -#, fuzzy msgid "Adjust peer bonuses" -msgstr "Настройка дополнительных потоков пиров" +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 "Запрещенные Пиры" +msgstr "Забаненные пиры" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 -#, fuzzy msgid "Banned IPs" -msgstr "Запрещенные IP адресы" +msgstr "Забаненные IP-адреса" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 -#, fuzzy msgid "config service" -msgstr "конфигурация сервиса" +msgstr "настройки службы" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 -#, fuzzy msgid "I2P Service Configuration" -msgstr "Конфигурация Сервиса I2P" +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 "Постепенное выключение позволяет маршрутизатору выполнить запланированные задания до его выключения, но это займет несколько минут." +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 "Постепенное выключение позволяет маршрутизатору выполнить запланированные задания до его выключения, но это займет несколько минут." +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 "Если Вы хотите, чтоб маршрутизатор перезагрузился после выключения, Вы можете выбрать одно из действий." +msgstr "Иногда, Вам нужно перегрузить маршрутизатор (например, после изменения базовых настроек, которые считываются приложением только во время запуска). В этом случае, Вам доступны два варианта. Плавная перезагрузка займет несколько минут (но зато пиры, использующие Ваш маршрутизатор, будут Вам благодарны за терпение). Если Вы не можете ждать, выбирайте немедленную перезагрузку. В случае немедленной перезагрузки маршрутизатор запустится через одну минуту." +# This string intentionally left blank #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300 -#, fuzzy -msgid "This is useful in some situations" -msgstr "В некоторых случаях это полезно" +msgid "This is useful in some situations - 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 " " +# This string intentionally left blank #: ../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 "Постепенное выключение будет длиться несколько минут (но твои пиры будут благодарны за твое терпение), а жесткая перезагрузка делает это незамедлительно." +msgstr " " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:306 -#, fuzzy +# This string intentionally left blank +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304 msgid "After tearing down the router, it will wait 1 minute before starting back up again." -msgstr "После разбора настройки маршрутизатора, пройдет еще 1 минута до загрузки." +msgstr " " + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314 +msgid "Systray integration" +msgstr "Интеграция в область уведомлений" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316 -#, fuzzy -msgid "Systray integration" -msgstr "Система лоток интеграции" +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: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, есть небольшое приложение, чтобы сидеть в системном трее, что позволяет Вам просматривать статус маршрутизатора" +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: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, вы можете включить или отключить этот значок здесь." +msgstr "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить отображение этого значка." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +msgid "Run on startup" +msgstr "Автоматический запуск I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 -#, fuzzy -msgid "Run on startup" -msgstr "Запуск при старте" +msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly." +msgstr "Вы можете настроить автоматическую загрузку маршрутизатора при каждом запуске Windows. В зависимости от выбранной кнопки I2P немедленно установит или удалит свою службу из списка служб Windows." #: ../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 "Если вы предпочитаете командную строку, вы можете также запустить " +msgstr "Если Вам удобно работать через командную строку, попробуйте использовать " -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:344 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 msgid "If you are running I2P as service right now, removing it will shut down your router immediately." -msgstr "Если вы используете I2P как сервис на данный момент, удалив будет закрыта маршрутизатор немедленно." +msgstr "Если служба I2P уже была запущена, при выборе варианта \"Не запускать I2P при старте\" маршрутизатор будет моментально остановлен." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." -msgstr "Вы можете рассмотреть вопрос о закрытии грациозно, как указано выше, затем запустить uninstall_i2p_service_winnt.bat." +msgstr "Возможно лучше плавно остановить маршрутизатор и после этого запустить файл C:\\Program Files\\I2P\\uninstall_i2p_service_winnt.bat." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 -#, fuzzy +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:350 msgid "Debugging" -msgstr "Отладка программы" +msgstr "Отладка" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log." +msgstr "В некоторых случаях для отладки может пригодиться список состояний тредов I2P-маршутизатора. Для получения такого списка нажмите эту кнопку. Список будет сохранен в файле wrapper.log." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +msgid "Launch browser on router startup?" +msgstr "Запускать браузер при старте I2P?" #: ../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 может открыть веб-браузер при запуске указывая на" +msgstr "Основной интерфейс настройки I2P это веб-консоль. Здесь можно выбрать автоматическое открытие при запуске маршрутизатора страницы" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 -#, fuzzy msgid "config stats" -msgstr "конфигурации статистики" +msgstr "настройки статистики" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 -#, fuzzy msgid "I2P Stats Configuration" -msgstr "Конфигурация Статистики I2P" +msgstr "Настройки статистики I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 -#, fuzzy msgid "Configure I2P Stat Collection" -msgstr "Конфигурация Сбора Статистики I2P" +msgstr "Настройки сбора статистики I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 -#, fuzzy msgid "Enable full stats?" -msgstr "Активировать полную статистику?" +msgstr "Включить полную статистику?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 -#, fuzzy msgid "change requires restart to take effect" -msgstr "для того, чтобы изменения вступили в силу, необходима перезагрузка системы" +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 "Запись" +msgstr "Журнал" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 -#, fuzzy msgid "Graph" -msgstr "Диаграмма" +msgstr "График" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 -#, fuzzy msgid "Advanced filter" -msgstr "Дополнительные фильтры" +msgstr "Дополнительный фильтр" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 -#, fuzzy msgid "config tunnels" -msgstr "конфигурация туннеля" +msgstr "настройки туннелей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241 -#, fuzzy msgid "I2P Tunnel Configuration" -msgstr "Конфигурация Туннеля I2P" +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 "Стандартные настройки действуют в большинстве случаев." +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 "Необходимо сделать выбор между анонимностью и производительностью." +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 хопа), или большое количество + резервное количество, могут значительно уменьшить производительность или надежность." +msgstr " Туннели длиннее 3 хопов, а также большое количество туннелей (как обычных, так и резервных) могут привести к снижению производительности/надежности работы маршрутизатора." +# This string intentionally left blank #: ../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 "Это также может привести к перегрузке ЦП и/или ухудшению пропускной способности входящего канала." +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 "Будьте внимательны при изменении данных настроек, урегулируйте их в том случае, если возникнут какие-либо проблемы." +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." +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 "Клиент туннель изменения являются временными и не сохраняются." +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 "Для постоянных клиентов изменения туннеля см." +msgstr "Для задания перманентных изменений в настройках клиентских туннелей воспользуйтесь" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 -#, fuzzy msgid "i2ptunnel page" -msgstr "i2ptunnel страницу" +msgstr "менеджером туннелей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 -#, fuzzy msgid "config UI" -msgstr "конфигурации интерфейса" +msgstr "настройки интерфейса" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 -#, fuzzy msgid "I2P UI Configuration" -msgstr "I2P Настройка Пользовательского Интерфейса" +msgstr "Настройки пользовательского интерфейса I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 -#, fuzzy msgid "Router Console Theme" -msgstr "Тема Консоля Маршрутизатора" +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, извините." +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, если вы хотите получить доступ к консоли темам." +msgstr "Если вы не используете IE, то, скорее всего, Ваш браузер сконфигурирован представляться как IE. Пожалуйста измените строку User-Agent в настройках Вашего браузера (или прокси-сервера), если хотите использовать темы оформления" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 -#, fuzzy msgid "Router Console Language" -msgstr "Язык Маршрутизатора Консоля" +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 помочь." +msgstr "Пожалуйста, помогите проекту перевода консоли маршрутизатора! Разработчики доступны для связи на IRC-канале #i2p" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 -#, fuzzy msgid "config update" -msgstr "обновленная конфигурация" +msgstr "настройки обновления" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 -#, fuzzy msgid "I2P Update Configuration" -msgstr "Обновленная Конфигурация I2P" +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 и обновление новостей" +msgstr "Настройки проверки обновлений и новостей I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 -#, fuzzy msgid "News & I2P Updates" -msgstr "Новости и Обновление I2P" +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" +msgstr "URL новостей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:318 -#, fuzzy msgid "Refresh frequency" -msgstr "Частота обновления" +msgstr "Интервал проверки" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:322 -#, fuzzy msgid "Update policy" -msgstr "Обновление конфигурации" +msgstr "Режим обновления" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 -#, fuzzy msgid "Update through the eepProxy?" -msgstr "Обновление через eep-Прокси?" +msgstr "Обновлять через I2P-прокси?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 -#, fuzzy msgid "eepProxy host" -msgstr "eep-Прокси хост" +msgstr "Адрес I2P-прокси" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 -#, fuzzy msgid "eepProxy port" -msgstr "eep-Прокси порт" +msgstr "Порт I2P-прокси" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 -#, fuzzy msgid "Update URLs" -msgstr "Обновления URL-адресы" +msgstr "URL обновлений" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 -#, fuzzy msgid "Trusted keys" -msgstr "Доверенные криптографические ключи" +msgstr "Доверенные ключи" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 -#, fuzzy msgid "Update with unsigned development builds?" -msgstr "Обновить беззнаковой тестовой сборкой?" +msgstr "Обновлять до неподписанной тестовой сборки?" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 -#, fuzzy msgid "Unsigned Build URL" -msgstr "Беззнаковая тестовая сборка 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 "Страница Не Найдена" +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 "Извините! Вы, как представляется, с просьбой о несуществующих Маршрутизатор консоли страницы или ресурса." +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 "диаграммы" +msgstr "графики" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 -#, fuzzy msgid "I2P Performance Graphs" -msgstr "I2P Диаграммы Производительности" +msgstr "Графики производительности I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 -#, fuzzy msgid "home" -msgstr "дома" +msgstr "Домашняя страница" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 -#, fuzzy msgid "job queue" -msgstr "очереди заданий" +msgstr "очередь заданий" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 -#, fuzzy msgid "I2P Router Job Queue" -msgstr "Маршрутизатор I2P Очередь Заданий" +msgstr "Очередь заданий маршрутизатора I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 -#, fuzzy msgid "logs" -msgstr "логи" +msgstr "журналы" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 -#, fuzzy msgid "I2P Router Logs" -msgstr "I2P Маршрутизатор Логи" +msgstr "Журналы маршрутизатора I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 -#, fuzzy msgid "I2P Version & Running Environment" -msgstr "I2P Версии & Действуюшая Окружающей Среды" +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 "Пожалуйста, включите эту информацию в докладах ошибка" +msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:267 +msgid "Critical Logs" +msgstr "Журнал критических ошибок" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:271 +msgid "Router Logs" +msgstr "Журнал маршрутизатора" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:277 +msgid "Service (Wrapper) Logs" +msgstr "Журнал службы (wrapper)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 -#, fuzzy msgid "network database summary" -msgstr "база данных резюме" +msgstr "сетевая база данных" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 -#, fuzzy msgid "I2P Network Database Summary" -msgstr "I2P База Данных Резюме" +msgstr "Обзор сетевой базы данных I2P" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 -#, fuzzy msgid "WebApp Not Found" -msgstr "Страница Не Найдена" +msgstr "Веб-апплет не найден" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 -#, fuzzy msgid "Web Application Not Running" -msgstr "Применение туннелей" +msgstr "Веб-приложение не запущено" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 -#, fuzzy msgid "The requested web application is not running." -msgstr "Предложила веб-приложений не запущено." +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 "Пожалуйста, посетите страницу конфигурации клиента для его запуска." +msgstr "Пожалуйста, запустите его со страницы настроек веб-апплетов." #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 -#, fuzzy msgid "peer connections" -msgstr "связи пиров" +msgstr "обзор пиров" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 -#, fuzzy msgid "I2P Network Peers" -msgstr "I2P Сеть Пиры" +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" +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 Маршрутизатор Статистика" +msgstr "Статистика маршрутизатора I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245 -#, fuzzy, java-format +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 +#, java-format msgid "Disable {0}s Refresh" -msgstr "Откл. {0}с. Обновление" +msgstr "Отключить автообновление
панели ({0} сек.)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 -#, fuzzy msgid "tunnel summary" -msgstr "туннель резюме" +msgstr "обзор туннелей" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 -#, fuzzy msgid "I2P Tunnel Summary" -msgstr "I2P Тоннеля Резюме" +msgstr "Обзор туннелей I2P" + +#~ msgid "This is useful in some situations" +#~ msgstr "" +#~ "(например, после изменения базовых настроек, которые считываются " +#~ "приложением только во время запуска)." +#~ msgid "I2P will install (or remove) a service accordingly." +#~ msgstr "" +#~ "В зависимости от выбранной кнопки I2P немедленно установит или удалит " +#~ "свою службу из списка служб Windows." #, fuzzy #~ msgid "Depth" #~ msgstr "Глубина" +#, fuzzy +#~ msgid "skew" +#~ msgstr "отклонение" + +#, fuzzy +#~ msgid "Expl. + Client" +#~ msgstr "Разведочной + Клиентский" + +#, fuzzy +#~ msgid "Part. from + to" +#~ msgstr "Participating from + to" + diff --git a/installer/resources/eepsite_index_ru.html b/installer/resources/eepsite_index_ru.html new file mode 100644 index 000000000..ec88c76c8 --- /dev/null +++ b/installer/resources/eepsite_index_ru.html @@ -0,0 +1,94 @@ + + + Анонимный I2P веб-сервер | Добро пожаловать на ваш I2P-сайт + + + + + + + +

Анонимный I2P веб-сервер

+ +

Краткое руководство по анонимному хостингу сайтов в I2P

+ +

+Эта страничка — Ваш I2P-сайт, Ваш собственный анонимный I2P-вебсервер. Отредактируйте файлы в директории ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows), выполните шаги из инструкции ниже и Ваш сайт увидят другие пользователи. + +В I2P сайты адресуются по их «ключу», который выглядит как очень длинная Base64 строка. Этот «ключ» частично выполняет функцию IP-адреса и указан на +странице настроек туннеля i2p-сайта. Далее мы расскажем Вам, как присвоить своему ключу имя типа «mysite.i2p» и запустить Ваш i2p-сайт. +

+ +

Попробуйте открыть локально свой i2p-сайт через http://127.0.0.1:7658/. +

+ +

Как запустить и анонсировать свой I2P-сайт

+ +Ваш i2p-сайт по умолчанию остановлен. Хотя Вы его и запустили, другим людям трудно его найти, ведь у сайта пока нет имени, а Ваш очень-длинный-Base64-ключ никому не известен. Вы, конечно, можете просто выдавать людям этот очень-длинный-Base64-ключ, но, к счастью, в I2P есть механизм адресных книг и несколько простых способов для сообщения людям о своем сайте. Далее подробные инструкции. + +
    +
  • Выберите имя для своего сайта (something.i2p). Используйте только символы в нижнем регистре. Загляните в адресную книгу Вашего маршрутизатора или в файл i2p/hosts.txt для проверки, возможно такое имя уже кто-то занял. Введите новое имя Вашего сайта на странице настроек туннеля для i2p-сайта в поле «Имя веб-сайта». Это заменит имя сайта по умолчанию «mysite.i2p». Поставьте галочку «Автозапуск». Ваш сайт будет доступен извне всегда, когда запущен Ваш маршрутизатор. Не забудьте нажать «Сохранить». + + +
  • Кликните в менеджере туннелей на кнопке запуска вашего сайта. Вы должны увидеть запись «i2p-сайт» в списке «Локальные туннели» в левой части консоли маршрутизатора. С этого момента Ваш сайт запущен. + +
  • Выделите всю строчку «Локальный адрес назначения» на странице настроек туннеля вашего I2P-сайта и скопируйте её. Убедитесь, что Вы скопировали строку целиком – ее длина больше 500 символов, строка должна заканчиваться на «AAAA». + +
  • Введите имя и вставьте ключ в Вашу основную адресную книгу. Нажмите «Добавить» для добавления адреса в адресную книгу. + +
  • Введите в браузере имя Вашего сайта (something.i2p), Вы должны снова попасть на эту страницу. Надеемся, что это сработало. + +
  • Перед тем как Вы сообщите миру о своем новом сайте, имеет смысл добавить на него какой-нибудь контент. Зайдите в директорию ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows) и скопируйте этот документ (index.html) в help.html, чтобы к нему можно было обращаться. Теперь Вы можете отредактировать index.html и добавить в него свой текст, картинки, все, чем Вы хотите поделиться с миром. +
+ +

Зарегистрируйте свой .I2P домен

    + +
  • Теперь пора добавить Ваш сайт в адресные книги, расположенные на сайтах-каталогах, например stats.i2p. Введите имя и ключ своего сайта через веб-интерфейс нескольких таких сайтов-каталогов. Вот форма для ввода ключа на сайте stats.i2p. Напоминаем, ключ — это вся строка «Локальный адрес назначения» на странице настройки туннеля «I2P webserver». Проверьте, что Вы скопировали его целиком, включая «AAAA» на конце. Не забудьте нажать «Add a key». Дождитесь пока система отрапортует, что ключ был добавлен. Поскольку многие маршрутизаторы периодически обновляют свои адресные книги, обращаясь к этим сайтам-каталогам, уже через несколько часов кто-нибудь откроет Ваш сайт, просто набрав something.i2p в адресной строке браузера. +
+ +

Добавление подписок в адресную книгу

    + +
  • Кстати об обновлениях, самое время добавить несколько адресных книг в Ваш список подписки. Зайдите на страницу настройки подписок и добавьте эти ссылки для получения автоматически обновляемого списка сайтов: + + + +
  • Если Вы не можете ждать несколько часов, попробуйте воспользоваться jump-сервисом. Это возможно сразу (через несколько минут) после добавления ключа в адресную книгу на любой сайт-каталог (см. список в первом пункте). Проверьте сами — откройте в браузере http://stats.i2p/cgi-bin/jump.cgi?a=something.i2p или http://i2host.i2p/cgi-bin/i2hostjump?something.i2p. # Если это сработало для Вас, Ваши гости тоже смогут воспользоваться этим способом. + + +
  • Некоторые люди следят за обновлениями в списках i2p-сайтов, например inproxy.tino.i2p/status.php, так что скоро у Вас появятся первые посетители. Всех остальных Вы можете оповестить другими способами. Например: +
      +
    • Напишите сообщение на форуме в разделе Eepsite announce +
    • Расскажите о сайте в IRC на каналах #i2p или #i2p-chat +
    • Упомяните о сайте в постинге в Syndie. +
    • Добавьте сайт в wiki Ugha's Eepsite Index +
    + +Некоторые сайты рекомендуют вставлять в анонс Ваш очень-длинный-Base64-ключ. Вы, конечно, можете, если хотите. На самом деле, это не нужно, раз Вы уже добавили свой ключ на jump-сервисе, проверили его работу и подождали 24 часа, чтобы обновление адресной книги успело разойтись по всему I2P-миру. +
+ + +

А что потом?

+ + +
+
+На основе шаблонов: zzz, 07.10.2009 и dr|z3d, Ноябрь 2009 +
+ + + From 6eaec7fd44d5e15bb16fbeac47afec4f04c4c1ed Mon Sep 17 00:00:00 2001 From: forget Date: Sat, 9 Jan 2010 03:01:04 +0000 Subject: [PATCH 04/72] Russian translation update --- installer/resources/readme/readme_ru.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/installer/resources/readme/readme_ru.html b/installer/resources/readme/readme_ru.html index aa8f65ba0..46b04b49d 100644 --- a/installer/resources/readme/readme_ru.html +++ b/installer/resources/readme/readme_ru.html @@ -8,9 +8,9 @@ Svenska

Добро пожаловать в I2P!

-

Когда Вы запускаете I2P впервые — числа в графе «Active» (слева) начнут расти постепенно, это может занять несколько минут. Затем в списке «Local Destinations» появится запись «shared clients» (если этого не случилось, см. «устранение неполадок»). +

Когда Вы запускаете I2P впервые — числа в графе «Активные» (слева) начнут расти постепенно, это может занять несколько минут. Затем в списке «Локальные туннели» появится запись «коллективные клиенты» (если этого не случилось, см. «устранение неполадок»). -

После появления записи «shared clients» Вы можете:

+

После появления записи «коллективные клиенты» Вы можете:

+the advanced configuration page. [Enable graphing]. +
  • Share ratio: +The number of participating tunnels you route for others, divided by the total number of hops in +all your exploratory and client tunnels. +A number greater than 1.00 means you are contributing more tunnels to the network than you are using. +

    Congestion

    Some basic indications of router overload:
    diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po index 1eb7859df..f77d7852e 100644 --- a/apps/routerconsole/locale/messages_ru.po +++ b/apps/routerconsole/locale/messages_ru.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-06 20:14+0000\n" -"PO-Revision-Date: 2010-01-09 05:50+0300\n" +"POT-Creation-Date: 2010-01-18 18:36+0000\n" +"PO-Revision-Date: 2010-01-18 18:37+0000\n" "Last-Translator: 4get \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -1058,80 +1058,116 @@ msgid "Error saving the configuration (applied but not saved) - please see the e msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в журнал ошибок" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:32 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:321 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:332 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:344 msgid "Save WebApp Configuration" msgstr "Сохранить настройки веб-апплетов" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:67 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:66 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 msgid "Start" msgstr "Запустить" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:68 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:80 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 msgid "Unsupported" msgstr "Не поддерживается" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:83 +# This term intentionally left in English +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:110 +msgid "desc" +msgstr "desc" + +# This term intentionally left in English +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:105 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:120 +msgid "name" +msgstr "name" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:125 +msgid "New client added" +msgstr "Добавлен новый клиент" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 msgid "Client configuration saved successfully - restart required to take effect." msgstr "Настройки клиентов сохранены, требуется перезагрузка маршрутизатора для вступления в силу." -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:154 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/ConfigClientsHandler.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:159 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370 #: ../java/src/net/i2p/router/web/SummaryHelper.java:384 msgid "Client" msgstr "Клиент" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:194 msgid "started" msgstr "запущен" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:111 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:159 +msgid "deleted" +msgstr "удален" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:176 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 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 msgid "WebApp" msgstr "Веб-апплет" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:131 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:196 msgid "Failed to start" msgstr "Не удалось запустить" -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:137 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 msgid "Failed to find server." msgstr "Не удалось найти сервер." -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:19 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:100 +msgid "Edit" +msgstr "Редактировать" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:28 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:328 +msgid "Add Client" +msgstr "Добавить клиента" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 msgid "Class and arguments" msgstr "Название класса и параметры" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 msgid "Run at Startup?" msgstr "Запускать автоматически?" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 msgid "Start Now" msgstr "Запустить вручную" -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 msgid "Description" msgstr "Описание" +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:101 +msgid "Delete" +msgstr "Удалить" + #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 msgid "Add key" @@ -1258,7 +1294,7 @@ 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/NetDbRenderer.java:294 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:128 msgid "Stats" msgstr "Статистика" @@ -1787,7 +1823,7 @@ 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 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "Never" msgstr "Никогда" @@ -1810,66 +1846,66 @@ msgstr "Только скачать и проверить целостность msgid "Download, verify, and restart" msgstr "Скачать, проверить и обновить I2P" -#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#: ../java/src/net/i2p/router/web/GraphHelper.java:125 msgid "Configure Graph Display" msgstr "Настройка показа графиков" -#: ../java/src/net/i2p/router/web/GraphHelper.java:107 +#: ../java/src/net/i2p/router/web/GraphHelper.java:125 msgid "Select Stats" msgstr "Выбрать параметры" -#: ../java/src/net/i2p/router/web/GraphHelper.java:109 +#: ../java/src/net/i2p/router/web/GraphHelper.java:127 msgid "Periods" msgstr "Количество интервалов" -#: ../java/src/net/i2p/router/web/GraphHelper.java:110 +#: ../java/src/net/i2p/router/web/GraphHelper.java:128 msgid "Plot averages" msgstr "Строить график средних значений" -#: ../java/src/net/i2p/router/web/GraphHelper.java:111 +#: ../java/src/net/i2p/router/web/GraphHelper.java:129 #: ../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:332 msgid "or" msgstr "или" -#: ../java/src/net/i2p/router/web/GraphHelper.java:111 +#: ../java/src/net/i2p/router/web/GraphHelper.java:129 msgid "plot events" msgstr "строить график количества событий" -#: ../java/src/net/i2p/router/web/GraphHelper.java:112 +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Image sizes" msgstr "Размеры графиков" -#: ../java/src/net/i2p/router/web/GraphHelper.java:112 +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "width" msgstr "ширина" -#: ../java/src/net/i2p/router/web/GraphHelper.java:113 +#: ../java/src/net/i2p/router/web/GraphHelper.java:131 msgid "height" msgstr "высота" -#: ../java/src/net/i2p/router/web/GraphHelper.java:113 -#: ../java/src/net/i2p/router/web/GraphHelper.java:114 +#: ../java/src/net/i2p/router/web/GraphHelper.java:131 +#: ../java/src/net/i2p/router/web/GraphHelper.java:132 msgid "pixels" msgstr "пикселей" -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "Refresh delay" msgstr "Интервал обновления" -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "hour" msgstr "час" -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "minute" msgstr "минута" -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "minutes" msgstr "минут(ы)" -#: ../java/src/net/i2p/router/web/GraphHelper.java:116 +#: ../java/src/net/i2p/router/web/GraphHelper.java:134 msgid "Redraw" msgstr "Перерисовать" @@ -1878,175 +1914,175 @@ msgstr "Перерисовать" msgid "File location" msgstr "Путь к файлу журнала" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:59 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:60 msgid "Network Database RouterInfo Lookup" msgstr "Просмотр RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 #: ../java/strings/Strings.java:68 msgid "Router" msgstr "Маршрутизатор" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 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 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 msgid "Network Database Contents" msgstr "Просмотр сетевой базы данных" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 msgid "View RouterInfo" msgstr "Показать список RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:85 msgid "LeaseSets" msgstr "Список LeaseSet" # This term intentionally left in English -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:93 msgid "LeaseSet" msgstr "LeaseSet" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 msgid "Local" msgstr "Локальный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 msgid "Unpublished" msgstr "Неопубликованный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:98 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105 msgid "Destination" msgstr "Адрес назначения" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:114 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:115 #, java-format msgid "Expires in {0}" msgstr "Истекает через {0}" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:116 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:117 #, java-format msgid "Expired {0} ago" msgstr "Истек {0} назад" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Gateway" msgstr "Шлюз" # This term intentionally left in English -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 msgid "Lease" msgstr "Lease" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:120 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:121 msgid "Tunnel" msgstr "Туннель" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 msgid "View LeaseSets" msgstr "Показать список LeaseSet" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:137 msgid "Not initialized" msgstr "База не инициализирована" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:145 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:146 msgid "Routers" msgstr "Маршрутизаторы" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:147 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:148 msgid "Show all routers" msgstr "Показать полный список" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:149 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150 msgid "Show all routers with full stats" msgstr "Показать полный список с полной статистикой" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:184 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185 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 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 msgid "Count" msgstr "Количество" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 msgid "Version" msgstr "Версия" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:204 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 msgid "Transports" msgstr "Транспортный протокол" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:222 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 msgid "Country" msgstr "Страна" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:254 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:255 msgid "Our info" msgstr "Информация о нас" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:256 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:257 msgid "Peer info for" msgstr "Информация о пире" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:260 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:261 msgid "Full entry" msgstr "Показать полную запись" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 #: ../java/src/net/i2p/router/web/SummaryHelper.java:105 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 msgid "Hidden" msgstr "Скрытый" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 msgid "Updated" msgstr "Обновленный" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 #, 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 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:274 msgid "Published" msgstr "Опубликовано" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:275 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:276 msgid "Address(es)" msgstr "Адрес(а)" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 msgid "Hidden or starting up" msgstr "В скрытом режиме или недавно запущен" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 msgid "SSU" msgstr "SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 msgid "SSU with introducers" msgstr "SSU через посредников" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 msgid "NTCP" msgstr "NTCP" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 msgid "NTCP and SSU" msgstr "NTCP и SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 msgid "NTCP and SSU with introducers" msgstr "NTCP и SSU через посредников" @@ -2552,26 +2588,30 @@ msgid "Participating" msgstr "Транзитные" #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +msgid "Share ratio" +msgstr "Доля транзита" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390 msgid "What's in the router's job queue?" msgstr "Просмотр очереди заданий маршрутизатора." -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 msgid "Congestion" msgstr "Занятость" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 msgid "Job lag" msgstr "Задержка задач" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 msgid "Message delay" msgstr "Задежка сообщений" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 msgid "Tunnel lag" msgstr "Задержка туннелей" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 msgid "Backlog" msgstr "Очередь" @@ -3082,11 +3122,11 @@ msgstr "Вы настроили очень низкий лимит для тра #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 msgid "I2P requires at least 12KBps to enable sharing. " -msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции." +msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346 msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " -msgstr "Пожалуйста, повысьте долю транзитного трафика." +msgstr "Пожалуйста, повысьте долю транзитного трафика. " #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 msgid "It improves your anonymity by creating cover traffic, and helps the network." @@ -3104,6 +3144,7 @@ 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:504 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:324 #: ../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 @@ -3559,36 +3600,36 @@ msgstr "Для вступления некоторых изменений в с msgid "config clients" msgstr "настройки клиентов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 msgid "I2P Client Configuration" msgstr "Настройки клиентов I2P" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:309 msgid "Client Configuration" msgstr "Настройки клиентов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 msgid "The Java clients listed below are started by the router and run in the same JVM." msgstr "Перечисленные ниже Java-клиенты запускаются маршрутизатором внутри своей JVM." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:315 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 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:342 msgid "All changes require restart to take effect." msgstr "Для вступления изменённых настроек в силу потребуется перезагрузка маршрутизатора." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:323 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334 msgid "WebApp Configuration" msgstr "Настройки веб-апплетов" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 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 веб-апплеты запускаются консолью маршрутизатора внутри JVM маршрутизатора. Обычно эти приложения доступны через консоль маршрутизатора. Это могут быть как самостоятельные приложения (например, i2psnark), так и интерфейсы к другим приложениям или клиентам, которые надо включать отдельно (например, susidns, i2ptunnel), либо могут вообще не иметь веб-интерфейса (например, addressbook)." -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 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-файл и соответствующее приложение будут возвращены на свои места, поэтому отключение веб-апплетов через эту страницу это более корректный способ." @@ -4127,28 +4168,3 @@ msgstr "обзор туннелей" msgid "I2P Tunnel Summary" msgstr "Обзор туннелей I2P" -#~ msgid "This is useful in some situations" -#~ msgstr "" -#~ "(например, после изменения базовых настроек, которые считываются " -#~ "приложением только во время запуска)." -#~ msgid "I2P will install (or remove) a service accordingly." -#~ msgstr "" -#~ "В зависимости от выбранной кнопки I2P немедленно установит или удалит " -#~ "свою службу из списка служб Windows." - -#, fuzzy -#~ msgid "Depth" -#~ msgstr "Глубина" - -#, fuzzy -#~ msgid "skew" -#~ msgstr "отклонение" - -#, fuzzy -#~ msgid "Expl. + Client" -#~ msgstr "Разведочной + Клиентский" - -#, fuzzy -#~ msgid "Part. from + to" -#~ msgstr "Participating from + to" - From d9534e5f236b189f116311f54e181e4c51b489ae Mon Sep 17 00:00:00 2001 From: z3d Date: Mon, 18 Jan 2010 21:13:29 +0000 Subject: [PATCH 20/72] First stage of eepsite starter page rejig. --- .../resources/{eepsite_index.html => eepsite.help/index.html} | 0 .../{eepsite_index_de.html => eepsite.help/index_de.html} | 0 .../{eepsite_index_fr.html => eepsite.help/index_fr.html} | 0 installer/resources/{ => eepsite.help/lib}/eepsite.css | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename installer/resources/{eepsite_index.html => eepsite.help/index.html} (100%) rename installer/resources/{eepsite_index_de.html => eepsite.help/index_de.html} (100%) rename installer/resources/{eepsite_index_fr.html => eepsite.help/index_fr.html} (100%) rename installer/resources/{ => eepsite.help/lib}/eepsite.css (100%) diff --git a/installer/resources/eepsite_index.html b/installer/resources/eepsite.help/index.html similarity index 100% rename from installer/resources/eepsite_index.html rename to installer/resources/eepsite.help/index.html diff --git a/installer/resources/eepsite_index_de.html b/installer/resources/eepsite.help/index_de.html similarity index 100% rename from installer/resources/eepsite_index_de.html rename to installer/resources/eepsite.help/index_de.html diff --git a/installer/resources/eepsite_index_fr.html b/installer/resources/eepsite.help/index_fr.html similarity index 100% rename from installer/resources/eepsite_index_fr.html rename to installer/resources/eepsite.help/index_fr.html diff --git a/installer/resources/eepsite.css b/installer/resources/eepsite.help/lib/eepsite.css similarity index 100% rename from installer/resources/eepsite.css rename to installer/resources/eepsite.help/lib/eepsite.css From 5c595ef2894e410e87a8058184bb842fe5612253 Mon Sep 17 00:00:00 2001 From: sponge Date: Tue, 19 Jan 2010 08:54:40 +0000 Subject: [PATCH 21/72] * Firewall fix for NTCP, where firewalls will forget a NAT relationship on a stream... AKA setting keepalive. This should fix the stuck NTCP issue that has been bothing zzz for years. * Set keepalive on BOB connections too, since this will assist closing the connections in the event of a crash on a client. --- apps/BOB/nbproject/private/private.xml | 3 ++- apps/BOB/src/net/i2p/BOB/BOB.java | 2 ++ apps/BOB/src/net/i2p/BOB/I2PtoTCP.java | 1 + apps/BOB/src/net/i2p/BOB/TCPlistener.java | 1 + history.txt | 7 +++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../src/net/i2p/router/transport/ntcp/EventPumper.java | 4 ++++ 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/BOB/nbproject/private/private.xml b/apps/BOB/nbproject/private/private.xml index ccaab1e5c..4f83e8d30 100644 --- a/apps/BOB/nbproject/private/private.xml +++ b/apps/BOB/nbproject/private/private.xml @@ -2,6 +2,7 @@ - file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/BOB.java + file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java + file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/MUXlisten.java diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index ee3f5937a..2c689f65d 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -256,11 +256,13 @@ public class BOB { listener = new ServerSocket(Integer.parseInt(props.getProperty(PROP_BOB_PORT)), 10, InetAddress.getByName(props.getProperty(PROP_BOB_HOST))); Socket server = null; listener.setSoTimeout(500); // .5 sec + while (spin.get()) { //DoCMDS connection; try { server = listener.accept(); + server.setKeepAlive(true); g = true; } catch (ConnectException ce) { g = false; diff --git a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java index 85dcf5b41..4c186700f 100644 --- a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java +++ b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java @@ -102,6 +102,7 @@ public class I2PtoTCP implements Runnable { break die; } sock = new Socket(host, port); + sock.setKeepAlive(true); // make readers/writers in = sock.getInputStream(); out = sock.getOutputStream(); diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java index 714ee1e7f..154e2a4d1 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java +++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java @@ -78,6 +78,7 @@ public class TCPlistener implements Runnable { while (lives.get()) { try { server = listener.accept(); + server.setKeepAlive(true); g = true; } catch (SocketTimeoutException ste) { g = false; diff --git a/history.txt b/history.txt index 11ae0d23d..bdfdbf910 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,10 @@ +2010-01-19 sponge + * Firewall fix for NTCP, where firewalls will forget a NAT relationship + on a stream... AKA setting keepalive. This should fix the stuck NTCP + issue that has been bothing zzz for years. + * Set keepalive on BOB connections too, since this will assist closing + the connections in the event of a crash on a client. + 2010-01-18 zzz * configclients.jsp: Fix add-new-client feature * Console: Add a tunnel share ratio estimate diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index be2f8c298..869f2a488 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 = "-rc"; diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index 89c12250c..82ec5719e 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -418,6 +418,8 @@ public class EventPumper implements Runnable { try { chan.close(); } catch (IOException ioe) { } return; } + // BUGFIX for firewalls. --Sponge + chan.socket().setKeepAlive(true); SelectionKey ckey = chan.register(_selector, SelectionKey.OP_READ); NTCPConnection con = new NTCPConnection(_context, _transport, chan, ckey); @@ -436,6 +438,8 @@ public class EventPumper implements Runnable { if (_log.shouldLog(Log.DEBUG)) _log.debug("processing connect for " + key + " / " + con + ": connected? " + connected); if (connected) { + // BUGFIX for firewalls. --Sponge + chan.socket().setKeepAlive(true); con.setKey(key); con.outboundConnected(); _context.statManager().addRateData("ntcp.connectSuccessful", 1, 0); From 03a9f697394212508374fbacbc8bf834b5b022bd Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 00:49:56 +0000 Subject: [PATCH 22/72] Move Russian eepsite index to our new eepsite.help dir. --- .../{eepsite_index_ru.html => eepsite.help/index_ru.html} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename installer/resources/{eepsite_index_ru.html => eepsite.help/index_ru.html} (100%) diff --git a/installer/resources/eepsite_index_ru.html b/installer/resources/eepsite.help/index_ru.html similarity index 100% rename from installer/resources/eepsite_index_ru.html rename to installer/resources/eepsite.help/index_ru.html From e3b300e978a9aa5c81d339cb8564ae829be4520d Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 02:08:55 +0000 Subject: [PATCH 23/72] Add graphical resources to eepsite. --- installer/resources/eepsite.help/lib/bg.png | Bin 0 -> 3048 bytes .../resources/eepsite.help/lib/brown.png | Bin 0 -> 237 bytes installer/resources/eepsite.help/lib/cn.png | Bin 0 -> 472 bytes installer/resources/eepsite.help/lib/de.png | Bin 0 -> 545 bytes .../resources/eepsite.help/lib/eepsite.css | 78 +++++++++++------- installer/resources/eepsite.help/lib/es.png | Bin 0 -> 469 bytes installer/resources/eepsite.help/lib/fr.png | Bin 0 -> 545 bytes installer/resources/eepsite.help/lib/h2bg.png | Bin 0 -> 2755 bytes .../resources/eepsite.help/lib/itoopie.png | Bin 0 -> 2979 bytes installer/resources/eepsite.help/lib/nl.png | Bin 0 -> 453 bytes installer/resources/eepsite.help/lib/ru.png | Bin 0 -> 420 bytes installer/resources/eepsite.help/lib/se.png | Bin 0 -> 542 bytes installer/resources/eepsite.help/lib/us.png | Bin 0 -> 609 bytes 13 files changed, 48 insertions(+), 30 deletions(-) create mode 100644 installer/resources/eepsite.help/lib/bg.png create mode 100644 installer/resources/eepsite.help/lib/brown.png create mode 100644 installer/resources/eepsite.help/lib/cn.png create mode 100644 installer/resources/eepsite.help/lib/de.png create mode 100644 installer/resources/eepsite.help/lib/es.png create mode 100644 installer/resources/eepsite.help/lib/fr.png create mode 100644 installer/resources/eepsite.help/lib/h2bg.png create mode 100644 installer/resources/eepsite.help/lib/itoopie.png create mode 100644 installer/resources/eepsite.help/lib/nl.png create mode 100644 installer/resources/eepsite.help/lib/ru.png create mode 100644 installer/resources/eepsite.help/lib/se.png create mode 100644 installer/resources/eepsite.help/lib/us.png diff --git a/installer/resources/eepsite.help/lib/bg.png b/installer/resources/eepsite.help/lib/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4ec35b30dc1487ce2f2bd33f4ff104f5f88eef GIT binary patch literal 3048 zcmZvec{tSDAIHy`ea1RtyDE&e2wiD#QDmt>ilLYiWlgdq6-jnwM2d8ojHN-icDbpE zRF+(_Q;sFn+B!EHzNeq-ELP;!?#6hYMq~HJ!LJ15I#{)4OkRd`PBrg<{zydN3 zQt(g;QA9%w3MvtR5)p`Dk!k=G8ekx#AZZeiSg44EppjER88M83STvFXkRU)DVjByU zkw7727b*|{1yR8xxHC?kpva-KpJt56c@cpM9Pg`#UUep z6^o3hRXhL*!2AFp7&JSDLIIKy{j^uz|GBdkwZBla7S(G}^$V42QLz@~Yf<(Kf2~F7 zT9o`k@mkzoi=wqC{Dp$G;QoizvDstD6%d2y%u@h}KK{4E*1+4I01#5FEOt7E-W)jS zSN%m(_*n={F}bgzmL^iaw2u@$oI6=OH(#^czdlZ7U%(qUyQN)538h4)@=Ss~0@`FU z!lRaVWLYmA$q#?feqN(iqv?9$X-7`P9!+zsn{x{-BUf+S*E@f#VWbgL#&hJoi>lZP zsyZ&=9*lG{TZ~h-=8aZtWy;%^N`y%#GNG46v=F12HDq{jSB-dSNcy+n^iSaeOP)1LrX9=7F3@h6PcWr9;Ld`GSdV6rPfwcHl&GO<=vfke67^+R~WbT6x zZr3fnF-uNw)1I5&b}l?Dlo;k3YJcm+{uuYNJ%as+2-bu*=;vGDp=EeT=ty}EU(8G= zx4*y2`Ji94KqFK~UEQcU_N+@~%Fd*r-qL@fCrY0VjZIQAHx5#x?)L5TFMH!xmvN}R zPx9W`*<{@W5A?rC(%iDCQiD)m ztKv$|E$jN*@m6T!ivnusc#I`6J|eZ2woR!z%)+cH?DM-=+|YEqpLr95QDe5%dQ-Bb zdfo(G?yIX=bB95gPVHj-ql-=|=~6x4EJf@zv^3)lu2X0%Q@P^a&e6oHX4=_zUJ>?R zD)Ocn%O9}0TyTTJVg}5s##0E}xLI~QNFC3*V@>ho>GqQ*8F^Ff*Vj)Se-gF6*sDpT zI=~e5JkII!u3RmVIPDaDz9{$ArkQT~w*=GM&uDqqN=J@oX4~1%UNRQ;9*q|&tt7@4 z?^6J7i6@&uTdf6IfsfFc39M@*n z-vTKah|UBFTE0&oZp7dI4KqQciFg)_v(B&_@8gqRFrPcy%hH55Z!WgEq1=h_4Tqs zYVW{5K08j!=`Swkv+if_JA6a7yv<=qv7jn(vwh~qoAM3q4vk;c2k(~C&Px@QYS~w9 zr!frg^Y8U9IWCeJXBISvu9O;V-y!1H=uh`>Svnls&o4HujkUrRs~r35W0CMgWs?MD z$I-_d8)ocB1Pxjy<`ME&k`_&SO!ZS3Mf<{B!ni9dcl(w&Dc=0o=JKI?Iv1R0#DZtS z>0ZM<4ZRCT7OyAoiR>CBt?}VKT;Ee^eG_?lz^bpiV)V!s z*7gkR{h5rO8K1Jr5vR7JXp1UGflk{VH^)<>P1uvN++SeB;NU7;yIu$w=fdf)rEw#RmABP#T8am@W^ z-tTzh!D(}9ccDQq`+5G;a}J&{RyGE6YQ#s*y1ne~aEGTR)zryi?RMMl6XsQ$GFT^e z?S5nU3HQcg#KKy)lYc0Y)@~d7*NS)qiE7^HwNN6fEv-sDoLSxlww3r4Mkub_4|CAX z@qD;-oIKHxn;Jw5N@vSQ>wFw!w*?oKEQ@d+zlxTX`4*i|?h@K|Ds7>IeKUVQ-6L&& zB;@P%6AIXq2|WE3%N~RGM(9k;N}@hf@9WBm;S=%+bLpM6x&9BHPH$50uvHFZ)FZ3a zkG5p04#A@{6dg1&cEfO^eoc~&v%})tu!WL-_E=6ua9=mOLBDCB!C_IL*C#itPyX)Z zKT%l!KBr-IU9{8Uf%lQA>;qrAyy|_qJOlD~?(7d^ebKnq4Tr6y;|#Nl-_7;2kL7iB z=ZqD0CK$b3UbrlkMU^YVi2q+v_cwFf$K4&iZ-gwaQY=uxB(+ zkiz(MrzfcVna|IVU`w5dsyai(oY;aYF;@H~%Z;S4$|sp4jd(!^`yG5jE-lJF>8ob;;o}BpnTwU#(;%o9&uUpdKk>XBd8n#^S^hupjW;doeO=K; zf!CzVR$H4KXBa&S%Uhm=UI}=Zr5f&ERZd&}^x*}@D-VN;(UKEqD$OC!>9Ut4Rk zYy$#fbUSZ$va{}1W_tR2tD@X|bv5)AhaMMi?hALQw93prLkeU~*66?Gr}VaD*c&hM dx*n{eMH#YD_TQVmklz(xWx3a)-0Voq{{Ye^e_{Xt literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/brown.png b/installer/resources/eepsite.help/lib/brown.png new file mode 100644 index 0000000000000000000000000000000000000000..e530d72b49e6cdb8bdd5d026fa3104edbb752b7a GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^Js`}&%)r2?{W51ZkYfn^T0^tyw3&ujZ^jd+OAy`>Sj3 z>?nM!_Se_mzvlTx7^u7>`Se(~_Ebk_bTB#8m@)Zv_0RC^%sh~TJYD@<);T3K0RSen BPp$v} literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/cn.png b/installer/resources/eepsite.help/lib/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..89144146219e6fbec7eaa89e1bf4b073d299569e GIT binary patch literal 472 zcmV;}0Vn>6P)$bmtfBa_T{rmsVufH!rO2O)W0!b+P{TrwO zAb?mv&i(NBbu;G`sX*)cv$d*%>MiL-(QdhpkjakVmyu%k;sfcNRj;yhJaxT5MTg0u5&QfH8#Bf O0000h<6BFn%a z@b8~2SoNP@zd$;E{sbbRuHQd?{QCI=sNwhbA3*&Qe}GP900=;09NYi^fU@pUdVa9*13;+Sd!tjgXKhXQEMobL97(p6<{RLvMGBN!7 j!N9=G@a-1^K!5=NcXWu!7_DDe00000NkvXXu0mjfeQx^H literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/eepsite.css b/installer/resources/eepsite.help/lib/eepsite.css index ccd537ec4..7dd17f5c9 100644 --- a/installer/resources/eepsite.help/lib/eepsite.css +++ b/installer/resources/eepsite.help/lib/eepsite.css @@ -1,30 +1,48 @@ -body { background-color:#000000; color: #ffffe0; margin-left: 8.7%; margin-right: 12.9%; margin-top: 6%; margin-bottom: 6%;} -body,h1,h2,h3,h4,p,ul,ol,li,dl,dt,dd,div,td,th,address,blockquote { font-family:"DejaVu Serif", serif; } -h1 { font-size:23pt; margin-bottom:20pt; } -h1.ph1 { font-size:20pt; margin-bottom:18pt; } -h2 { font-size:18pt; margin-bottom:18pt; } -h3 { font-size:16pt; } -h4 { font-size:14pt; } -h5 { font-size:13pt; } -p,ul,ol,li,dl,dt,dd,div,td,th,address,blockquote { font-size:12.2pt; } - -a.footref { font-size: 70%; } -a:link { color:#ffc266; text-decoration:underline; } -a:visited { color:#ffd699; text-decoration:none; } -a:active { color:#ff9900; text-decoration:none; } -a.nonexistent { color: #ffffe0; text-decoration:underline; } -a.nonexistent:visited { color: #ffffe0; text-decoration:none; } - -dl.contents { margin-top: 0; } -dt.contents { margin-bottom: 0; } -em { font-style: italic; } -li,dt { margin-top: 0.2em; } -p.footnote { font-size: 90%; } -p.verse { white-space: pre; margin-left: 8.7%; } -pre { font-family: monospace; white-space: pre; margin-left: 8.7%; } -strong { font-weight: bold; } -table { width:100%; } -td { border:0px solid #000; vertical-align:top; overflow:hidden; } -ul { list-style-type: disc } - - +body { background-color:#000000; color: #ffffe0; margin-left: 8.7%; margin-right: 12.9%; margin-top: 6%; margin-bottom: 6%; text-align: justify; background-image: url(bg.png); } + +body,h1,h2,h3,h4,p,ul,ol,li,dl,dt,dd,div,td,th,address,blockquote {font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; } + + +h1 { font-size:23pt; margin-bottom:20pt; border-bottom: 1px solid #ffbb77; letter-spacing: 0.05em; text-shadow: 0px 0px 24px rgba(255, 96, 48, 0.9); background-image: url(itoopie.png); background-repeat: no-repeat; background-position: right top; line-height; 200% !important; padding-bottom: 10px; word-wrap: no-wrap;} +h1.ph1 { font-size:20pt; margin-bottom:18pt; margin-right: -5px; margin-leftL -5px;} +h2 { font-size:11.5pt; margin-bottom:15px; padding: 5px 10px; border: 1px solid #ffbb77; -moz-border-radius: 5px;background-color:#110500; font-variant: small-caps; text-transform: capitalize; letter-spacing: 0.07em; background-image: url(h2bg.png); background-repeat: no-repeat; background-position: right center;} +h3 { font-size:16pt; } +h4 { font-size:14pt; } +h5 { font-size:13pt; } +p,ul,ol,li,dl,dt,dd,div,td,th,address,blockquote { font-size:9.5pt; } + +a.footref { font-size: 70%; } +a:link { color:#ffc266; text-decoration:none; } +a:visited { color:#ffd699; text-decoration:none; } +a:active { color:#ff9900; text-decoration:none; } +a:hover { color:#ffbb00; text-decoration:underline; } +a.nonexistent { color: #ffffe0; text-decoration:underline; } +a.nonexistent:visited { color: #ffffe0; text-decoration:none; } +a { font-weight: bold; font-size: 10pt; } + +dl.contents { margin-top: 0; } +dt.contents { margin-bottom: 0; } +em { font-style: italic; } +li,dt { margin: 4px 0; padding-right: 25px; list-style: square;} +p.footnote { font-size: 90%; } +p.verse { white-space: pre; margin-left: 8.7%; } +pre { font-family: monospace; white-space: pre; margin-left: 8.7%; } +strong { font-weight: bold; } +table { width:100%; }png +td { border:0px solid #000; vertical-align:top; overflow:hidden; } +ul { list-style-type: disc; margin: 10px 0;} +/* +body { border: 1px solid #ffbb77; -moz-border-radius: 5px; padding: 25px; font-size: 9.5pt; -moz-box-shadow: inset 0px 0px 1px 0px #ffbb77; background-image: url(bg.png); background-repeat: no-repeat; background-position: center center;line-height: 135%; background-attachment: fixed;} +*/ +hr { color: #fb7; background: #fb7; height: 1px; border: 0px solid #fb7; margin: 5px 0; } +div.langbar { margin-top: -25px; text-align: right; font-size: 8.5pt; } +div.langbar a { font-size: 8.5pt; outline: none;} +div.langbar img { border: 0; padding: 4px 2px 0 2px; opacity: 0.7; } +div.langbar img:hover { opacity: 1; } +div.langbar img:last-child { padding-right: 0; } +div.main { border: 2px solid #220800; -moz-border-radius: 5px; padding: 5px 25px 20px 25px; font-size: 9.5pt; -moz-box-shadow: inset 0px 0px 1px 0px #220800; background-color: #220800; min-width: 600px; background-image: url(brown.png);} +div.footnote { font-size: 7.5pt; font-style: italic; text-align: right; } +div.notify { padding: 10px; border: 1px solid #994400; background-color: #440A00; -moz-border-radius: 5px; margin: 15px 0 15px 0;} +div.fairylights { border: 1px solid #ffbb77; -moz-border-radius: 5px; padding: 1px; -moz-box-shadow: inset 0px 0px 1px 0px #ffbb77; background-color: #220800;} + + diff --git a/installer/resources/eepsite.help/lib/es.png b/installer/resources/eepsite.help/lib/es.png new file mode 100644 index 0000000000000000000000000000000000000000..c2de2d7111e3cb59cf6511dd2ab045e824bdb43e GIT binary patch literal 469 zcmV;`0V@89P)@|4`Xj5kLT%`al?B=W5I`&pe;NKW0^Ri&h`xRJ_x;0v zUa?=y?0^3M|NZ~}FE9c#{{3cP{Qd6}13&;Vf!z&M{pZWqKYu4MFm$tgedF}w=P#IQ z7-9gT-$11R0mKA$(qEu4%ok$*y!^wMRm*x;`R7|k6yu?K{s8?55I{^|9{?Tjhec2I zv+6&FhFWG_BbNVc|Ns94tNRJp!0`V!Py;{!F#$2enB#XZaohg-5%Tlk#oa&nzQW9g zl0Y{D4gK?n0U&@Fe=;yIr=|V7caH%YEYL84k`Tt9-wc2LGODP&y?7BIfLMT@X8Qey zK~fSFpuiXa$^klgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&ZpPbxA})RCt{2Tg_`+$q}!f_uhPKY{x4^v~p0C0U2f&w3r+MIm}_% zpu-yWF!!8%^IzuM=3odp_?ANsxvZ9WS2%(QCtd|)StDsi^UAiX+tluA zt5ZMac3rQxWxtB|CXkj+ z&HpA@SDQKR7HKfnuY30B#XHb9D|E+rXXl=I{-xLAsyed2+X=1rYi0-fAx;v|uDIj9 zt+(s{yA`fVWDEFHdfU8Ryc2E*bpO8J{`NuM^JGViZSZPwC#-GIZd9BtxZS#26z@d( zR5%-W^2D@zdv@jDJTz_ojwGjLzb1Afk~?uXZK9+CViU2SpLskq9*-vD%!GM7MCfAL zF^{I9^>brh=o$>)4-G#EwEo@Cv*G_8)~=>W=uMSY#?A(P{= z+PXcQ)0wRuTa&s;kK{{QMrawKa}>;@6Y+Sm4C_*v$H3uSCG*(V1*4dEL5c&)mx(U6 zjD)AJx1)EYyx~GN5#dK^88lYwXOYzHuqauG)I}B~dD0{Kl9myHF7M0ZSN3@FAzR|> zkfm%VVZm66`C5j5y5_!?`Fc-FfEHz&<1fXq;(SA3@N?WgeEVr1(hk zWQ8u|m9z@6Wyt72d^ds1>_em_kflf;L2{Ao_*O&F<*Sz9D_Q<|G8Y5a-^b%Ee2aWJ z#L3Zy-iURPWu$oz*q}w-%`~8-J51~drDMdS66b4#(+ON98EwV#7Ce!84+QWcM>t41 zzBHe4gd#*HPInbYn02zrTqKKu8Q5};)$JE99JvyXqbQQRf(BPT+}W%^wHhkk6QX@w z#EI;WeNV($JVAaeTpRS%+5c=aGUo!h?f zA>;#+b4&?WQo408df>oQl!D|{nXIKDIsqr?GsvIF5X!o&KU(d4%;ySfHNOb?>eXDb zNcDjPplTBR6K9 zF7S{)c%qYH68Qv~U{T-LXP^#Q@X7ZP7Z+2g*ORkzbv1*dqltT0;?=>ywdLn6uC%vn7=oWT3{qj)U&mb0^jhYxuEA6$vqP^q=>??sUKjcDuD+>x_%F1(HlhBW3a{Ee@g?Cdll3?qy!*BB$tliHLi@-RBsC*3VI1pu2Ug)VJqy-J5!|*@kwrg8M&& z;pMS9zVdZ9aBNsLx-luXagK-rbOcfJ5-vkr^z|Veo`cBMDd>}K%DYMTTb1k?eXw2F zZ7NWtV~%|;WSlei&`xmfHGGFFipN8_E-GF&@ZBiyK84fKJN52D=vEuB(R=_8>Up|X zCO+x?e&{MQIr0i3sA!>_#us@Kl2LUh$58E`-9v}4a^w~BXS5^osico08}q}wxNk8*Xn)z$F66no zIX05z=jv8M_rkgJbr+vz=_zt!vx&=vCvKsqFyjMv>#le#&zB&A!Ugie zb*+vmWZYM346k1gJxsB=*zCt}&*d*n6-jKK=>geo}At@JbYoaO_a%R?zFU zU^1yg1#N@oK2FDdi7EWJZ!pCiEsQ(A-odrnZzsDkMiz# z&-j8Y^je5F>Umh{Ms&;U!pZY9mn9j%t>#{)o4r)wNnbSsxN&x|Le`{~=q}DKmdw3u zT_u(Dab&MuRc(flAJ}g1x;KVuCfQg=CFtfN^!Y1~BRX^qW#*jDVhzjQTvU`f`fZEyM(CJFwGCe|V`I`!-X$2~$uFqeFdg4H<*J5fx#AWwP7K zO?+J}U#NS@*xTqXtX8fv{+7BI%8fVq__<3e$#V$DLI}~ziA;r8lM_xk4b63tm)G8vGy4DF zpc~OOQNF&RQtMix+l}XC!Qn)voQw&e7oNdckf(d$*d_9tVT$>@4$Wo@@j*S~>gl7j z+YSD?4;0UjW7pT|?pQRY^oaRCt`FSP58_WfngF|KELq3tU#Oj3O>1sboSFh9NGwjWbqi zxZu<@O$=FS=2NyfO=ebOnaT55xFwlmGNq5Ap{Rl45|$cKh>8j*T(}o5+Y5=Q;QP*7Ke3eCIpo{Vu?N=>+|7^mF_;{4+cp#Cm=BOAIxfJqz#h!$kDclB`Rt z1D8w(BAc%@J|e7g1%#ecNhL<#6i&q1r3$Hu6LU7dMPNStu=G=2UcT7t^-{0hCzRt- z6VIIkU>FdS9vy=RLw)c(-JmQ8y5gIx6pKwopete+#^Y;P^wy$v${=MU7T;w2R`~%n zF6Jv)Sup4FWr*wQrR}gR>wNP~D8R2vpS za73YY*GN0-CqWUT>QuI5kTG2nv^wq2)BZYbAC=ARW(j@wuH8G^e+e%Hk`?)qpbefu zKIPxgB>_)Jf8YRY>2^GR+USxS)7B7a`g3jf9Su-BwH|Vruufl{H%weZYqB2`Fj1uRWH1xWLPWBoWrQAUZ0jp=kg+VXTU?|DMQV7WsEwTXQ+#h z&Q2@cQ+y`VVzNBWD>?Jvrh~tyLUUd7@91kXn4q{v z3s(08%$7*NPDga*%9Z(au1l6Ic@I6#!*SrE^ChNB)#={g?zRQ;aa{ewUbYoLDJihb z>jjqeZ*)4LWa31hYJJkIS+Ec%pQJJ?=+nB}8QHpI^~?zqe9rA}gCS}6G0)W}$BZJ6 zhy-p7HkZ&ACLR)RihErfqh?&NQS zi%MXJ%ak%>i`fz>;=sM%tt%Ez&Q=&kKRx08uh$eEebVXmt`zz~x;jit(a||6d(t;FnHuJHHJRlfW(Sc8M%Hnw+w!2N|9$nX+% z?A!^PUxo zsI08a;swyn+`1Ju+)F7`g>-=f(^l*7PEu`h+dvL6>=;V;JQ!kr19h7ITS(;MV=a9g8|6b zVnAdyf?Iy#toOs4H$gFQAXsS6e_zE+9$KsPhR2j&DnI2WiUWxy4#aI&!D%85OyR(>J0QBW8C;SL&^jV? zimg_}g6D5Vx(?wM2r2~u>v{uP##Dj5nr!euJ9vDsU>WF>&w(ul(a5P|-!S*~WP=r; zPdNsb@LF&NV|5A%xMTxw#5Aaz(gbdmN+L0(r7^i<-LfX(t9Z|YmRmG;7YvIbF%d>-MsR?-u4_@lVKG1;K%VjD;B`d_5>E z$XfPgnLA(%$9N`3Q7EqduvxyuuUR+M_7=9t0EK#~y=Y2&XUhH|ev_U}%0mWZLZ@#oJGQmqCjE zRs{-i(OC$UTefe9U7?}i{1plZ5XCQgLEN|jI!s4p*!0k^oqL{4x^N*JqQrpV`it0D z`DKorLL%xIHcVFa{`;_<`iKu5f)7GM7(;S$?9uY_Z?lgbJN(4x(UB*$T1HQOt5?J4 zcaG=hU$giw!hq@N_}W3?At7vYPEO7mJ~Q#Wbm^0ChlN2ijgiY4b75iO)50;-MtwA9 z{(LB=O`-fEexaVA0ns>gF7JW`-~(rbw6qvhD3EpqQBlye zdGq=-wOai#-nGK0sHnH7ebc7389JSpZUQ{}EL^~2pu2l_e+ozugE9y+d=IUI2R%D9 zn$3e_Vx${T6YTS{;o)v$dU~O3-#++^#_Znh{c^^PQU}YLl~gwx^@CGVxL0#?&o&}F zExfZ4{^2I&7wXLk%W?5>2$;`MZ13%yek*sieRx764GPNfk% za!lWJ{-=@0LoW!M-onqLt44(aXL$lNRS$yPXRa*f*7*2w?wXAoq4?vEArXVqRN>@U z5oZ|dk~hx=RUJKhg#AqjJn$)$iqMB{!$CfsJ&L>zc~A&&)?CnBN(Fg9xZMNoI=9O0 zp~WjJA-G@%O!^#Rj)WjW30NVp){RK1VIVP_0W0CKdq@FF7?kp(2Z5+H528-zMtPXvYj8aPNMUCFf+2MA}! z(C%x&rJoJ;nXg0h-8S&BS`b-SV7x45JaokCK|$cm&4tXn%(Ax0pzMa4gj53#CCZzK z05B9&Ci4}v4_*q5;|P6W_Zj3(J^282(hD;MnJHcV%&K6S%=O-p<4OOjxH#SBbgASF z>v-0yxi|q7-LjiMy#t1X8(Nv|tEaPl_~(bZdd;G3yH`TzK`lYv+1D+&4?1(dq^C}) zQrhZvxTR{Rmtw2Ojo`_}G9Hyo+9p>kTQs9}S3_b#jYqc~&Bn;-TL&>`o7v$ALfaE$ z8jWo0OMx#$Qqjza*of-P?96U&Zk{U3D&x-|K0hlgCaflXLHeQI#+B_Zo2b8`AC8cd z{xciPxA&F{h$M(XIRtc3eT;#TX(MZJ^O!okeZ~}r)u9N|2Gt|R8w7U{Wq%4hg($Pb zX?M!^zO#3+!|v$u;Z#vvkx2iZB2={<$~!dA&|uK`_t#g~M-^=s}PAr(W)@jZF`43SRJOmMabRUYK}lZFlh&9ueUb0MjGl3L*kO+PC2bk z8JcxWp~MOUIofa?PtvZItSfRZeQ%-IL<~ELAIf}U4njkB^3ED Z@E?tJki3ykCV&6{002ovPDHLkV1jYPrA+_; literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/nl.png b/installer/resources/eepsite.help/lib/nl.png new file mode 100644 index 0000000000000000000000000000000000000000..fe44791e32b790949b0317ab3c258864b9024ebe GIT binary patch literal 453 zcmV;$0XqJPP)@|4`Xj5kLTv#?55wQzKoX38|NjLffBpXj6#2y{D-E;(Ab?mHL=FGT z$TP6>fK>na1GWK({(upf0nrSU5*Gz(00%w4e}91F-@gjtJbOE500a;V!?RECzy5mt@dro_q~YJM-#~SLe}OeX zNT7y4|NilCvNABd0|+1%hF>6clER!2lYo}|1|zVkK=SXOfB*mf{rC6ZKVbL)odgg- vjKFAPVE6?_e~=h|kVO7~qZmRm0R$KTYszPUy89K;00000NkvXXu0mjfB$dbi literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/ru.png b/installer/resources/eepsite.help/lib/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..47da4214fd9edb383687c1d4f84fe8b42a51ceb2 GIT binary patch literal 420 zcmV;V0bBlwP)X|NRSO0LlM<{-BURBqYRGSojej zfLOL~|EH_V_~;P>Nc10*D0|Jxss< zFi1)Q<$$6LU}rIc*dU*QNFV}+9T))>0|XG`SD?F)5CbX~O$rDA0t^5@iDe$xIAIn5 O0000a|fPuet^$h(7pHv_{jfB<3vn*8q{15ov!pR5qo|Ns4BVf^v!57RHO zo?l?}`yWs<(7C?=0*LYNK?X*pGKOD3v;Q#s|MUOfZxH$qCjb2cBQWFtZ$@_cPkRpn z1P}|u9|n-AAQdnT|9?TXAyk7H4FCQBl>h_~&`AvcLF)bhMS(&{8jwh^2qVzve;5D) zh>=0RIIAq+{+o}$pxEl(3%2T)`P!1-fBt~{@Pp~sA7J?W`}60ovKZgl)=2;X#KQ37 z&mWM7{{H^+4`$e}UqIEMAo>Rk|KALM|1kdh!vsX^3=B^I0*D0|DL|!?{M^6*VPKPH z00z{*-?BnHps)wJ`QKllIe-8D1EGJQNCgNWMh3}bctpOPvlbWzK!=K^+cJPc;};D5 g19O2S13-WQ0NlBGh$rR(5C8xG07*qoM6N<$f_QiWUjP6A literal 0 HcmV?d00001 diff --git a/installer/resources/eepsite.help/lib/us.png b/installer/resources/eepsite.help/lib/us.png new file mode 100644 index 0000000000000000000000000000000000000000..10f451fe85c41c6c9a06d543a57114ae2f87ecc1 GIT binary patch literal 609 zcmV-n0-pVeP){qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx literal 0 HcmV?d00001 From e883fd6b1b9036b291094a4ccec5e4f9b8115406 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 02:48:49 +0000 Subject: [PATCH 24/72] Let's mirror the actual eepsite contents in the installer.. --- .../resources/eepsite.help/{ => help}/index.html | 0 .../resources/eepsite.help/{ => help}/index_de.html | 0 .../resources/eepsite.help/{ => help}/index_fr.html | 0 .../resources/eepsite.help/{ => help}/index_ru.html | 0 .../resources/eepsite.help/{ => help}/lib/bg.png | Bin .../resources/eepsite.help/{ => help}/lib/brown.png | Bin .../resources/eepsite.help/{ => help}/lib/cn.png | Bin .../resources/eepsite.help/{ => help}/lib/de.png | Bin .../eepsite.help/{ => help}/lib/eepsite.css | 0 .../resources/eepsite.help/{ => help}/lib/es.png | Bin .../resources/eepsite.help/{ => help}/lib/fr.png | Bin .../resources/eepsite.help/{ => help}/lib/h2bg.png | Bin .../eepsite.help/{ => help}/lib/itoopie.png | Bin .../resources/eepsite.help/{ => help}/lib/nl.png | Bin .../resources/eepsite.help/{ => help}/lib/ru.png | Bin .../resources/eepsite.help/{ => help}/lib/se.png | Bin .../resources/eepsite.help/{ => help}/lib/us.png | Bin 17 files changed, 0 insertions(+), 0 deletions(-) rename installer/resources/eepsite.help/{ => help}/index.html (100%) rename installer/resources/eepsite.help/{ => help}/index_de.html (100%) rename installer/resources/eepsite.help/{ => help}/index_fr.html (100%) rename installer/resources/eepsite.help/{ => help}/index_ru.html (100%) rename installer/resources/eepsite.help/{ => help}/lib/bg.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/brown.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/cn.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/de.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/eepsite.css (100%) rename installer/resources/eepsite.help/{ => help}/lib/es.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/fr.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/h2bg.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/itoopie.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/nl.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/ru.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/se.png (100%) rename installer/resources/eepsite.help/{ => help}/lib/us.png (100%) diff --git a/installer/resources/eepsite.help/index.html b/installer/resources/eepsite.help/help/index.html similarity index 100% rename from installer/resources/eepsite.help/index.html rename to installer/resources/eepsite.help/help/index.html diff --git a/installer/resources/eepsite.help/index_de.html b/installer/resources/eepsite.help/help/index_de.html similarity index 100% rename from installer/resources/eepsite.help/index_de.html rename to installer/resources/eepsite.help/help/index_de.html diff --git a/installer/resources/eepsite.help/index_fr.html b/installer/resources/eepsite.help/help/index_fr.html similarity index 100% rename from installer/resources/eepsite.help/index_fr.html rename to installer/resources/eepsite.help/help/index_fr.html diff --git a/installer/resources/eepsite.help/index_ru.html b/installer/resources/eepsite.help/help/index_ru.html similarity index 100% rename from installer/resources/eepsite.help/index_ru.html rename to installer/resources/eepsite.help/help/index_ru.html diff --git a/installer/resources/eepsite.help/lib/bg.png b/installer/resources/eepsite.help/help/lib/bg.png similarity index 100% rename from installer/resources/eepsite.help/lib/bg.png rename to installer/resources/eepsite.help/help/lib/bg.png diff --git a/installer/resources/eepsite.help/lib/brown.png b/installer/resources/eepsite.help/help/lib/brown.png similarity index 100% rename from installer/resources/eepsite.help/lib/brown.png rename to installer/resources/eepsite.help/help/lib/brown.png diff --git a/installer/resources/eepsite.help/lib/cn.png b/installer/resources/eepsite.help/help/lib/cn.png similarity index 100% rename from installer/resources/eepsite.help/lib/cn.png rename to installer/resources/eepsite.help/help/lib/cn.png diff --git a/installer/resources/eepsite.help/lib/de.png b/installer/resources/eepsite.help/help/lib/de.png similarity index 100% rename from installer/resources/eepsite.help/lib/de.png rename to installer/resources/eepsite.help/help/lib/de.png diff --git a/installer/resources/eepsite.help/lib/eepsite.css b/installer/resources/eepsite.help/help/lib/eepsite.css similarity index 100% rename from installer/resources/eepsite.help/lib/eepsite.css rename to installer/resources/eepsite.help/help/lib/eepsite.css diff --git a/installer/resources/eepsite.help/lib/es.png b/installer/resources/eepsite.help/help/lib/es.png similarity index 100% rename from installer/resources/eepsite.help/lib/es.png rename to installer/resources/eepsite.help/help/lib/es.png diff --git a/installer/resources/eepsite.help/lib/fr.png b/installer/resources/eepsite.help/help/lib/fr.png similarity index 100% rename from installer/resources/eepsite.help/lib/fr.png rename to installer/resources/eepsite.help/help/lib/fr.png diff --git a/installer/resources/eepsite.help/lib/h2bg.png b/installer/resources/eepsite.help/help/lib/h2bg.png similarity index 100% rename from installer/resources/eepsite.help/lib/h2bg.png rename to installer/resources/eepsite.help/help/lib/h2bg.png diff --git a/installer/resources/eepsite.help/lib/itoopie.png b/installer/resources/eepsite.help/help/lib/itoopie.png similarity index 100% rename from installer/resources/eepsite.help/lib/itoopie.png rename to installer/resources/eepsite.help/help/lib/itoopie.png diff --git a/installer/resources/eepsite.help/lib/nl.png b/installer/resources/eepsite.help/help/lib/nl.png similarity index 100% rename from installer/resources/eepsite.help/lib/nl.png rename to installer/resources/eepsite.help/help/lib/nl.png diff --git a/installer/resources/eepsite.help/lib/ru.png b/installer/resources/eepsite.help/help/lib/ru.png similarity index 100% rename from installer/resources/eepsite.help/lib/ru.png rename to installer/resources/eepsite.help/help/lib/ru.png diff --git a/installer/resources/eepsite.help/lib/se.png b/installer/resources/eepsite.help/help/lib/se.png similarity index 100% rename from installer/resources/eepsite.help/lib/se.png rename to installer/resources/eepsite.help/help/lib/se.png diff --git a/installer/resources/eepsite.help/lib/us.png b/installer/resources/eepsite.help/help/lib/us.png similarity index 100% rename from installer/resources/eepsite.help/lib/us.png rename to installer/resources/eepsite.help/help/lib/us.png From 934f3d1814b39f21c5f94f5d2b289e69deb06514 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 02:52:04 +0000 Subject: [PATCH 25/72] Move robots.txt to eepsite.help dir; add redirecting index.html --- installer/resources/eepsite.help/index.html | 7 +++++++ installer/resources/{ => eepsite.help}/robots.txt | 0 2 files changed, 7 insertions(+) create mode 100644 installer/resources/eepsite.help/index.html rename installer/resources/{ => eepsite.help}/robots.txt (100%) diff --git a/installer/resources/eepsite.help/index.html b/installer/resources/eepsite.help/index.html new file mode 100644 index 000000000..e3c081a46 --- /dev/null +++ b/installer/resources/eepsite.help/index.html @@ -0,0 +1,7 @@ + + + +I2P Anonymous Webserver + + + diff --git a/installer/resources/robots.txt b/installer/resources/eepsite.help/robots.txt similarity index 100% rename from installer/resources/robots.txt rename to installer/resources/eepsite.help/robots.txt From 6c25f0fd1669b1ea916768df51e649543e06e03b Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 07:21:01 +0000 Subject: [PATCH 26/72] Build.xml mods to accomodate new eepsite structure. --- build.xml | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/build.xml b/build.xml index 5b3abd8f8..6ea526a8c 100644 --- a/build.xml +++ b/build.xml @@ -355,17 +355,30 @@ + - - - - - - + + + + + + + + + + + + + + + + + + From cb81f2c9bac1ee699b43d88f7a3bef7a44190874 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 07:46:03 +0000 Subject: [PATCH 27/72] Updated eepsite indexes with the new layout + pagetemplate.html --- .../resources/eepsite.help/help/index.html | 230 ++++++------ .../resources/eepsite.help/help/index_de.html | 353 +++++++++--------- .../resources/eepsite.help/help/index_fr.html | 236 ++++++------ .../eepsite.help/help/pagetemplate.html | 31 ++ 4 files changed, 451 insertions(+), 399 deletions(-) create mode 100644 installer/resources/eepsite.help/help/pagetemplate.html diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite.help/help/index.html index 33bec5c50..dbe302e31 100644 --- a/installer/resources/eepsite.help/help/index.html +++ b/installer/resources/eepsite.help/help/index.html @@ -1,109 +1,121 @@ - - - Welcome to your eepsite - - - - -

    Welcome to your eepsite

    -

    -(Deutsch) -(French) -(Russian) -

    -

    This is your eepsite - simply edit the files under - ~/.i2p/eepsite/docroot/ (Linux) or %APPDATA%\I2P\eepsite\docroot\ (Windows) - and they'll be reachable by others once you follow the instructions below. - In I2P, eepsites are addressed using a 'key', which is represented as a really long Base64 string. - (The 'key' is somewhat analogous to an IP address, and - is shown on the eepsite's I2PTunnel - configuration page). - The instructions below detail how to assign a name like "mysite.i2p" to your key and - start up your eepsite.

    -

    You can reach your eepsite locally through - http://127.0.0.1:7658/. -

    - -

    Step-by-step instructions for starting your new eepsite and announcing it to the I2P community

    - Your eepsite is stopped by default. - After you start it, it will be difficult for other people to find because it - doesn't have a name and they don't have your really long Base64 key. - You could just tell people that really long key, but thankfully i2p has an address book - and several easy ways to tell people about your eepsite. Here's detailed instructions. -
      -
    • Pick a name for your eepsite (something.i2p). Use all lower-case. - You may wish to check first in your own router's address book - here, - or the file i2p/hosts.txt to see if your name is already taken. - Enter the new name for your eepsite on the - eepsite i2ptunnel configuration page - where it says "Website name". This will replace the default "mysite.i2p". - Also, check the "Auto Start" box. Your eepsite will now start every time you start your router. - Be sure and click "Save". -
    • Click the start button for your eepsite on the - main i2ptunnel configuration page. - You should now see "eepsite" listed under "Local Destinations" on the left side of the - I2P Router Console. - Your eepsite is now running. -
    • Highlight the entire "Local destination" key on the - eepsite i2ptunnel configuration page. - and copy it for - later pasting. Make sure you get the whole thing - it's over 500 characters and it must end in "AAAA". -
    • Enter the name and paste in the destination key into your - master address book. - Click "Add" to add the destination to your address book. -
    • In your browser, enter in your eepsite name (something.i2p) and you should - be right back here. Hopefully it worked. -
    • Before you tell the world about your new eepsite, you should add some content. - Go to ~/.i2p/eepsite/docroot/ (Linux) or %APPDATA%\I2P\eepsite\docroot\ (Windows) - and copy this document (index.html) to help.html so you can refer to it later. - Now edit index.html and add content, pictures, and whatever you would like to share. -
    • Now it's time to add your eepsite to an I2P address book hosted by a site - such as stats.i2p. - That is, you must enter - your eepsite name and key into a web interface on one or more of these sites. - Here is the key entry form at stats.i2p. - Again, your key is the entire "Local destination" key on the - eepsite i2ptunnel configuration page. - Be sure you get the whole thing, ending with "AAAA". - Don't forget to click "add a key". - Check to see if it reports the key was added. - Since many routers periodically get address book updates from these sites, within several hours others will be able to find your - website by simply typing something.i2p into their browser. -
    • Speaking of address book updates, this would be a good time to add some more addressbooks - to your own subscription list. Go to your subscriptions configuration page - and add a couple of these - - http://tino.i2p/hosts.txt, - http://stats.i2p/cgi-bin/newhosts.txt, - http://i2host.i2p/cgi-bin/i2hostetag, - and hit "Save". - Now you will get updates too! -
    • If you are in a hurry and can't wait a few hours, you can tell people to use a "jump" address helper redirection service. - This will work within a few minutes of your entering the key to an address book on the same site. - Test it yourself first by entering - http://stats.i2p/cgi-bin/jump.cgi?a=something.i2p or - or http://i2host.i2p/cgi-bin/i2hostjump?something.i2p - into your browser. - Once it's working, then you can tell others to use it. -
    • Some people check eepsite lists such as - inproxy.tino.i2p/status.php for new eepsites, so you may start getting - a few visitors. But there are plenty of other ways to tell people. Here are a few ideas: - - Note that some sites recommend pasting in that really long destination key. - You can if you want - but - if you have successfully posted your key at an add-key service, - tested it using a jump service, and waited 24 hours for the - address book update to propagate to others, that shouldn't be necessary. -
    • If you have any questions try IRC #i2p or the - technical problems section on - forum.i2p. - Good luck and welcome to I2P! -
    - - + + + I2P Anonymous Webserver | Welcome to your eepsite + + + + + +
    +
    +

    I2P Anonymous Webserver

    +
    + +English +Chinese +Deutsch +Français +Nederlands +Svenska + +
    +

    Quick Guide to Anonymous Webserving on I2P

    + +

    This is your eepsite, your own anonymous I2P webserver - simply edit the files under ./eepsite/docroot/ + and they'll be reachable by others once you follow the instructions below. + In I2P, eepsites are addressed using a 'key', which is represented as a really long Base64 string. + (The 'key' is somewhat analogous to an IP address, and + is shown on the eepsite's I2PTunnel + configuration page). + The instructions below detail how to assign a name like "mysite.i2p" to your key and start up your eepsite.

    +

    You can reach your eepsite locally via + http://127.0.0.1:7658/. +

    + +

    How to set up and announce your eepsite

    + Your eepsite is stopped by default. + After you start it, it will be difficult for other people to find because it + doesn't have a name and they don't have your really long Base64 key. + You could just tell people that really long key, but thankfully i2p has an address book + and several easy ways to tell people about your eepsite. Here's detailed instructions. +
      +
    • Pick a name for your eepsite (something.i2p). Use all lower-case. + You may wish to check first in your own router's address book + here, + or the file i2p/hosts.txt to see if your name is already taken. + Enter the new name for your eepsite on the + eepsite i2ptunnel configuration page + where it says "Website name". This will replace the default "mysite.i2p". + Also, check the "Auto Start" box. Your eepsite will now start every time you start your router. + Be sure to click "Save". +
    • Click the start button for your eepsite on the + main i2ptunnel configuration page. + You should now see "eepsite" listed under "Local Destinations" on the left side of the + I2P Router Console. + Your eepsite is now running. +
    • Highlight the entire "Local destination" key on the + eepsite i2ptunnel configuration page. + and copy it for + later pasting. Make sure you get the whole thing - it's over 500 characters and it must end in "AAAA". +
    • Enter the name and paste in the destination key into your + master address book. + Click "Add" to add the destination to your address book. +
    • In your browser, enter in your eepsite name (something.i2p) and you should + be right back here. Hopefully it worked. +
    • Before you tell the world about your new eepsite, you should add some content. + Go to i2p/eepsite/docroot and replace the index.html redirect page with your own content. Virtual folders work, so you can host files from a sub directory without explicitly needing to provide a page with links to files. If you need a template for a basic site, feel free to borrow and adapt this page and content! +
    +

    Register your own .I2P Domain

      +
    • Now it's time to add your eepsite to an I2P address book hosted by a site + such as stats.i2p. + That is, you must enter + your eepsite name and key into a web interface on one or more of these sites. + Here is the key entry form at stats.i2p. + Again, your key is the entire "Local destination" key on the + eepsite i2ptunnel configuration page. + Be sure you get the whole thing, ending with "AAAA". + Don't forget to click "add a key". + Check to see if it reports the key was added. + Since many routers periodically get address book updates from these sites, within several hours others will be able to find your website by simply typing something.i2p into their browser. +

    Adding Addressbook Subscriptions

      +
    • Speaking of address book updates, this would be a good time to add some more addressbooks + to your own subscription list. Go to your subscriptions configuration page and add a couple of these for an automatically updated list of new hosts: +
    • If you are in a hurry and can't wait a few hours, you can tell people to use a "jump" address helper redirection service. + This will work within a few minutes of your entering the key to an address book on the same site. + Test it yourself first by entering + http://stats.i2p/cgi-bin/jump.cgi?a=something.i2p or + or http://i2host.i2p/cgi-bin/i2hostjump?something.i2p + into your browser. + Once it's working, then you can tell others to use it. +
    • Some people check eepsite lists such as + inproxy.tino.i2p/status.php for new eepsites, so you may start getting + a few visitors. But there are plenty of other ways to tell people. Here are a few ideas: + + Note that some sites recommend pasting in that really long destination key. + You can if you want - but + if you have successfully posted your key at an add-key service, + tested it using a jump service, and waited 24 hours for the + address book update to propagate to others, that shouldn't be necessary.
    +

    Further Assistance

    +Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
    +
    +Document last edited: November 2009.
    +
    + + diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite.help/help/index_de.html index 0c3489cde..78de9ee6a 100644 --- a/installer/resources/eepsite.help/help/index_de.html +++ b/installer/resources/eepsite.help/help/index_de.html @@ -1,172 +1,181 @@ - - - - - Willkommen zu Ihrer Eepsite! - - - - -

    Willkommen zu Ihrer Eepsite!

    -

    Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter -~/.i2p/eepsite/docroot/ (Linux) oder %APPDATA%\I2P\eepsite\docroot\ (Windows) -und nachdem Sie den Anweisungen weiter unten gefolgt sind, werden Sie – -vertreten durch Ihre Eepsite – von anderen im I2P-Netz und, soweit -verfügbar, über private „Out-Proxys“ weltweit erreichbar sein.

    - -

    In I2P werden Eepsites unter Verwendung eines Schlüssels (key) adressiert, dieser wird durch eine sehr lange Base64-Zeichenkette1 dargestellt. -(Dieser Schlüssel ist analog zur Standard IP-Adresse zu verstehen; man kann ihn sich in der Konfiguration für Eepsites unter I2PTunnel anzeigen lassen.)

    - -

    Folgende Anweisungen sollen zeigen, wie man einer Eepsite einen -Namen wie beispielsweise „meineseite.i2p“ zuweist und an dem Schlüssel -bindet. -Sie können Ihre Eepsite, nachdem sie gestartet wurde, lokal unter http://127.0.0.1:7658/ erreichen.

    - -

    Es folgt eine schrittweise Anleitung für das Starten Ihrer neuen Eepsite und dessen Ankündigung in der I2P-Gemeinde.

    - -

    In der Grundeinstellung ist Ihre Eepsite nicht eingeschaltet. -Auch nach dem sie gestartet wurde, ist es für andere Teilnehmer immer -noch schwierig Ihre Seite zu finden, solange bis Sie Ihren -Base64-Schlüssel und den Namen Ihrer Eepsite veröffentlicht haben. -Natürlich können Sie den Leuten diesen sehr langen Schlüssel auch so -mitteilen, aber glücklicherweise bringt I2P bereits ein Adressbuch mit -und hat verschiedene Wege um Ihre Eepsite bekannt zu machen.

    - - -

    Eine detailierte Einführung

    - -

    Meine Eepsite

    - -
      -
    1. Wählen Sie einen eigenen Namen für Ihre Eepsite – nur in diesem -Beispiel heißt sie „meineseite.i2p“ – benutzen Sie nur Kleinschrift. -Sie können in Ihrem Adressbuch überprüfen, ob der gewünschte Name bereits vergeben ist (Anmerkung: die Daten aus den Adressbuch werden im Klartext in der i2p/hosts.txt gespeichert). -
      -
    2. -
    3. Rufen Sie nun, möglichst in einem neuen Browser-Fenster, die Konfiguration für Eepsites I2PTunnel auf. Unter „Local Server Tunnels“ wählen Sie den Eintrag „eepsite“. -Sie befinden sich nun auf der Seite mit Überschrift „Edit server -settings“. In das Feld für „Website name:“ überschreiben Sie die -Vorgabe „mysite.i2p“ mit Ihrem Wunschnamen. Optional geben Sie im Feld -„Description:“ eine Beschreibung an. -
      -
    4. -
    5. Wenn Sie möchten das Ihre Eepsite automatisch gestartet wird, kreuzen Sie das Feld „Auto Start:“ an. -
      -
    6. -
    7. Durch drücken des Links „Add to local addressbook“ gleich rechts -neben Ihrem Schlüssel (Feld „Local destination“) wird Ihr Schlüssel in -Ihr privates Adressbuch geschrieben (i2p/privatehosts.txt). -
      -
    8. -
    9. Jetzt sichern Sie Ihre Einstellungen indem Sie auf „Save“ klicken. -
      -
    10. -
    11. Wir gehen wieder zurück auf die Konfigurationsseite I2PTunnel -und drücken den „Start“-Knopf für die „eepsite“. Nach dem erfolgreichen -Start wird Ihre Eepsite auf der linken Seite in der I2P Router Console unter „Local -Destinations“ angezeigt.
    12. -
    - - - -

    Das Veröffentlichen vorbereiten

    - -
      -
    1. Heben Sie in der „Konfiguration“ -den gesamten Schlüssel für Ihre Eepsite hervor und kopieren ihn in die -Zwischenablage. Stellen Sie sicher auch tatsächlich die gesamte, über -500 Zeichen lange Zeichenkette die auf „AAAA“ endet, „erwischt“ zu -haben. -
      -
    2. -
    3. Öffnen Sie Ihr Master-Adressbuch, -tragen Ihren zuvor gewählten Wunschnamen ihrer Eepsite unter „Hostname“ -ein und kopieren den Schlüssel in das Feld „Destination“. Ein Klick auf -„Add“ und diese „Destination“ ist in Ihrem Adressbuch.2 -
      -
    4. -
    5. Ihre Eepsite sollte jetzt über den Browser erreichbar sein. Dazu -tragen Sie, wie gewohnt, den Namen Ihrer Eepsite (hier im Beispiel -„meineseite.i2p“) in die Adressleiste Ihres Browsers ein und rufen sie -auf. Wenn alles gutgegangen ist, sind Sie nun wieder hier – nur die -Adresse hat sich geändert. -
      -
    6. -
    7. Bevor Sie der Welt von Ihrer neuen Eepsite berichten sollte sie -auch über ein wenig Inhalt verfügen. Begeben Sie sich in das -Verzeichnis „~/.i2p/eepsite/docroot/“ (Linux) oder „%APPDATA%\I2P\eepsite\docroot\“ (Windows) -und benennen Sie dieses Dokument von „index.html“ nach „hilfe.html“ um, so können Sie später darauf zurück greifen. Erstellen Sie Ihre eigene „index.html“ und füllen diese mit Inhalten, Bildern oder was auch immer Sie anderen hierüber mitteilen wollen.
    8. -
    - -

    Die Eepsite öffentlich ankündigen

    - -
      -
    • Nun ist es an der Zeit, Ihre Eepsite in einem globalen I2P-Adressbuch, wie beispielsweise bei stats.i2p, -einzutragen. Das heißt, Sie müssen Namen und Schlüssel Ihrer Eepsite -und eine optionale Beschreibung in ein Formular auf einen oder mehreren -dieser Seiten eingeben. Wie schon oben gesagt, Ihr Schlüssel ist der vollständige Schlüssel wie er in der I2PTunnel Konfiguration für die „Eepsite“ -im Feld „Local destination“ angegeben ist (... über 500 Zeichen, endet -auf „AAAA“). Bestätigen Sie Ihre Angaben mit einem klick auf „Submit“. -Überprüfen Sie ob Ihr Schlüssel tatsächlich hinzugefügt wurde. -
      -
    • -
    • Da viele Router regelmäßig Adressbuchupdates von diesen Seiten -erhalten, sollten andere innerhalb einiger Stunden in der Lage sein, -Ihre Eesite durch -den Eintrag des Namens im Browser aufzurufen. -
      -
    • -
    • Weil wir gerade von Adressbuchupdates sprechen – es ist eine gute Zeit um weitere Adressbücher dem bestehenden Abonnement -hinzuzufügen. Öffnen Sie Ihre Konfiguration und fügen Sie einige der -folgenden Dienste Ihrem Abonnement hinzu (nur die jeweilige URL) und -speichern Sie die Angaben.3 Ab jetzt erhalten Sie ebenso alle Updates automatisch! -
      -

      http://tino.i2p/hosts.txt (tino.i2p)
      -http://stats.i2p/cgi-bin/newhosts.txt (stats.i2p)
      -http://i2host.i2p/cgi-bin/i2hostetag (i2host.i2p) -
      -

      -
    • -
    • Haben Sie es eilig und können nicht 12 bis 24 Stunden warten, ist -es möglich das andere für Ihre Eepseite den „jump“ -Adresshelfer-Umlenkungs-Dienst benutzen. Dieses funktioniert innerhalb -einiger Minuten nach Eingabe des Schlüssels zu einem Adressbuch auf der -gleichen Seite.

      -Zuerst testen Sie das mittels Aufruf folgender Dienste. Sobald das -klappt, können anderen diese Möglichkeit nutzen. (Ersetzen Sie -„meineseite.i2p“ durch Ihre Seite.) -
    • -
    • Manche Leute erkundigen sich auf Eepsites-Listen wie inproxy.tino.i2p/status.php über neue Eepsites, so könnten Sie an einige Besucher kommen. Aber es gibt weitere Wege sich anzukündigen: - -
        -
      • Veröffentlichen Sie eine Nachricht im I2P Forum unter Eepsite Announce
      • -
      • Besuchen sie die IRC-Kanäle #i2p oder #i2p-chat (beide englischsprachig) und Werben Sie sanft für sich.
      • -
      • Verbreiten Sie eine Nachricht über Syndie.
      • -
      • Tragen Sie sich ein in Ughas Eepsite Index Wiki. -
        -
      • -
    • -
    • Bitte beachten Sie, einige Seiten empfehlen das Einfügen des langen -„Destination“-Schlüssels; das können Sie wenn Sie möchten – aber wenn -Sie Ihren Schlüssel erfolgreich beim „Schlüssel-Dienst“ eingetragen und -ihn mittels „jump“-Dienst getestet haben, sollte nach 24 Stunden -Wartezeit dieses Vorgehen nicht nötig sein. -
      -
    • -
    • Sollten Sie Fragen haben, benutzen Sie den IRC-Kanal #i2p oder die technische Abteilung im I2P Forum
    • -
    - - -

    ______________ -

    1. Base64 -beschreibt ein Verfahren zur Kodierung von 8-Bit-Binärdaten in eine -Zeichenfolge, die nur aus wenigen, Codepage-unabhängigen ASCII-Zeichen -besteht. -

    2. Anmerkung: Wenn dieses Vorgehen mit der Fehlermeldung „Invalid nonce. Are you being spoofed?“ quittiert wird, müssen Cookies im Browser erlaubt werden. Ist dies nicht möglich, können Sie mit einem Editor die Datei „i2p/userhosts.txt“ bearbeiten und so die Adressen einfügen. Konqueror ist etwas eigenwillig. -

    3. Gleiches wie unter 2 gilt für „i2p/addressbook/subscriptions.txt“.

    - + + + + + Willkommen zu Ihrer Eepsite! + + + + +
    +
    +

    Willkommen zu Ihrer Eepsite!

    +
    + +English + + Deutsch + + + +
    +

    Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter i2p/eepsite/docroot/ +und nachdem Sie den Anweisungen weiter unten gefolgt sind, werden Sie – +vertreten durch Ihre Eepsite – von anderen im I2P-Netz und, soweit +verfügbar, über private „Out-Proxys“ weltweit erreichbar sein.

    + +

    In I2P werden Eepsites unter Verwendung eines Schlüssels (key) adressiert, dieser wird durch eine sehr lange Base64-Zeichenkette1 dargestellt. +(Dieser Schlüssel ist analog zur Standard IP-Adresse zu verstehen; man kann ihn sich in der Konfiguration für Eepsites unter I2PTunnel anzeigen lassen.)

    + +

    Folgende Anweisungen sollen zeigen, wie man einer Eepsite einen +Namen wie beispielsweise „meineseite.i2p“ zuweist und an dem Schlüssel +bindet. +Sie können Ihre Eepsite, nachdem sie gestartet wurde, lokal unter http://localhost:7658/ erreichen.

    + +

    Es folgt eine schrittweise Anleitung für das Starten Ihrer neuen Eepsite und dessen Ankündigung in der I2P-Gemeinde.

    + +

    In der Grundeinstellung ist Ihre Eepsite nicht eingeschaltet. +Auch nach dem sie gestartet wurde, ist es für andere Teilnehmer immer +noch schwierig Ihre Seite zu finden, solange bis Sie Ihren +Base64-Schlüssel und den Namen Ihrer Eepsite veröffentlicht haben. +Natürlich können Sie den Leuten diesen sehr langen Schlüssel auch so +mitteilen, aber glücklicherweise bringt I2P bereits ein Adressbuch mit +und hat verschiedene Wege um Ihre Eepsite bekannt zu machen.

    + + +

    Eine detailierte Einführung

    + +

    Meine Eepsite

    + +
      +
    1. Wählen Sie einen eigenen Namen für Ihre Eepsite – nur in diesem +Beispiel heißt sie „meineseite.i2p“ – benutzen Sie nur Kleinschrift. +Sie können in Ihrem Adressbuch überprüfen, ob der gewünschte Name bereits vergeben ist (Anmerkung: die Daten aus den Adressbuch werden im Klartext in der i2p/hosts.txt gespeichert). +
      +
    2. +
    3. Rufen Sie nun, möglichst in einem neuen Browser-Fenster, die Konfiguration für Eepsites I2PTunnel auf. Unter „Local Server Tunnels“ wählen Sie den Eintrag „eepsite“. +Sie befinden sich nun auf der Seite mit Überschrift „Edit server +settings“. In das Feld für „Website name:“ überschreiben Sie die +Vorgabe „mysite.i2p“ mit Ihrem Wunschnamen. Optional geben Sie im Feld +„Description:“ eine Beschreibung an. +
      +
    4. +
    5. Wenn Sie möchten das Ihre Eepsite automatisch gestartet wird, kreuzen Sie das Feld „Auto Start:“ an. +
      +
    6. +
    7. Durch drücken des Links „Add to local addressbook“ gleich rechts +neben Ihrem Schlüssel (Feld „Local destination“) wird Ihr Schlüssel in +Ihr privates Adressbuch geschrieben (i2p/privatehosts.txt). +
      +
    8. +
    9. Jetzt sichern Sie Ihre Einstellungen indem Sie auf „Save“ klicken. +
      +
    10. +
    11. Wir gehen wieder zurück auf die Konfigurationsseite I2PTunnel +und drücken den „Start“-Knopf für die „eepsite“. Nach dem erfolgreichen +Start wird Ihre Eepsite auf der linken Seite in der I2P Router Console unter „Local +Destinations“ angezeigt.
    12. +
    + + + +

    Das Veröffentlichen vorbereiten

    + +
      +
    1. Heben Sie in der „Konfiguration“ +den gesamten Schlüssel für Ihre Eepsite hervor und kopieren ihn in die +Zwischenablage. Stellen Sie sicher auch tatsächlich die gesamte, über +500 Zeichen lange Zeichenkette die auf „AAAA“ endet, „erwischt“ zu +haben. +
      +
    2. +
    3. Öffnen Sie Ihr Master-Adressbuch, +tragen Ihren zuvor gewählten Wunschnamen ihrer Eepsite unter „Hostname“ +ein und kopieren den Schlüssel in das Feld „Destination“. Ein Klick auf +„Add“ und diese „Destination“ ist in Ihrem Adressbuch.2 +
      +
    4. +
    5. Ihre Eepsite sollte jetzt über den Browser erreichbar sein. Dazu +tragen Sie, wie gewohnt, den Namen Ihrer Eepsite (hier im Beispiel +„meineseite.i2p“) in die Adressleiste Ihres Browsers ein und rufen sie +auf. Wenn alles gutgegangen ist, sind Sie nun wieder hier – nur die +Adresse hat sich geändert. +
      +
    6. +
    7. Bevor Sie der Welt von Ihrer neuen Eepsite berichten sollte sie +auch über ein wenig Inhalt verfügen. Begeben Sie sich in das +Verzeichnis „i2p/Eepsite/docroot“ und benennen Sie dieses Dokument von „index.html“ nach „hilfe.html“ um, so können Sie später darauf zurück greifen. Erstellen Sie Ihre eigene „index.html“ und füllen diese mit Inhalten, Bildern oder was auch immer Sie anderen hierüber mitteilen wollen.
    8. +
    + +

    Die Eepsite öffentlich ankündigen

    + +
      +
    • Nun ist es an der Zeit, Ihre Eepsite in einem globalen I2P-Adressbuch, wie beispielsweise bei stats.i2p, +einzutragen. Das heißt, Sie müssen Namen und Schlüssel Ihrer Eepsite +und eine optionale Beschreibung in ein Formular auf einen oder mehreren +dieser Seiten eingeben. Wie schon oben gesagt, Ihr Schlüssel ist der vollständige Schlüssel wie er in der I2PTunnel Konfiguration für die „Eepsite“ +im Feld „Local destination“ angegeben ist (... über 500 Zeichen, endet +auf „AAAA“). Bestätigen Sie Ihre Angaben mit einem klick auf „Submit“. +Überprüfen Sie ob Ihr Schlüssel tatsächlich hinzugefügt wurde. +
      +
    • +
    • Da viele Router regelmäßig Adressbuchupdates von diesen Seiten +erhalten, sollten andere innerhalb einiger Stunden in der Lage sein, +Ihre Eesite durch +den Eintrag des Namens im Browser aufzurufen. +
      +
    • +
    • Weil wir gerade von Adressbuchupdates sprechen – es ist eine gute Zeit um weitere Adressbücher dem bestehenden Abonnement +hinzuzufügen. Öffnen Sie Ihre Konfiguration und fügen Sie einige der +folgenden Dienste Ihrem Abonnement hinzu (nur die jeweilige URL) und +speichern Sie die Angaben.3 Ab jetzt erhalten Sie ebenso alle Updates automatisch! +
      +

      http://tino.i2p/hosts.txt (tino.i2p)
      +http://stats.i2p/cgi-bin/newhosts.txt (stats.i2p)
      +http://i2host.i2p/cgi-bin/i2hostetag (i2host.i2p) +
      +

      +
    • +
    • Haben Sie es eilig und können nicht 12 bis 24 Stunden warten, ist +es möglich das andere für Ihre Eepseite den „jump“ +Adresshelfer-Umlenkungs-Dienst benutzen. Dieses funktioniert innerhalb +einiger Minuten nach Eingabe des Schlüssels zu einem Adressbuch auf der +gleichen Seite.

      +Zuerst testen Sie das mittels Aufruf folgender Dienste. Sobald das +klappt, können anderen diese Möglichkeit nutzen. (Ersetzen Sie +„meineseite.i2p“ durch Ihre Seite.) +
    • +
    • Manche Leute erkundigen sich auf Eepsites-Listen wie inproxy.tino.i2p/status.php über neue Eepsites, so könnten Sie an einige Besucher kommen. Aber es gibt weitere Wege sich anzukündigen: + +
        +
      • Veröffentlichen Sie eine Nachricht im I2P Forum unter Eepsite Announce
      • +
      • Besuchen sie die IRC-Kanäle #i2p oder #i2p-chat (beide englischsprachig) und Werben Sie sanft für sich.
      • +
      • Verbreiten Sie eine Nachricht über Syndie.
      • +
      • Tragen Sie sich ein in Ughas Eepsite Index Wiki. +
        +
      • +
    • +
    • Bitte beachten Sie, einige Seiten empfehlen das Einfügen des langen +„Destination“-Schlüssels; das können Sie wenn Sie möchten – aber wenn +Sie Ihren Schlüssel erfolgreich beim „Schlüssel-Dienst“ eingetragen und +ihn mittels „jump“-Dienst getestet haben, sollte nach 24 Stunden +Wartezeit dieses Vorgehen nicht nötig sein. +
      +
    • +
    • Sollten Sie Fragen haben, benutzen Sie den IRC-Kanal #i2p oder die technische Abteilung im I2P Forum
    • +
    + + +

    1. Base64 +beschreibt ein Verfahren zur Kodierung von 8-Bit-Binärdaten in eine +Zeichenfolge, die nur aus wenigen, Codepage-unabhängigen ASCII-Zeichen +besteht. +

    2. Anmerkung: Wenn dieses Vorgehen mit der Fehlermeldung „Invalid nonce. Are you being spoofed?“ quittiert wird, müssen Cookies im Browser erlaubt werden. Ist dies nicht möglich, können Sie mit einem Editor die Datei „i2p/userhosts.txt“ bearbeiten und so die Adressen einfügen. Konqueror ist etwas eigenwillig. +

    3. Gleiches wie unter 2 gilt für „i2p/addressbook/subscriptions.txt“.

    +
    + diff --git a/installer/resources/eepsite.help/help/index_fr.html b/installer/resources/eepsite.help/help/index_fr.html index f707f96ba..9fe3374cb 100644 --- a/installer/resources/eepsite.help/help/index_fr.html +++ b/installer/resources/eepsite.help/help/index_fr.html @@ -1,118 +1,118 @@ - - - I2P serveur web anonyme | Bienvenue à votre eepsite - - - - - -
    -
    -

    Serveur web anonyme I2P

    -
    - -English -Chinese -Deutsch -Français -Nederlands -Svenska - -
    -

    Un mini guide pour faire un serveur web anonyme utilisant I2P

    - -

    C'est votre eepsite qui fonctionne sur votre propre serveur web anonyme I2P. Afin de le mettre en route, simplement éditer les fichiers sous ./eepsite/docroot/ - et ils seront accessibles aux autres internautes dès que vous avez suivi les instructions suivantes. - Avec I2P, on accède aux eepsites en utilisant une 'clé', qui est réprésentée par une chaîne de caractères de base64. - (Cette 'clé' est un analogue d'une adresse IP et elle est montrée sur l'eepsite's I2PTunnel - Page de configuration). - Les instructions ci dessous expliquent comment associer un nom de site tel que "monsite.i2p" à votre clé et ensuite comment lancer votre eepsite.

    -

    Vous pouvez accéder votre eepsite localement via - http://127.0.0.1:7658/. -

    - -

    Comment configurer et annoncer votre eepsite

    - Votre eepsite ne fonctionne pas par défaut. - Après que vous l'ayez lancé, il sera difficile à trouver pour les internautes, car ils n'ont pas le nom de votre site et votre longue clé base64. - - Vous pourriez simplement distribuer cette très longue clé manuellement. Mais, heureusement il y un carnet d'adresse I2P - et plusieurs manières faciles de faire connaitre votre eepsite. Voici les instructions détaillées : -
      -
    • Choissisez un nom pour votre eepsite (quelquechose.i2p). Tout en minuscule. - D'abord, vérifiez dans le carnet d'adresse de votre router - ici, - ou dans le fichier i2p/hosts.txt pour voir si le nom a déjà été pris. - Entrez le nouveau nom de votre eepsite sur le - eepsite i2ptunnel page de configuration - où c'est marqué "Website name". Cela remplacera le nom défaut "mysite.i2p". - En outre, cochez "Auto Start". Votre eepsite démarrera automatiquement chaque fois que vous lancez votre router I2P. - Soyez certain de cliquer sur "Save". -
    • Cliquez sur le bouton marqué "start" - main i2ptunnel page de configuration pour lancer votre eepsite. - Maintenant vous devriez voir "eepsite" indiqué sous "Local Destinations" sur le côté gauche de votre - I2P Router Console. - Votre eepsite fonctionne. -
    • Surlignez la clé de "Local destination" en entier sur le - eepsite i2ptunnel page de configuration - et copiez-la pour la coller plus tard. - Soyez certain de copier la clé entière - elle a plus de 500 octets et elle se termine avec "AAAA". -
    • Entrez le nom et coller la clé de destination dans votre - master address book. - Cliquez sur "Add" pour ajouter la destination à votre carnet d'adresse. -
    • Dans votre explorateur internet, entrez le nom de votre eepsite (quelquechose.i2p) et vous devriez vous retrouver sur cette page. - Avec un peu de chance - si vous êtes arrivé ici, c'est que ça a marché ! -
    • Avant de parler à tout le monde de votre nouvel eepsite, vous devriez ajouter du contenu. - Allez à i2p/eepsite/docroot et remplacez la page index.html avec votre propre page. Les dossiers virtuels fonctionnent, donc vous pouvez héberger un sous-dossier sans explicitement ajouter des liens vers des fichiers. Si vous avez besoin d'un gabarit pour un site de base, n'hésitez pas à utiliser et à changer cette page et contenu! -
    -

    Enregistrer votre propre .I2P domaine

      -
    • Maintenant il faut ajouter votre eepsite au carnet d'adresse hébergé par un site - tel que stats.i2p. - C'est-à-dire, vous devez entrer - votre nom d'eepsite et sa clé dans l'interface web d'un ou plus de ces sites. - Voici le formulaire pour l'entrée d'une clé à stats.i2p. - Encore, votre clé est la "Local destination", disponible en entier ici - eepsite i2ptunnel page de configuration. - Prenez toute la clé, souvenez qu'elle se termine en "AAAA". - N'oubliez pas de cliquer sur "add a key". - Vérifiez que le site montre que la clé a été correctement ajoutée. - Comme beaucoup de routers se mettent à jour regulièrement à partir de ces sites, en quelques heures d'autres internautes seront capables de trouver et d'accéder à votre eepsite simplement en tapant quelquechose.i2p dans leurs explorateurs internet. -

    Comment ajouter des abonnements au carnet d'adresse.

      -
    • En parlant de mises à jour de carnet d'adresse, il serait prudent d'ajouter quelques carnets d'adresses de plus - à votre subscription list. Allez sur votre page d'abonnements et ajoutez quelques listes directement ci dessous afin que votre liste d'hôtes soit mise à jour automatiquement : -
    • Si vous êtes pressé et que vous ne pouvez pas attendre quelques heures, vous pouvez demander aux autres d'utiliser un "jump" (service d'aide de ré-direction d'adresse). - Cela marchera en quelques minutes après que vous ayez entré votre clé dans le carnet d'adresse sur le même site. - Testez-le vous-même en entrant : - http://stats.i2p/cgi-bin/jump.cgi?a=quelquechose.i2p - ou http://i2host.i2p/cgi-bin/i2hostjump?quelquechose.i2p - dans votre explorateur internet. - Dès que cela fonctionne, vous pouvez en parler aux autres. -
    • Certains personnes vérifient les nouveaux eepsites sur les listes tels que - inproxy.tino.i2p/status.php. Vous pouvez commencer à avoir - quelques visiteurs. Il y a beaucoup des manières d'informers les autres. Voici quelques idées : - - A noter que certains sites recommandent de coller la clé de destination directement. Vous pouvez si vous voulez, - mais si vous avez déjà réussi à poster la clé sur un service de "add key" (type stats.i2p), et attendu 24 heures pour que le carnet d'adresse - se propage aux autres, cela ne doit pas être nécessaire.
    -

    Plus d'assistance

    -Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
    -
    -Document last edited: November 2009.
    -
    - - + + + I2P serveur web anonyme | Bienvenue à votre eepsite + + + + + +
    +
    +

    Serveur web anonyme I2P

    +
    + +English +Chinese +Deutsch +Français +Nederlands +Svenska + +
    +

    Un mini guide pour faire un serveur web anonyme utilisant I2P

    + +

    C'est votre eepsite qui fonctionne sur votre propre serveur web anonyme I2P. Afin de le mettre en route, simplement éditer les fichiers sous ./eepsite/docroot/ + et ils seront accessibles aux autres internautes dès que vous avez suivi les instructions suivantes. + Avec I2P, on accède aux eepsites en utilisant une 'clé', qui est réprésentée par une chaîne de caractères de base64. + (Cette 'clé' est un analogue d'une adresse IP et elle est montrée sur l'eepsite's I2PTunnel + Page de configuration). + Les instructions ci dessous expliquent comment associer un nom de site tel que "monsite.i2p" à votre clé et ensuite comment lancer votre eepsite.

    +

    Vous pouvez accéder votre eepsite localement via + http://127.0.0.1:7658/. +

    + +

    Comment configurer et annoncer votre eepsite

    + Votre eepsite ne fonctionne pas par défaut. + Après que vous l'ayez lancé, il sera difficile à trouver pour les internautes, car ils n'ont pas le nom de votre site et votre longue clé base64. + + Vous pourriez simplement distribuer cette très longue clé manuellement. Mais, heureusement il y un carnet d'adresse I2P + et plusieurs manières faciles de faire connaitre votre eepsite. Voici les instructions détaillées : +
      +
    • Choissisez un nom pour votre eepsite (quelquechose.i2p). Tout en minuscule. + D'abord, vérifiez dans le carnet d'adresse de votre router + ici, + ou dans le fichier i2p/hosts.txt pour voir si le nom a déjà été pris. + Entrez le nouveau nom de votre eepsite sur le + eepsite i2ptunnel page de configuration + où c'est marqué "Website name". Cela remplacera le nom défaut "mysite.i2p". + En outre, cochez "Auto Start". Votre eepsite démarrera automatiquement chaque fois que vous lancez votre router I2P. + Soyez certain de cliquer sur "Save". +
    • Cliquez sur le bouton marqué "start" + main i2ptunnel page de configuration pour lancer votre eepsite. + Maintenant vous devriez voir "eepsite" indiqué sous "Local Destinations" sur le côté gauche de votre + I2P Router Console. + Votre eepsite fonctionne. +
    • Surlignez la clé de "Local destination" en entier sur le + eepsite i2ptunnel page de configuration + et copiez-la pour la coller plus tard. + Soyez certain de copier la clé entière - elle a plus de 500 octets et elle se termine avec "AAAA". +
    • Entrez le nom et coller la clé de destination dans votre + master address book. + Cliquez sur "Add" pour ajouter la destination à votre carnet d'adresse. +
    • Dans votre explorateur internet, entrez le nom de votre eepsite (quelquechose.i2p) et vous devriez vous retrouver sur cette page. + Avec un peu de chance - si vous êtes arrivé ici, c'est que ça a marché ! +
    • Avant de parler à tout le monde de votre nouvel eepsite, vous devriez ajouter du contenu. + Allez à i2p/eepsite/docroot et remplacez la page index.html avec votre propre page. Les dossiers virtuels fonctionnent, donc vous pouvez héberger un sous-dossier sans explicitement ajouter des liens vers des fichiers. Si vous avez besoin d'un gabarit pour un site de base, n'hésitez pas à utiliser et à changer cette page et contenu! +
    +

    Enregistrer votre propre .I2P domaine

      +
    • Maintenant il faut ajouter votre eepsite au carnet d'adresse hébergé par un site + tel que stats.i2p. + C'est-à-dire, vous devez entrer + votre nom d'eepsite et sa clé dans l'interface web d'un ou plus de ces sites. + Voici le formulaire pour l'entrée d'une clé à stats.i2p. + Encore, votre clé est la "Local destination", disponible en entier ici + eepsite i2ptunnel page de configuration. + Prenez toute la clé, souvenez qu'elle se termine en "AAAA". + N'oubliez pas de cliquer sur "add a key". + Vérifiez que le site montre que la clé a été correctement ajoutée. + Comme beaucoup de routers se mettent à jour regulièrement à partir de ces sites, en quelques heures d'autres internautes seront capables de trouver et d'accéder à votre eepsite simplement en tapant quelquechose.i2p dans leurs explorateurs internet. +

    Comment ajouter des abonnements au carnet d'adresse.

      +
    • En parlant de mises à jour de carnet d'adresse, il serait prudent d'ajouter quelques carnets d'adresses de plus + à votre subscription list. Allez sur votre page d'abonnements et ajoutez quelques listes directement ci dessous afin que votre liste d'hôtes soit mise à jour automatiquement : +
    • Si vous êtes pressé et que vous ne pouvez pas attendre quelques heures, vous pouvez demander aux autres d'utiliser un "jump" (service d'aide de ré-direction d'adresse). + Cela marchera en quelques minutes après que vous ayez entré votre clé dans le carnet d'adresse sur le même site. + Testez-le vous-même en entrant : + http://stats.i2p/cgi-bin/jump.cgi?a=quelquechose.i2p + ou http://i2host.i2p/cgi-bin/i2hostjump?quelquechose.i2p + dans votre explorateur internet. + Dès que cela fonctionne, vous pouvez en parler aux autres. +
    • Certains personnes vérifient les nouveaux eepsites sur les listes tels que + inproxy.tino.i2p/status.php. Vous pouvez commencer à avoir + quelques visiteurs. Il y a beaucoup des manières d'informers les autres. Voici quelques idées : + + A noter que certains sites recommandent de coller la clé de destination directement. Vous pouvez si vous voulez, + mais si vous avez déjà réussi à poster la clé sur un service de "add key" (type stats.i2p), et attendu 24 heures pour que le carnet d'adresse + se propage aux autres, cela ne doit pas être nécessaire.
    +

    Plus d'assistance

    +Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
    +
    +Document last edited: November 2009.
    +
    + + diff --git a/installer/resources/eepsite.help/help/pagetemplate.html b/installer/resources/eepsite.help/help/pagetemplate.html new file mode 100644 index 000000000..df3d69f4e --- /dev/null +++ b/installer/resources/eepsite.help/help/pagetemplate.html @@ -0,0 +1,31 @@ + + + MY OWN EEPSITE + + + + +
    +
    +

    MY EEPSITE

    +
    + +English +Chinese +Deutsch +Français +Nederlands +Svenska + +
    +

    Words and pictures and stuff

    +Your cool stuff here... +
    +Bring more attention to something of interest here! +
    +
    +Document last edited: November 2009.
    +
    +
    + + From 25e6b6e6c44a101e902747d77a10dff8d304e470 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 08:00:37 +0000 Subject: [PATCH 28/72] Add a note to history.txt re eespite changes. --- history.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history.txt b/history.txt index bdfdbf910..cd0031bf5 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2010-01-21 dr|z3d + * New eepsite structure and enhanced pages. Now with graphics and stuff! + 2010-01-19 sponge * Firewall fix for NTCP, where firewalls will forget a NAT relationship on a stream... AKA setting keepalive. This should fix the stuck NTCP From 7df3bde2ce5606b46ecec70966b88d037e2f5b15 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 08:18:55 +0000 Subject: [PATCH 29/72] Add Russian to the eepsite index; prettify the Russian index with the new css. Minor tweaks to the css. --- .../resources/eepsite.help/help/index.html | 3 ++- .../resources/eepsite.help/help/index_de.html | 11 ++++++----- .../resources/eepsite.help/help/index_fr.html | 4 ++-- .../resources/eepsite.help/help/index_ru.html | 17 ++++++++++++++--- .../resources/eepsite.help/help/lib/eepsite.css | 4 ++-- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite.help/help/index.html index dbe302e31..282db7e0f 100644 --- a/installer/resources/eepsite.help/help/index.html +++ b/installer/resources/eepsite.help/help/index.html @@ -14,7 +14,8 @@ English Chinese Deutsch -Français +Français +Русский Nederlands Svenska diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite.help/help/index_de.html index 78de9ee6a..bab4ba01e 100644 --- a/installer/resources/eepsite.help/help/index_de.html +++ b/installer/resources/eepsite.help/help/index_de.html @@ -13,11 +13,12 @@
    English - - Deutsch - - - +Chinese +Deutsch +Français +Русский +Nederlands +Svenska

    Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter i2p/eepsite/docroot/ und nachdem Sie den Anweisungen weiter unten gefolgt sind, werden Sie – diff --git a/installer/resources/eepsite.help/help/index_fr.html b/installer/resources/eepsite.help/help/index_fr.html index 9fe3374cb..903985d7c 100644 --- a/installer/resources/eepsite.help/help/index_fr.html +++ b/installer/resources/eepsite.help/help/index_fr.html @@ -14,10 +14,10 @@ English Chinese Deutsch -Français +Français +Русский Nederlands Svenska -

    Un mini guide pour faire un serveur web anonyme utilisant I2P

    diff --git a/installer/resources/eepsite.help/help/index_ru.html b/installer/resources/eepsite.help/help/index_ru.html index ec88c76c8..b0a556096 100644 --- a/installer/resources/eepsite.help/help/index_ru.html +++ b/installer/resources/eepsite.help/help/index_ru.html @@ -2,14 +2,25 @@ Анонимный I2P веб-сервер | Добро пожаловать на ваш I2P-сайт - + - +
    +

    Анонимный I2P веб-сервер

    +
    + +English +Chinese +Deutsch +Français +Русский +Nederlands +Svenska +

    Краткое руководство по анонимному хостингу сайтов в I2P

    @@ -89,6 +100,6 @@

    На основе шаблонов: zzz, 07.10.2009 и dr|z3d, Ноябрь 2009
    - +
    diff --git a/installer/resources/eepsite.help/help/lib/eepsite.css b/installer/resources/eepsite.help/help/lib/eepsite.css index 7dd17f5c9..5c965dcd8 100644 --- a/installer/resources/eepsite.help/help/lib/eepsite.css +++ b/installer/resources/eepsite.help/help/lib/eepsite.css @@ -1,4 +1,4 @@ -body { background-color:#000000; color: #ffffe0; margin-left: 8.7%; margin-right: 12.9%; margin-top: 6%; margin-bottom: 6%; text-align: justify; background-image: url(bg.png); } +body { background-color:#000000; color: #ffffe0; margin-left: 8%; margin-right: 8%; margin-top: 6%; margin-bottom: 6%; text-align: justify; background-image: url(bg.png); } body,h1,h2,h3,h4,p,ul,ol,li,dl,dt,dd,div,td,th,address,blockquote {font-family: "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; } @@ -40,7 +40,7 @@ div.langbar a { font-size: 8.5pt; outline: none;} div.langbar img { border: 0; padding: 4px 2px 0 2px; opacity: 0.7; } div.langbar img:hover { opacity: 1; } div.langbar img:last-child { padding-right: 0; } -div.main { border: 2px solid #220800; -moz-border-radius: 5px; padding: 5px 25px 20px 25px; font-size: 9.5pt; -moz-box-shadow: inset 0px 0px 1px 0px #220800; background-color: #220800; min-width: 600px; background-image: url(brown.png);} +div.main { border: 2px solid #220800; -moz-border-radius: 5px; padding: 5px 25px 20px 25px; font-size: 9.5pt; -moz-box-shadow: inset 0px 0px 1px 0px #220800; background-color: #220800; background-image: url(brown.png);} div.footnote { font-size: 7.5pt; font-style: italic; text-align: right; } div.notify { padding: 10px; border: 1px solid #994400; background-color: #440A00; -moz-border-radius: 5px; margin: 15px 0 15px 0;} div.fairylights { border: 1px solid #ffbb77; -moz-border-radius: 5px; padding: 1px; -moz-box-shadow: inset 0px 0px 1px 0px #ffbb77; background-color: #220800;} From 511c1e7b9d87268f722f123da361fdf76c28dc6f Mon Sep 17 00:00:00 2001 From: forget Date: Thu, 21 Jan 2010 08:50:36 +0000 Subject: [PATCH 30/72] Re-added: docroot location on Windows (from October'2009 version by zzz) --- installer/resources/eepsite.help/help/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite.help/help/index.html index 282db7e0f..c5be8fa36 100644 --- a/installer/resources/eepsite.help/help/index.html +++ b/installer/resources/eepsite.help/help/index.html @@ -12,17 +12,17 @@
    English -Chinese +中文 Deutsch -Français -Русский +Français Nederlands +Русский Svenska

    Quick Guide to Anonymous Webserving on I2P

    -

    This is your eepsite, your own anonymous I2P webserver - simply edit the files under ./eepsite/docroot/ +

    This is your eepsite, your own anonymous I2P webserver - simply edit the files under ~/.i2p/eepsite/docroot/ (Linux) or %APPDATA%\I2P\eepsite\docroot\ (Windows) and they'll be reachable by others once you follow the instructions below. In I2P, eepsites are addressed using a 'key', which is represented as a really long Base64 string. (The 'key' is somewhat analogous to an IP address, and @@ -64,7 +64,7 @@

  • In your browser, enter in your eepsite name (something.i2p) and you should be right back here. Hopefully it worked.
  • Before you tell the world about your new eepsite, you should add some content. - Go to i2p/eepsite/docroot and replace the index.html redirect page with your own content. Virtual folders work, so you can host files from a sub directory without explicitly needing to provide a page with links to files. If you need a template for a basic site, feel free to borrow and adapt this page and content! + Go to ~/.i2p/eepsite/docroot/ (Linux) or %APPDATA%\I2P\eepsite\docroot\ (Windows) and replace the index.html redirect page with your own content. Virtual folders work, so you can host files from a sub directory without explicitly needing to provide a page with links to files. If you need a template for a basic site, feel free to borrow and adapt this page and content!

    Register your own .I2P Domain

    • Now it's time to add your eepsite to an I2P address book hosted by a site From 0fd55f8b07329f299330d051142ac9f7db247acc Mon Sep 17 00:00:00 2001 From: forget Date: Thu, 21 Jan 2010 08:50:54 +0000 Subject: [PATCH 31/72] Added: missing non-translated welcome page from dr|z3d's template. --- .../resources/eepsite.help/help/index_na.html | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 installer/resources/eepsite.help/help/index_na.html diff --git a/installer/resources/eepsite.help/help/index_na.html b/installer/resources/eepsite.help/help/index_na.html new file mode 100644 index 000000000..1475c6eba --- /dev/null +++ b/installer/resources/eepsite.help/help/index_na.html @@ -0,0 +1,40 @@ + + + I2P Anonymous Webserver | I'm a non-translated welcome page + + + + +
      +
      +

      I2P Anonymous Webserver

      +
      + +English +中文 +Deutsch +Français +Nederlands +Русский +Svenska + +
      +

      Help translate this page into your language!

      +
      +If you're viewing this page and not an actual translation of the welcome page into your +native tongue, that's because it hasn't been done yet! I2P +needs your help! Please consider helping I2P become more accessible +to non-English speakers by volunteering some time translating the following : + + +Please visit our IRC support channel via #i2p on Freenode or +anonymously via your resident I2P IRC tunnel for more information.
      +
      +Document last edited: November 2009.
      +
      +
      + + From 103c15f000baffba26495d53f42142c2ca791d6b Mon Sep 17 00:00:00 2001 From: forget Date: Thu, 21 Jan 2010 08:53:31 +0000 Subject: [PATCH 32/72] Russian translation updated to dr|z3d's template, links to the Russian page moved to the alphabetically sorted position --- .../resources/eepsite.help/help/index_de.html | 4 +- .../resources/eepsite.help/help/index_fr.html | 4 +- .../resources/eepsite.help/help/index_ru.html | 55 +++++++++---------- .../eepsite.help/help/pagetemplate.html | 5 +- 4 files changed, 33 insertions(+), 35 deletions(-) diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite.help/help/index_de.html index bab4ba01e..f65f991c4 100644 --- a/installer/resources/eepsite.help/help/index_de.html +++ b/installer/resources/eepsite.help/help/index_de.html @@ -13,11 +13,11 @@
      English -Chinese +中文 Deutsch Français -Русский Nederlands +Русский Svenska

      Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter i2p/eepsite/docroot/ diff --git a/installer/resources/eepsite.help/help/index_fr.html b/installer/resources/eepsite.help/help/index_fr.html index 903985d7c..a7c7515b5 100644 --- a/installer/resources/eepsite.help/help/index_fr.html +++ b/installer/resources/eepsite.help/help/index_fr.html @@ -12,11 +12,11 @@

      English -Chinese +中文 Deutsch Français -Русский Nederlands +Русский Svenska

      Un mini guide pour faire un serveur web anonyme utilisant I2P

      diff --git a/installer/resources/eepsite.help/help/index_ru.html b/installer/resources/eepsite.help/help/index_ru.html index b0a556096..3fca0f2e6 100644 --- a/installer/resources/eepsite.help/help/index_ru.html +++ b/installer/resources/eepsite.help/help/index_ru.html @@ -1,59 +1,58 @@ - Анонимный I2P веб-сервер | Добро пожаловать на ваш I2P-сайт - + Анонимный I2P веб-сервер | Добро пожаловать на ваш I2P-сайт + -
      -

      Анонимный I2P веб-сервер

      +

      Анонимный I2P веб-сервер

      English -Chinese +中文 Deutsch -Français -Русский +Français Nederlands -Svenska +Русский +Svenska

      Краткое руководство по анонимному хостингу сайтов в I2P

      -Эта страничка — Ваш I2P-сайт, Ваш собственный анонимный I2P-вебсервер. Отредактируйте файлы в директории ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows), выполните шаги из инструкции ниже и Ваш сайт увидят другие пользователи. - -В I2P сайты адресуются по их «ключу», который выглядит как очень длинная Base64 строка. Этот «ключ» частично выполняет функцию IP-адреса и указан на +Эта страничка - Ваш I2P-сайт, Ваш собственный анонимный I2P-вебсервер. Отредактируйте файлы в директории ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows), выполните шаги из инструкции ниже и Ваш сайт увидят другие пользователи. + +В I2P сайты адресуются по их «ключу», который выглядит как очень длинная Base64 строка. Этот «ключ» частично выполняет функцию IP-адреса и указан на странице настроек туннеля i2p-сайта. Далее мы расскажем Вам, как присвоить своему ключу имя типа «mysite.i2p» и запустить Ваш i2p-сайт.

      - +

      Попробуйте открыть локально свой i2p-сайт через http://127.0.0.1:7658/.

      Как запустить и анонсировать свой I2P-сайт

      - + Ваш i2p-сайт по умолчанию остановлен. Хотя Вы его и запустили, другим людям трудно его найти, ведь у сайта пока нет имени, а Ваш очень-длинный-Base64-ключ никому не известен. Вы, конечно, можете просто выдавать людям этот очень-длинный-Base64-ключ, но, к счастью, в I2P есть механизм адресных книг и несколько простых способов для сообщения людям о своем сайте. Далее подробные инструкции. - +
      • Выберите имя для своего сайта (something.i2p). Используйте только символы в нижнем регистре. Загляните в адресную книгу Вашего маршрутизатора или в файл i2p/hosts.txt для проверки, возможно такое имя уже кто-то занял. Введите новое имя Вашего сайта на странице настроек туннеля для i2p-сайта в поле «Имя веб-сайта». Это заменит имя сайта по умолчанию «mysite.i2p». Поставьте галочку «Автозапуск». Ваш сайт будет доступен извне всегда, когда запущен Ваш маршрутизатор. Не забудьте нажать «Сохранить».
      • Кликните в менеджере туннелей на кнопке запуска вашего сайта. Вы должны увидеть запись «i2p-сайт» в списке «Локальные туннели» в левой части консоли маршрутизатора. С этого момента Ваш сайт запущен. - +
      • Выделите всю строчку «Локальный адрес назначения» на странице настроек туннеля вашего I2P-сайта и скопируйте её. Убедитесь, что Вы скопировали строку целиком – ее длина больше 500 символов, строка должна заканчиваться на «AAAA».
      • Введите имя и вставьте ключ в Вашу основную адресную книгу. Нажмите «Добавить» для добавления адреса в адресную книгу. - +
      • Введите в браузере имя Вашего сайта (something.i2p), Вы должны снова попасть на эту страницу. Надеемся, что это сработало. - -
      • Перед тем как Вы сообщите миру о своем новом сайте, имеет смысл добавить на него какой-нибудь контент. Зайдите в директорию ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows) и скопируйте этот документ (index.html) в help.html, чтобы к нему можно было обращаться. Теперь Вы можете отредактировать index.html и добавить в него свой текст, картинки, все, чем Вы хотите поделиться с миром. + +
      • Перед тем как Вы сообщите миру о своем новом сайте, имеет смысл добавить на него какой-нибудь контент. Зайдите в директорию ~/.i2p/eepsite/docroot/ (Linux) или %APPDATA%\I2P\eepsite\docroot\ (Windows) и замените заготовку страницы index.html на Вашу информацию. Есть поддержка виртуальных папок, так что можно выкладывать файлы из поддиректорий. Если Вам нужна заготовка простого сайта, не стесняйтесь взять за основу эту страницу и эти элементы оформления!

      Зарегистрируйте свой .I2P домен

        - +
      • Теперь пора добавить Ваш сайт в адресные книги, расположенные на сайтах-каталогах, например stats.i2p. Введите имя и ключ своего сайта через веб-интерфейс нескольких таких сайтов-каталогов. Вот форма для ввода ключа на сайте stats.i2p. Напоминаем, ключ — это вся строка «Локальный адрес назначения» на странице настройки туннеля «I2P webserver». Проверьте, что Вы скопировали его целиком, включая «AAAA» на конце. Не забудьте нажать «Add a key». Дождитесь пока система отрапортует, что ключ был добавлен. Поскольку многие маршрутизаторы периодически обновляют свои адресные книги, обращаясь к этим сайтам-каталогам, уже через несколько часов кто-нибудь откроет Ваш сайт, просто набрав something.i2p в адресной строке браузера.
      @@ -81,25 +80,23 @@ Некоторые сайты рекомендуют вставлять в анонс Ваш очень-длинный-Base64-ключ. Вы, конечно, можете, если хотите. На самом деле, это не нужно, раз Вы уже добавили свой ключ на jump-сервисе, проверили его работу и подождали 24 часа, чтобы обновление адресной книги успело разойтись по всему I2P-миру.
    - +

    А что потом?

    - -
    -
    -На основе шаблонов: zzz, 07.10.2009 и dr|z3d, Ноябрь 2009 + +
    +На основе шаблонов: zzz, 07.10.2009 и dr|z3d, Ноябрь 2009.
    - - + diff --git a/installer/resources/eepsite.help/help/pagetemplate.html b/installer/resources/eepsite.help/help/pagetemplate.html index df3d69f4e..fea7378de 100644 --- a/installer/resources/eepsite.help/help/pagetemplate.html +++ b/installer/resources/eepsite.help/help/pagetemplate.html @@ -11,10 +11,11 @@
    English -Chinese +中文 Deutsch -Français +Français Nederlands +Русский Svenska
    From 1c7f098d9b71448afcdf2af03ceb157bdff8e589 Mon Sep 17 00:00:00 2001 From: z3d Date: Thu, 21 Jan 2010 11:46:52 +0000 Subject: [PATCH 33/72] Add missing index_na.html to our eepsite stash. --- .../resources/eepsite.help/help/index_na.html | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 installer/resources/eepsite.help/help/index_na.html diff --git a/installer/resources/eepsite.help/help/index_na.html b/installer/resources/eepsite.help/help/index_na.html new file mode 100644 index 000000000..4b54eb6c0 --- /dev/null +++ b/installer/resources/eepsite.help/help/index_na.html @@ -0,0 +1,39 @@ + + + I2P Anonymous Webserver | I'm a non-translated welcome page + + + + +
    +
    +

    I2P Anonymous Webserver

    +
    + +English +Chinese +Deutsch +Français +Nederlands +Svenska + +
    +

    Help translate this page into your language!

    +
    +If you're viewing this page and not an actual translation of the welcome page into your +native tongue, that's because it hasn't been done yet! I2P +needs your help! Please consider helping I2P become more accessible +to non-English speakers by volunteering some time translating the following : + + +Please visit our IRC support channel via #i2p on Freenode or +anonymously via your resident I2P IRC tunnel for more information.
    +
    +Document last edited: November 2009.
    +
    +
    + + From 6b59356bc5b07964027abdd4ef12fe5cd5ef89ef Mon Sep 17 00:00:00 2001 From: forget Date: Thu, 21 Jan 2010 12:14:11 +0000 Subject: [PATCH 34/72] disapproval of revision 'df747c3515cd167431e6e003a732943e35aef79d' --- .../resources/eepsite.help/help/index_na.html | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 installer/resources/eepsite.help/help/index_na.html diff --git a/installer/resources/eepsite.help/help/index_na.html b/installer/resources/eepsite.help/help/index_na.html deleted file mode 100644 index 4b54eb6c0..000000000 --- a/installer/resources/eepsite.help/help/index_na.html +++ /dev/null @@ -1,39 +0,0 @@ - - - I2P Anonymous Webserver | I'm a non-translated welcome page - - - - -
    -
    -

    I2P Anonymous Webserver

    -
    - -English -Chinese -Deutsch -Français -Nederlands -Svenska - -
    -

    Help translate this page into your language!

    -
    -If you're viewing this page and not an actual translation of the welcome page into your -native tongue, that's because it hasn't been done yet! I2P -needs your help! Please consider helping I2P become more accessible -to non-English speakers by volunteering some time translating the following : - - -Please visit our IRC support channel via #i2p on Freenode or -anonymously via your resident I2P IRC tunnel for more information.
    -
    -Document last edited: November 2009.
    -
    -
    - - From 7b48f6387ff9517bdd12f50f5715879a9f4e0a71 Mon Sep 17 00:00:00 2001 From: forget Date: Thu, 21 Jan 2010 13:22:15 +0000 Subject: [PATCH 35/72] build.xml tweaks for batch copying the eepsite.help --- build.xml | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/build.xml b/build.xml index 6ea526a8c..0d1f55374 100644 --- a/build.xml +++ b/build.xml @@ -359,26 +359,13 @@ - + - - + + - - - - - - - - - - - - - From 958a5a3c4e5891401f7c603ac8d59746190f01b9 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 21 Jan 2010 14:17:10 +0000 Subject: [PATCH 36/72] * eepget.bat: Add to pkg --- build.xml | 1 + installer/install.xml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/build.xml b/build.xml index 5b3abd8f8..e90b578ce 100644 --- a/build.xml +++ b/build.xml @@ -301,6 +301,7 @@ + diff --git a/installer/install.xml b/installer/install.xml index e8165c52f..639ad3df9 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -138,6 +138,8 @@ + + Date: Thu, 21 Jan 2010 14:17:37 +0000 Subject: [PATCH 37/72] * I2PTunnelServer: Fix bug preventing connection retries at startup from working --- .../net/i2p/i2ptunnel/I2PTunnelServer.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java index ff21c27c4..a00fc7d8d 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java @@ -4,6 +4,7 @@ package net.i2p.i2ptunnel; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -98,6 +99,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { else _usePool = DEFAULT_USE_POOL; } + private void init(InetAddress host, int port, InputStream privData, String privkeyname, Logging l) { this.l = l; this.remoteHost = host; @@ -113,15 +115,26 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { } } + // copy the privData to a new BAIS, so we can always reset() it if we have to retry + ByteArrayInputStream privDataCopy; + try { + privDataCopy = copyOfInputStream(privData); + } catch (IOException ioe) { + _log.log(Log.CRIT, "Cannot read private key data for " + privkeyname, ioe); + return; + } + + // Todo: Can't stop a tunnel from the UI while it's in this loop (no session yet) while (sockMgr == null) { synchronized (slock) { - sockMgr = I2PSocketManagerFactory.createManager(privData, getTunnel().host, portNum, + sockMgr = I2PSocketManagerFactory.createManager(privDataCopy, getTunnel().host, portNum, props); } if (sockMgr == null) { _log.log(Log.CRIT, "Unable to create socket manager"); try { Thread.sleep(10*1000); } catch (InterruptedException ie) {} + privDataCopy.reset(); } } @@ -132,6 +145,24 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable { open = true; } + /** + * Copy input stream to a byte array, so we can retry + * @since 0.7.10 + */ + private static ByteArrayInputStream copyOfInputStream(InputStream is) throws IOException { + byte[] buf = new byte[128]; + ByteArrayOutputStream os = new ByteArrayOutputStream(768); + try { + int read; + while ((read = is.read(buf)) >= 0) { + os.write(buf, 0, read); + } + } finally { + try { is.close(); } catch (IOException ioe) {} + // don't need to close BAOS + } + return new ByteArrayInputStream(os.toByteArray()); + } /** * Start running the I2PTunnelServer. From 09d3dc8e90ed4e59b9f8cdc96811e4c30e955952 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 21 Jan 2010 14:18:31 +0000 Subject: [PATCH 38/72] * Logs: Don't be quite so noisy in the wrapper log if we can't open the router log --- core/java/src/net/i2p/util/LogWriter.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java index eeb22d56c..0a62ba07a 100644 --- a/core/java/src/net/i2p/util/LogWriter.java +++ b/core/java/src/net/i2p/util/LogWriter.java @@ -126,7 +126,11 @@ class LogWriter implements Runnable { private void writeRecord(String val) { if (val == null) return; - if (_currentOut == null) rotateFile(); + if (_currentOut == null) { + rotateFile(); + if (_currentOut == null) + return; // hosed + } try { _currentOut.write(val); @@ -168,8 +172,7 @@ class LogWriter implements Runnable { try { _currentOut = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8")); } catch (IOException ioe) { - System.err.println("Error rotating into [" + f.getAbsolutePath() + "]"); - ioe.printStackTrace(); + System.err.println("Error rotating into [" + f.getAbsolutePath() + "]" + ioe); } } From 5338dc55402d9bc94f45c0d22c4cb06d55417848 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 21 Jan 2010 14:19:38 +0000 Subject: [PATCH 39/72] * Properties: Don't play games with \r and \n on load/save, it was causing fatal issues on DOS if your username started with r or n --- core/java/src/net/i2p/data/DataHelper.java | 9 +++++++-- router/java/src/net/i2p/router/Router.java | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 982241581..6c7ed7dd1 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -280,8 +280,13 @@ public class DataHelper { String val = line.substring(split+1); //.trim() ?????????????? // Unescape line breaks after loading. // Remember: "\" needs escaping both for regex and string. - val = val.replaceAll("\\\\r","\r"); - val = val.replaceAll("\\\\n","\n"); + + // For some reason this was turning \r (one backslash) into CR, + // I think it needed one more \\ in the pattern?, + // which sucks if your username is randy on DOS, + // it was a horrible idea anyway + //val = val.replaceAll("\\\\r","\r"); + //val = val.replaceAll("\\\\n","\n"); if ( (key.length() > 0) && (val.length() > 0) ) if (forceLowerCase) props.setProperty(key.toLowerCase(), val); diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 6c97b2124..77a73f65a 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -1053,8 +1053,9 @@ public class Router { String val = _config.getProperty(key); // Escape line breaks before saving. // Remember: "\" needs escaping both for regex and string. - val = val.replaceAll("\\r","\\\\r"); - val = val.replaceAll("\\n","\\\\n"); + // NOOO - see comments in DataHelper + //val = val.replaceAll("\\r","\\\\r"); + //val = val.replaceAll("\\n","\\\\n"); buf.append(key).append('=').append(val).append('\n'); } } From a9e4248c938f9767b05ac141f7a19ee8a26e395e Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 21 Jan 2010 14:22:32 +0000 Subject: [PATCH 40/72] Increase ff count; -6 --- history.txt | 11 +++++++++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../networkdb/kademlia/FloodfillMonitorJob.java | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/history.txt b/history.txt index bdfdbf910..92ed0aaa5 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,14 @@ +2010-01-21 zzz + * eepget.bat: Add to pkg + * Floodfills: Increase max to 15 (was 9) and min to 10 (was 4) + * I2PTunnelServer: Fix bug preventing connection retries + at startup from working + * Logs: Don't be quite so noisy in the wrapper log if we + can't open the router log + * Properties: Don't play games with \r and \n on load/save, + it was causing fatal issues on DOS if your username started + with r or n + 2010-01-19 sponge * Firewall fix for NTCP, where firewalls will forget a NAT relationship on a stream... AKA setting keepalive. This should fix the stuck NTCP diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 869f2a488..a3eccadc4 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 = "-rc"; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java index 24a25b930..3f24a5e10 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java @@ -26,8 +26,8 @@ class FloodfillMonitorJob extends JobImpl { private static final int REQUEUE_DELAY = 60*60*1000; private static final long MIN_UPTIME = 2*60*60*1000; private static final long MIN_CHANGE_DELAY = 6*60*60*1000; - private static final int MIN_FF = 4; - private static final int MAX_FF = 9; + private static final int MIN_FF = 10; + private static final int MAX_FF = 15; private static final String PROP_FLOODFILL_PARTICIPANT = "router.floodfillParticipant"; public FloodfillMonitorJob(RouterContext context, FloodfillNetworkDatabaseFacade facade) { From 7efab75c3cf6399fbbea672a887976869d33ce26 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 21 Jan 2010 19:44:49 +0000 Subject: [PATCH 41/72] 0.7.10 --- build.xml | 40 +++++++++++-------- core/java/src/net/i2p/CoreVersion.java | 2 +- core/java/src/net/i2p/util/LogWriter.java | 2 +- history.txt | 2 + installer/install.xml | 2 +- installer/resources/initialNews.xml | 4 +- installer/resources/news.xml | 25 +++++------- .../src/net/i2p/router/RouterVersion.java | 4 +- 8 files changed, 43 insertions(+), 38 deletions(-) diff --git a/build.xml b/build.xml index e90b578ce..29eb93d90 100644 --- a/build.xml +++ b/build.xml @@ -649,7 +649,7 @@ - + @@ -659,15 +659,19 @@ - + - - - - - - + + + + + + + + + + @@ -712,13 +716,16 @@ - + + + + - + @@ -731,20 +738,20 @@ - + - + - + - + @@ -755,12 +762,13 @@ - + - + + diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 2c9da4e47..c569b119f 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.7.9"; + public final static String VERSION = "0.7.10"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java index 0a62ba07a..2135eefe1 100644 --- a/core/java/src/net/i2p/util/LogWriter.java +++ b/core/java/src/net/i2p/util/LogWriter.java @@ -164,7 +164,7 @@ class LogWriter implements Runnable { } } if (!parent.isDirectory()) { - System.err.println("wtf, we cannot put the logs in a subdirectory of a plain file! we want to stre the log as " + f.getAbsolutePath()); + System.err.println("Cannot put the logs in a subdirectory of a plain file: " + f.getAbsolutePath()); //System.exit(0); } } diff --git a/history.txt b/history.txt index 92ed0aaa5..37b883863 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,5 @@ +* 2010-01-22 0.7.10 released + 2010-01-21 zzz * eepget.bat: Add to pkg * Floodfills: Increase max to 15 (was 9) and min to 10 (was 4) diff --git a/installer/install.xml b/installer/install.xml index 639ad3df9..cf330e4f8 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.7.9 + 0.7.10 diff --git a/installer/resources/initialNews.xml b/installer/resources/initialNews.xml index a23654b94..8e33ec57d 100644 --- a/installer/resources/initialNews.xml +++ b/installer/resources/initialNews.xml @@ -1,5 +1,5 @@ - - + +

    • Congratulations on getting I2P installed!

    Welcome to I2P! diff --git a/installer/resources/news.xml b/installer/resources/news.xml index fc0aa4267..cd8e9ecb8 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,25 +1,20 @@ - - -

    + + +

    -0.7.9 fixes several longstanding bugs causing message corruption. -We are hopeful that network performance will improve once it is widely deployed. -There are other changes that should help router reachability and tunnel build success rates. -The release also includes additional translation support, and a full Russian translation by "forget" -which was sponsored by "russiansponsor". +0.7.10 closes some recently-discovered vulnerabilities related to the +way routers communicate with floodfill peers. +Network database stores and verifies are moved from exploratory to client tunnels, and are encrypted.

    -There are more changes to reduce memory and CPU usage, -and other bug fixes. +Also, to improve anonymity, router's fast peer set is now limited to a maximum of 30. +The release also fixes a bug causing Windows installs to fail when the install or user path +contained a "\r" or "\n". Upgrading is recommended. -As a reminder to those still using port 8887, -please help those who are vulnerable to blocking by changing UDP to a random port on -the network configuration page -and adjusting your firewall if necessary. Please give the developers feedback on IRC #i2p or forum.i2p and get involved or donate! We are still looking for help on new and existing translations. -Please volunteer on IRC #i2p. +Please volunteer on IRC #i2p.

    diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a3eccadc4..200f91ede 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,10 +18,10 @@ 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 = 0; /** for example "-test" */ - public final static String EXTRA = "-rc"; + public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); From 06efe306c3f048751fbb6f721d35d6acb816fcf5 Mon Sep 17 00:00:00 2001 From: forget Date: Fri, 22 Jan 2010 17:04:59 +0000 Subject: [PATCH 42/72] Deutsch eepsite help text updated to the latest version by zzz (October'2009). Fixed i2host.i2p url typo. --- .../resources/eepsite.help/help/index_de.html | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite.help/help/index_de.html index f65f991c4..263d9a487 100644 --- a/installer/resources/eepsite.help/help/index_de.html +++ b/installer/resources/eepsite.help/help/index_de.html @@ -20,18 +20,19 @@ Русский Svenska -

    Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter i2p/eepsite/docroot/ +

    Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter +~/.i2p/eepsite/docroot/ (Linux) oder %APPDATA%\I2P\eepsite\docroot\ (Windows) und nachdem Sie den Anweisungen weiter unten gefolgt sind, werden Sie – vertreten durch Ihre Eepsite – von anderen im I2P-Netz und, soweit verfügbar, über private „Out-Proxys“ weltweit erreichbar sein.

    In I2P werden Eepsites unter Verwendung eines Schlüssels (key) adressiert, dieser wird durch eine sehr lange Base64-Zeichenkette1 dargestellt. -(Dieser Schlüssel ist analog zur Standard IP-Adresse zu verstehen; man kann ihn sich in der Konfiguration für Eepsites unter I2PTunnel anzeigen lassen.)

    +(Dieser Schlüssel ist analog zur Standard IP-Adresse zu verstehen; man kann ihn sich in der Konfiguration für Eepsites unter I2PTunnel anzeigen lassen.)

    Folgende Anweisungen sollen zeigen, wie man einer Eepsite einen Namen wie beispielsweise „meineseite.i2p“ zuweist und an dem Schlüssel bindet. -Sie können Ihre Eepsite, nachdem sie gestartet wurde, lokal unter http://localhost:7658/ erreichen.

    +Sie können Ihre Eepsite, nachdem sie gestartet wurde, lokal unter http://127.0.0.1:7658/ erreichen.

    Es folgt eine schrittweise Anleitung für das Starten Ihrer neuen Eepsite und dessen Ankündigung in der I2P-Gemeinde.

    @@ -51,10 +52,10 @@ und hat verschiedene Wege um Ihre Eepsite bekannt zu machen.

    1. Wählen Sie einen eigenen Namen für Ihre Eepsite – nur in diesem Beispiel heißt sie „meineseite.i2p“ – benutzen Sie nur Kleinschrift. -Sie können in Ihrem Adressbuch überprüfen, ob der gewünschte Name bereits vergeben ist (Anmerkung: die Daten aus den Adressbuch werden im Klartext in der i2p/hosts.txt gespeichert). +Sie können in Ihrem Adressbuch überprüfen, ob der gewünschte Name bereits vergeben ist (Anmerkung: die Daten aus den Adressbuch werden im Klartext in der i2p/hosts.txt gespeichert).

    2. -
    3. Rufen Sie nun, möglichst in einem neuen Browser-Fenster, die Konfiguration für Eepsites I2PTunnel auf. Unter „Local Server Tunnels“ wählen Sie den Eintrag „eepsite“. +
    4. Rufen Sie nun, möglichst in einem neuen Browser-Fenster, die Konfiguration für Eepsites I2PTunnel auf. Unter „Local Server Tunnels“ wählen Sie den Eintrag „eepsite“. Sie befinden sich nun auf der Seite mit Überschrift „Edit server settings“. In das Feld für „Website name:“ überschreiben Sie die Vorgabe „mysite.i2p“ mit Ihrem Wunschnamen. Optional geben Sie im Feld @@ -72,9 +73,9 @@ Ihr privates Adressbuch geschrieben (i2p/privatehosts.txt).
    5. Jetzt sichern Sie Ihre Einstellungen indem Sie auf „Save“ klicken.

    6. -
    7. Wir gehen wieder zurück auf die Konfigurationsseite I2PTunnel +
    8. Wir gehen wieder zurück auf die Konfigurationsseite I2PTunnel und drücken den „Start“-Knopf für die „eepsite“. Nach dem erfolgreichen -Start wird Ihre Eepsite auf der linken Seite in der I2P Router Console unter „Local +Start wird Ihre Eepsite auf der linken Seite in der I2P Router Console unter „Local Destinations“ angezeigt.
    @@ -83,14 +84,14 @@ Destinations“ angezeigt.
  • Das Veröffentlichen vorbereiten

      -
    1. Heben Sie in der „Konfiguration“ +
    2. Heben Sie in der „Konfiguration“ den gesamten Schlüssel für Ihre Eepsite hervor und kopieren ihn in die Zwischenablage. Stellen Sie sicher auch tatsächlich die gesamte, über 500 Zeichen lange Zeichenkette die auf „AAAA“ endet, „erwischt“ zu haben.

    3. -
    4. Öffnen Sie Ihr Master-Adressbuch, +
    5. Öffnen Sie Ihr Master-Adressbuch, tragen Ihren zuvor gewählten Wunschnamen ihrer Eepsite unter „Hostname“ ein und kopieren den Schlüssel in das Feld „Destination“. Ein Klick auf „Add“ und diese „Destination“ ist in Ihrem Adressbuch.2 @@ -105,7 +106,8 @@ Adresse hat sich geändert.
    6. Bevor Sie der Welt von Ihrer neuen Eepsite berichten sollte sie auch über ein wenig Inhalt verfügen. Begeben Sie sich in das -Verzeichnis „i2p/Eepsite/docroot“ und benennen Sie dieses Dokument von „index.html“ nach „hilfe.html“ um, so können Sie später darauf zurück greifen. Erstellen Sie Ihre eigene „index.html“ und füllen diese mit Inhalten, Bildern oder was auch immer Sie anderen hierüber mitteilen wollen.
    7. +Verzeichnis „~/.i2p/eepsite/docroot/“ (Linux) oder „%APPDATA%\I2P\eepsite\docroot\“ (Windows) +und benennen Sie dieses Dokument von „index.html“ nach „hilfe.html“ um, so können Sie später darauf zurück greifen. Erstellen Sie Ihre eigene „index.html“ und füllen diese mit Inhalten, Bildern oder was auch immer Sie anderen hierüber mitteilen wollen.

    Die Eepsite öffentlich ankündigen

    @@ -114,7 +116,7 @@ Verzeichnis „i2p/Eepsite/docroot“ und benennen Sie dieses Dokument
  • Nun ist es an der Zeit, Ihre Eepsite in einem globalen I2P-Adressbuch, wie beispielsweise bei stats.i2p, einzutragen. Das heißt, Sie müssen Namen und Schlüssel Ihrer Eepsite und eine optionale Beschreibung in ein Formular auf einen oder mehreren -dieser Seiten eingeben. Wie schon oben gesagt, Ihr Schlüssel ist der vollständige Schlüssel wie er in der I2PTunnel Konfiguration für die „Eepsite“ +dieser Seiten eingeben. Wie schon oben gesagt, Ihr Schlüssel ist der vollständige Schlüssel wie er in der I2PTunnel Konfiguration für die „Eepsite“ im Feld „Local destination“ angegeben ist (... über 500 Zeichen, endet auf „AAAA“). Bestätigen Sie Ihre Angaben mit einem klick auf „Submit“. Überprüfen Sie ob Ihr Schlüssel tatsächlich hinzugefügt wurde. @@ -126,14 +128,14 @@ Ihre Eesite durch den Eintrag des Namens im Browser aufzurufen.

  • -
  • Weil wir gerade von Adressbuchupdates sprechen – es ist eine gute Zeit um weitere Adressbücher dem bestehenden Abonnement +
  • Weil wir gerade von Adressbuchupdates sprechen – es ist eine gute Zeit um weitere Adressbücher dem bestehenden Abonnement hinzuzufügen. Öffnen Sie Ihre Konfiguration und fügen Sie einige der folgenden Dienste Ihrem Abonnement hinzu (nur die jeweilige URL) und speichern Sie die Angaben.3 Ab jetzt erhalten Sie ebenso alle Updates automatisch!

    http://tino.i2p/hosts.txt (tino.i2p)
    http://stats.i2p/cgi-bin/newhosts.txt (stats.i2p)
    -http://i2host.i2p/cgi-bin/i2hostetag (i2host.i2p) +http://i2host.i2p/cgi-bin/i2hostetag (i2host.i2p)

  • From 959bf4a7f47bbad6541b3762dc1f6aa19be48403 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 02:11:55 +0000 Subject: [PATCH 43/72] limit max graph size --- .../java/src/net/i2p/router/web/GraphHelper.java | 9 ++++++--- .../java/src/net/i2p/router/web/StatSummarizer.java | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java index ede694f1d..2d676bdac 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java @@ -25,6 +25,9 @@ public class GraphHelper extends HelperBase { private static final int DEFAULT_Y = 100; private static final int DEFAULT_REFRESH = 60; private static final int DEFAULT_PERIODS = 60; + static final int MAX_X = 2048; + static final int MAX_Y = 1024; + private static final int MIN_REFRESH = 15; public GraphHelper() { } @@ -45,13 +48,13 @@ public class GraphHelper extends HelperBase { } public void setShowEvents(boolean b) { _showEvents = b; } public void setHeight(String str) { - try { _height = Integer.parseInt(str); } catch (NumberFormatException nfe) {} + try { _height = Math.min(Integer.parseInt(str), MAX_Y); } catch (NumberFormatException nfe) {} } public void setWidth(String str) { - try { _width = Integer.parseInt(str); } catch (NumberFormatException nfe) {} + try { _width = Math.min(Integer.parseInt(str), MAX_X); } catch (NumberFormatException nfe) {} } public void setRefreshDelay(String str) { - try { _refreshDelaySeconds = Integer.parseInt(str); } catch (NumberFormatException nfe) {} + try { _refreshDelaySeconds = Math.max(Integer.parseInt(str), MIN_REFRESH); } catch (NumberFormatException nfe) {} } public String getImages() { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java index 4b29475a1..15232fbcc 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java @@ -119,6 +119,10 @@ public class StatSummarizer implements Runnable { return renderPng(rate, out, -1, -1, false, false, false, false, -1, true); } public boolean renderPng(Rate rate, OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException { + if (width > GraphHelper.MAX_X) + width = GraphHelper.MAX_X; + if (height > GraphHelper.MAX_Y) + height = GraphHelper.MAX_Y; for (int i = 0; i < _listeners.size(); i++) { SummaryListener lsnr = (SummaryListener)_listeners.get(i); if (lsnr.getRate().equals(rate)) { @@ -147,6 +151,10 @@ public class StatSummarizer implements Runnable { public boolean renderRatePng(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException { long end = _context.clock().now() - 60*1000; + if (width > GraphHelper.MAX_X) + width = GraphHelper.MAX_X; + if (height > GraphHelper.MAX_Y) + height = GraphHelper.MAX_Y; if (periodCount <= 0) periodCount = SummaryListener.PERIODS; if (periodCount > SummaryListener.PERIODS) periodCount = SummaryListener.PERIODS; From f1c50b7fc33efd533305ceda458bf1a20902fa37 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 02:14:39 +0000 Subject: [PATCH 44/72] * Clock: - Don't let a client update the router clock - Restore and enhance vanished clock error log message --- core/java/src/net/i2p/client/SetDateMessageHandler.java | 8 ++++++-- core/java/src/net/i2p/time/Timestamper.java | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/client/SetDateMessageHandler.java b/core/java/src/net/i2p/client/SetDateMessageHandler.java index 5e3dfab6b..e828e975c 100644 --- a/core/java/src/net/i2p/client/SetDateMessageHandler.java +++ b/core/java/src/net/i2p/client/SetDateMessageHandler.java @@ -27,7 +27,11 @@ class SetDateMessageHandler extends HandlerImpl { public void handleMessage(I2CPMessage message, I2PSessionImpl session) { _log.debug("Handle message " + message); SetDateMessage msg = (SetDateMessage) message; - Clock.getInstance().setNow(msg.getDate().getTime()); + // Only do this if we are NOT in the router context; + // otherwise, it sets getUpdatedSuccessfully() in Clock when all + // we did was get the time from ourselves. + if (!_context.isRouterContext()) + Clock.getInstance().setNow(msg.getDate().getTime()); session.dateUpdated(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/time/Timestamper.java b/core/java/src/net/i2p/time/Timestamper.java index b1d763a3a..660e3c7ac 100644 --- a/core/java/src/net/i2p/time/Timestamper.java +++ b/core/java/src/net/i2p/time/Timestamper.java @@ -155,8 +155,13 @@ public class Timestamper implements Runnable { try { lastFailed = !queryTime(_servers.toArray(new String[_servers.size()])); } catch (IllegalArgumentException iae) { - if ( (!lastFailed) && (_log.shouldLog(Log.ERROR)) ) - _log.error("Unable to reach any of the NTP servers - network disconnected?"); + if ( (!_initialized) && (_log.shouldLog(Log.ERROR)) ) { + List all = new ArrayList(); + if (_priorityServers != null) + all.addAll(_priorityServers); + all.addAll(_servers); + _log.error("Unable to reach any of the NTP servers " + all + " - network disconnected? Or set time.sntpServerList=myserver1.com,myserver2.com in advanced configuration."); + } lastFailed = true; } } From fdfbab850a8be93c497bfb749b5c3188435ba3a4 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 02:16:36 +0000 Subject: [PATCH 45/72] minor cleanups --- .../java/src/net/i2p/router/web/SummaryHelper.java | 8 ++++---- build.xml | 4 ++-- core/java/src/net/i2p/client/HandlerImpl.java | 4 ++-- 3 files changed, 8 insertions(+), 8 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 fdf2b46ac..b4163aacc 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -414,10 +414,10 @@ public class SummaryHelper extends HelperBase { } /** compare translated nicknames - put "shared clients" first in the sort */ - private class AlphaComparator implements Comparator { - public int compare(Object lhs, Object rhs) { - String lname = getName((Destination)lhs); - String rname = getName((Destination)rhs); + private class AlphaComparator implements Comparator { + public int compare(Destination lhs, Destination rhs) { + String lname = getName(lhs); + String rname = getName(rhs); String xsc = _("shared clients"); if (lname.equals(xsc)) return -1; diff --git a/build.xml b/build.xml index 5f451aa3b..ed7ec5166 100644 --- a/build.xml +++ b/build.xml @@ -714,7 +714,7 @@ - + @@ -768,7 +768,7 @@ - + diff --git a/core/java/src/net/i2p/client/HandlerImpl.java b/core/java/src/net/i2p/client/HandlerImpl.java index 57380e44e..98d1e76ff 100644 --- a/core/java/src/net/i2p/client/HandlerImpl.java +++ b/core/java/src/net/i2p/client/HandlerImpl.java @@ -25,10 +25,10 @@ abstract class HandlerImpl implements I2CPMessageHandler { public HandlerImpl(I2PAppContext context, int type) { _context = context; _type = type; - _log = new Log(getClass()); + _log = context.logManager().getLog(getClass()); } public int getType() { return _type; } -} \ No newline at end of file +} From 087fd5a90967530fe5b1f0b132f14a0944cfdbde Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 02:36:42 +0000 Subject: [PATCH 46/72] * NetDb: - Move stat initialization, reduce number of rates - Add basic DOS prevention by not flooding if stores are too-frequent --- core/java/src/net/i2p/util/ObjectCounter.java | 26 +++++++++++++--- .../HandleDatabaseLookupMessageJob.java | 7 ----- .../networkdb/kademlia/FloodThrottler.java | 31 +++++++++++++++++++ ...FloodfillDatabaseLookupMessageHandler.java | 8 +++++ .../FloodfillDatabaseStoreMessageHandler.java | 6 ++++ .../FloodfillNetworkDatabaseFacade.java | 24 +++++++++++++- ...andleFloodfillDatabaseStoreMessageJob.java | 8 ----- .../KademliaNetworkDatabaseFacade.java | 14 +++++++-- .../kademlia/RepublishLeaseSetJob.java | 1 - .../router/networkdb/kademlia/StoreJob.java | 6 ---- 10 files changed, 101 insertions(+), 30 deletions(-) create mode 100644 router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java diff --git a/core/java/src/net/i2p/util/ObjectCounter.java b/core/java/src/net/i2p/util/ObjectCounter.java index 19c92ae66..ae7cc4c15 100644 --- a/core/java/src/net/i2p/util/ObjectCounter.java +++ b/core/java/src/net/i2p/util/ObjectCounter.java @@ -10,19 +10,28 @@ import java.util.concurrent.ConcurrentHashMap; */ public class ObjectCounter { private ConcurrentHashMap _map; + private static final Integer ONE = Integer.valueOf(1); + public ObjectCounter() { _map = new ConcurrentHashMap(); } + /** * Add one. * Not perfectly concurrent, new AtomicInteger(1) would be better, * at the cost of some object churn. + * @return count after increment */ - public void increment(K h) { - Integer i = _map.putIfAbsent(h, Integer.valueOf(1)); - if (i != null) - _map.put(h, Integer.valueOf(i.intValue() + 1)); + public int increment(K h) { + Integer i = _map.putIfAbsent(h, ONE); + if (i != null) { + int rv = i.intValue() + 1; + _map.put(h, Integer.valueOf(rv)); + return rv; + } + return 1; } + /** * @return current count */ @@ -32,11 +41,20 @@ public class ObjectCounter { return i.intValue(); return 0; } + /** * @return set of objects with counts > 0 */ public Set objects() { return _map.keySet(); } + + /** + * start over + * @since 0.7.11 + */ + public void clear() { + _map.clear(); + } } diff --git a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java index 55266f085..4cb5a9d26 100644 --- a/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/HandleDatabaseLookupMessageJob.java @@ -55,13 +55,6 @@ public class HandleDatabaseLookupMessageJob extends JobImpl { public HandleDatabaseLookupMessageJob(RouterContext ctx, DatabaseLookupMessage receivedMessage, RouterIdentity from, Hash fromHash) { super(ctx); _log = getContext().logManager().getLog(HandleDatabaseLookupMessageJob.class); - getContext().statManager().createRateStat("netDb.lookupsHandled", "How many netDb lookups have we handled?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatched", "How many netDb lookups did we have the data for?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatchedLeaseSet", "How many netDb leaseSet lookups did we have the data for?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatchedReceivedPublished", "How many netDb lookups did we have the data for that were published to us?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatchedLocalClosest", "How many netDb lookups for local data were received where we are the closest peers?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatchedLocalNotClosest", "How many netDb lookups for local data were received where we are NOT the closest peers?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.lookupsMatchedRemoteNotClosest", "How many netDb lookups for remote data were received where we are NOT the closest peers?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); _message = receivedMessage; _from = from; _fromHash = fromHash; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java new file mode 100644 index 000000000..303e8fc0e --- /dev/null +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java @@ -0,0 +1,31 @@ +package net.i2p.router.networkdb.kademlia; + +import net.i2p.data.Hash; +import net.i2p.util.ObjectCounter; +import net.i2p.util.SimpleScheduler; +import net.i2p.util.SimpleTimer; + +/** + * Count how often we have recently flooded a key + */ +class FloodThrottler { + private ObjectCounter counter; + private static final int MAX_FLOODS = 3; + private static final long CLEAN_TIME = 60*1000; + + FloodThrottler() { + this.counter = new ObjectCounter(); + SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); + } + + /** increments before checking */ + boolean shouldThrottle(Hash h) { + return this.counter.increment(h) > MAX_FLOODS; + } + + private class Cleaner implements SimpleTimer.TimedEvent { + public void timeReached() { + FloodThrottler.this.counter.clear(); + } + } +} diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java index 7076960d3..50e5b7f80 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java @@ -29,6 +29,14 @@ public class FloodfillDatabaseLookupMessageHandler implements HandlerJobBuilder _log = context.logManager().getLog(FloodfillDatabaseLookupMessageHandler.class); _context.statManager().createRateStat("netDb.lookupsReceived", "How many netDb lookups have we received?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); _context.statManager().createRateStat("netDb.lookupsDropped", "How many netDb lookups did we drop due to throttling?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + // following are for ../HDLMJ + _context.statManager().createRateStat("netDb.lookupsHandled", "How many netDb lookups have we handled?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatched", "How many netDb lookups did we have the data for?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatchedLeaseSet", "How many netDb leaseSet lookups did we have the data for?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatchedReceivedPublished", "How many netDb lookups did we have the data for that were published to us?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatchedLocalClosest", "How many netDb lookups for local data were received where we are the closest peers?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatchedLocalNotClosest", "How many netDb lookups for local data were received where we are NOT the closest peers?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsMatchedRemoteNotClosest", "How many netDb lookups for remote data were received where we are NOT the closest peers?", "NetworkDatabase", new long[] { 60*60*1000l }); } public Job createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java index 5d94cde3e..e4c6ce71a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java @@ -27,7 +27,13 @@ public class FloodfillDatabaseStoreMessageHandler implements HandlerJobBuilder { public FloodfillDatabaseStoreMessageHandler(RouterContext context, FloodfillNetworkDatabaseFacade facade) { _context = context; _facade = facade; + // following are for HFDSMJ + context.statManager().createRateStat("netDb.storeHandled", "How many netDb store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storeLeaseSetHandled", "How many leaseSet store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storeRouterInfoHandled", "How many routerInfo store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storeRecvTime", "How long it takes to handle the local store part of a dbStore?", "NetworkDatabase", new long[] { 60*60*1000l }); } + public Job createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash) { Job j = new HandleFloodfillDatabaseStoreMessageJob(_context, (DatabaseStoreMessage)receivedMessage, from, fromHash, _facade); if (false) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index b51466d15..09e59c12e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -37,6 +37,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad /** for testing, see isFloodfill() below */ private static String _alwaysQuery; private final Set _verifiesInProgress; + private FloodThrottler _floodThrottler; public FloodfillNetworkDatabaseFacade(RouterContext context) { super(context); @@ -115,6 +116,13 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad key = ((LeaseSet)ds).getDestination().calculateHash(); else key = ((RouterInfo)ds).getIdentity().calculateHash(); + // DOS prevention + if (_floodThrottler != null && _floodThrottler.shouldThrottle(key)) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Too many recent stores, not flooding key: " + key); + _context.statManager().addRateData("netDb.floodThrottled", 1, 0); + return; + } Hash rkey = _context.routingKeyGenerator().getRoutingKey(key); FloodfillPeerSelector sel = (FloodfillPeerSelector)getPeerSelector(); List peers = sel.selectFloodfillParticipants(rkey, MAX_TO_FLOOD, getKBuckets()); @@ -124,6 +132,10 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad RouterInfo target = lookupRouterInfoLocally(peer); if ( (target == null) || (_context.shitlist().isShitlisted(peer)) ) continue; + // Don't flood a RI back to itself + // Not necessary, a ff will do its own flooding (reply token == 0) + //if (peer.equals(target.getIdentity().getHash())) + // continue; if (peer.equals(_context.routerHash())) continue; DatabaseStoreMessage msg = new DatabaseStoreMessage(_context); @@ -176,7 +188,17 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad @Override protected PeerSelector createPeerSelector() { return new FloodfillPeerSelector(_context); } - public void setFloodfillEnabled(boolean yes) { _floodfillEnabled = yes; } + synchronized void setFloodfillEnabled(boolean yes) { + _floodfillEnabled = yes; + if (yes && _floodThrottler == null) { + _floodThrottler = new FloodThrottler(); + _context.statManager().createRateStat("netDb.floodThrottled", "How often do we decline to flood?", "NetworkDatabase", new long[] { 60*60*1000l }); + // following are for HFDSMJ + _context.statManager().createRateStat("netDb.storeFloodNew", "How long it takes to flood out a newly received entry?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.storeFloodOld", "How often we receive an old entry?", "NetworkDatabase", new long[] { 60*60*1000l }); + } + } + public boolean floodfillEnabled() { return _floodfillEnabled; } public static boolean floodfillEnabled(RouterContext ctx) { return ((FloodfillNetworkDatabaseFacade)ctx.netDb()).floodfillEnabled(); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java index 12140a9e4..d57f3bf97 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -39,14 +39,6 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { public HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx, DatabaseStoreMessage receivedMessage, RouterIdentity from, Hash fromHash, FloodfillNetworkDatabaseFacade facade) { super(ctx); _log = ctx.logManager().getLog(getClass()); - ctx.statManager().createRateStat("netDb.storeHandled", "How many netDb store messages have we handled?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("netDb.storeLeaseSetHandled", "How many leaseSet store messages have we handled?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - //ctx.statManager().createRateStat("netDb.storeLocalLeaseSetAttempt", "Peer tries to store our leaseset (multihome?)", "NetworkDatabase", new long[] { 60*60*1000l }); - //ctx.statManager().createRateStat("netDb.storeLocalRouterInfoAttempt", "Peer tries to store our router info", "NetworkDatabase", new long[] { 60*60*1000l }); - ctx.statManager().createRateStat("netDb.storeRouterInfoHandled", "How many routerInfo store messages have we handled?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - ctx.statManager().createRateStat("netDb.storeRecvTime", "How long it takes to handle the local store part of a dbStore?", "NetworkDatabase", new long[] { 60*1000l, 10*60*1000l }); - ctx.statManager().createRateStat("netDb.storeFloodNew", "How long it takes to flood out a newly received entry?", "NetworkDatabase", new long[] { 60*1000l, 10*60*1000l }); - ctx.statManager().createRateStat("netDb.storeFloodOld", "How often we receive an old entry?", "NetworkDatabase", new long[] { 60*1000l, 10*60*1000l }); _message = receivedMessage; _from = from; _fromHash = fromHash; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index dc72ddd16..1f0daa9e8 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -44,7 +44,6 @@ import net.i2p.router.networkdb.DatabaseStoreMessageHandler; import net.i2p.router.networkdb.PublishLocalRouterInfoJob; import net.i2p.router.peermanager.PeerProfile; import net.i2p.util.Log; -import net.i2p.util.ObjectCounter; /** * Kademlia based version of the network database @@ -140,8 +139,17 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { _lastExploreNew = 0; _activeRequests = new HashMap(8); _enforceNetId = DEFAULT_ENFORCE_NETID; - context.statManager().createRateStat("netDb.lookupLeaseSetDeferred", "how many lookups are deferred for a single leaseSet lookup?", "NetworkDatabase", new long[] { 60*1000, 5*60*1000 }); - context.statManager().createRateStat("netDb.exploreKeySet", "how many keys are queued for exploration?", "NetworkDatabase", new long[] { 10*60*1000 }); + context.statManager().createRateStat("netDb.lookupLeaseSetDeferred", "how many lookups are deferred for a single leaseSet lookup?", "NetworkDatabase", new long[] { 60*60*1000 }); + context.statManager().createRateStat("netDb.exploreKeySet", "how many keys are queued for exploration?", "NetworkDatabase", new long[] { 60*60*1000 }); + // following are for StoreJob + context.statManager().createRateStat("netDb.storeRouterInfoSent", "How many routerInfo store messages have we sent?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storeLeaseSetSent", "How many leaseSet store messages have we sent?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storePeers", "How many peers each netDb must be sent to before success?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.storeFailedPeers", "How many peers each netDb must be sent to before failing completely?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.ackTime", "How long does it take for a peer to ack a netDb store?", "NetworkDatabase", new long[] { 60*60*1000l }); + context.statManager().createRateStat("netDb.replyTimeout", "How long after a netDb send does the timeout expire (when the peer doesn't reply in time)?", "NetworkDatabase", new long[] { 60*60*1000l }); + // following is for RepublishLeaseSetJob + context.statManager().createRateStat("netDb.republishLeaseSetCount", "How often we republish a leaseSet?", "NetworkDatabase", new long[] { 60*60*1000l }); } @Override diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java index 9f4dc9a37..223dd70f8 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/RepublishLeaseSetJob.java @@ -36,7 +36,6 @@ public class RepublishLeaseSetJob extends JobImpl { _dest = destHash; _lastPublished = 0; //getTiming().setStartAfter(ctx.clock().now()+REPUBLISH_LEASESET_DELAY); - getContext().statManager().createRateStat("netDb.republishLeaseSetCount", "How often we republish a leaseSet?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); } public String getName() { return "Republish a local leaseSet"; } public void runJob() { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index f93b35947..b9e6912c4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -73,12 +73,6 @@ class StoreJob extends JobImpl { DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, Set toSkip) { super(context); _log = context.logManager().getLog(StoreJob.class); - getContext().statManager().createRateStat("netDb.storeRouterInfoSent", "How many routerInfo store messages have we sent?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.storeLeaseSetSent", "How many leaseSet store messages have we sent?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.storePeers", "How many peers each netDb must be sent to before success?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.storeFailedPeers", "How many peers each netDb must be sent to before failing completely?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.ackTime", "How long does it take for a peer to ack a netDb store?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - getContext().statManager().createRateStat("netDb.replyTimeout", "How long after a netDb send does the timeout expire (when the peer doesn't reply in time)?", "NetworkDatabase", new long[] { 60*1000, 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); _facade = facade; _state = new StoreState(getContext(), key, data, toSkip); _onSuccess = onSuccess; From 0ba6482da5a00697fef25adc14ecacf17ac64fff Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 02:42:06 +0000 Subject: [PATCH 47/72] -1 --- history.txt | 17 +++++++++++++++++ .../java/src/net/i2p/router/RouterVersion.java | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/history.txt b/history.txt index 3d7819405..1c0eb6d01 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,20 @@ +2010-01-24 zzz + * Clock: + - Don't let a client update the router clock + - Restore and enhance vanished clock error log message + * Graphs: Enforce max size to lessen chance of OOM from malicious link + * NetDb: + - Move stat initialization, reduce number of rates + - Add basic DOS prevention by not flooding if stores are too-frequent + * ProfileOrganizer: + - Limit High Cap to 75 max + - Reduce max lock wait time, change no lock error to warning + - More cleanup + * Startup: + - Enable multiple parallel job runners much sooner to speed startup + - Rearrange the startup order to get the long jobs started sooner + - Don't allow the netDb readin job to clog the job queue + 2010-01-21 dr|z3d * New eepsite structure and enhanced pages. Now with graphics and stuff! diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 200f91ede..b8546913b 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 = 0; + public final static long BUILD = 1; /** for example "-test" */ public final static String EXTRA = ""; From 2c7725a8e45bb4cdbbfb04ce1db0f5aeb18202d5 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 15:34:40 +0000 Subject: [PATCH 48/72] cleanups --- .../router/web/ProfileOrganizerRenderer.java | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 14863acf3..f1824930b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -33,17 +33,17 @@ class ProfileOrganizerRenderer { _comparator = new ProfileComparator(); } public void renderStatusHTML(Writer out, boolean full) throws IOException { - Set peers = _organizer.selectAllPeers(); + Set peers = _organizer.selectAllPeers(); long now = _context.clock().now(); long hideBefore = now - 90*60*1000; - TreeSet order = new TreeSet(_comparator); - TreeSet integratedPeers = new TreeSet(_comparator); + TreeSet order = new TreeSet(_comparator); + TreeSet integratedPeers = new TreeSet(_comparator); int older = 0; int standard = 0; - for (Iterator iter = peers.iterator(); iter.hasNext();) { - Hash peer = (Hash)iter.next(); + for (Iterator iter = peers.iterator(); iter.hasNext();) { + Hash peer = iter.next(); if (_organizer.getUs().equals(peer)) continue; PeerProfile prof = _organizer.getProfile(peer); //if (_organizer.isWellIntegrated(peer)) { @@ -87,8 +87,8 @@ class ProfileOrganizerRenderer { buf.append(" "); buf.append(""); int prevTier = 1; - for (Iterator iter = order.iterator(); iter.hasNext();) { - PeerProfile prof = (PeerProfile)iter.next(); + for (Iterator iter = order.iterator(); iter.hasNext();) { + PeerProfile prof = iter.next(); Hash peer = prof.getPeer(); int tier = 0; @@ -201,8 +201,8 @@ class ProfileOrganizerRenderer { buf.append("").append(_("1h Fail Rate")).append(""); buf.append("").append(_("1d Fail Rate")).append(""); buf.append(""); - for (Iterator iter = integratedPeers.iterator(); iter.hasNext();) { - PeerProfile prof = (PeerProfile)iter.next(); + for (Iterator iter = integratedPeers.iterator(); iter.hasNext();) { + PeerProfile prof = iter.next(); Hash peer = prof.getPeer(); buf.append(""); @@ -266,16 +266,8 @@ class ProfileOrganizerRenderer { out.flush(); } - private class ProfileComparator implements Comparator { - public int compare(Object lhs, Object rhs) { - if ( (lhs == null) || (rhs == null) ) - throw new NullPointerException("lhs=" + lhs + " rhs=" + rhs); - if ( !(lhs instanceof PeerProfile) || !(rhs instanceof PeerProfile) ) - throw new ClassCastException("lhs=" + lhs.getClass().getName() + " rhs=" + rhs.getClass().getName()); - - PeerProfile left = (PeerProfile)lhs; - PeerProfile right = (PeerProfile)rhs; - + private class ProfileComparator implements Comparator { + public int compare(PeerProfile left, PeerProfile right) { if (_context.profileOrganizer().isFast(left.getPeer())) { if (_context.profileOrganizer().isFast(right.getPeer())) { return compareHashes(left, right); From 4f5cfdee573d89afc93e4cce9d92f47a325a7a0f Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 15:35:02 +0000 Subject: [PATCH 49/72] adjust welt reseed hostname --- router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8d739cfde..f4b9ee430 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -35,7 +35,7 @@ public class Reseeder { // Reject unreasonably big files, because we download into a ByteArrayOutputStream. private static final long MAX_RESEED_RESPONSE_SIZE = 8 * 1024 * 1024; - private static final String DEFAULT_SEED_URL = "http://netdb.i2p2.de/,http://b.netdb.i2p2.de/,http://reseed.i2p-projekt.de/"; + private static final String DEFAULT_SEED_URL = "http://a.netdb.i2p2.de/,http://b.netdb.i2p2.de/,http://reseed.i2p-projekt.de/"; private static final String PROP_INPROGRESS = "net.i2p.router.web.ReseedHandler.reseedInProgress"; private static final String PROP_ERROR = "net.i2p.router.web.ReseedHandler.errorMessage"; private static final String PROP_STATUS = "net.i2p.router.web.ReseedHandler.statusMessage"; From 81dcbedd17157878d1a28e6d7d6a151c11f115b0 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 15:38:44 +0000 Subject: [PATCH 50/72] * Transport clock skews: - Store and report UDP clock skews even for large values, so a badly skewed local clock will be reported to the console - Don't shitlist for NTCP clock skew if we don't know what time it is - If NTP hasn't worked yet, have NTCP or SSU update the clock one time - Include failed clock skew in NTCP skew vector if there aren't many connections - Don't include NTCP clock skews for non-established connections - Fix framed clock skew frame size - Report framed clock skew even if for only one peer, if NTP hasn't worked yet - Don't log RRD errors after clock adjustment - Reduce min skew for console warning to 30s (was 45s) - More Java 5 cleanups --- .../src/net/i2p/router/web/SummaryHelper.java | 2 +- .../net/i2p/router/web/SummaryListener.java | 5 +- core/java/src/net/i2p/util/Clock.java | 3 +- history.txt | 16 ++++++ .../java/src/net/i2p/router/RouterClock.java | 3 +- .../src/net/i2p/router/RouterVersion.java | 2 +- .../transport/CommSystemFacadeImpl.java | 17 +++--- .../router/transport/ntcp/EstablishState.java | 21 +++++++- .../router/transport/ntcp/NTCPTransport.java | 25 ++++++--- .../router/transport/udp/PacketHandler.java | 31 +++++++---- .../i2p/router/transport/udp/PeerState.java | 14 ++--- .../router/transport/udp/UDPPacketReader.java | 1 + .../router/transport/udp/UDPTransport.java | 52 ++++++++++--------- 13 files changed, 131 insertions(+), 61 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 b4163aacc..53e71698d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -99,7 +99,7 @@ public class SummaryHelper extends HelperBase { //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) + if (skew != null && Math.abs(skew.longValue()) > 30) return _("ERR-Clock Skew of {0}", DataHelper.formatDuration(Math.abs(skew.longValue()) * 1000)); if (_context.router().isHidden()) return _("Hidden"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java index 0a1595d30..f34659cdb 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java @@ -68,7 +68,10 @@ class SummaryListener implements RateSummaryListener { } catch (IOException ioe) { _log.error("Error adding", ioe); } catch (RrdException re) { - _log.error("Error adding", re); + // this can happen after the time slews backwards, so don't make it an error + // org.jrobin.core.RrdException: Bad sample timestamp 1264343107. Last update time was 1264343172, at least one second step is required + if (_log.shouldLog(Log.WARN)) + _log.warn("Error adding", re); } } } diff --git a/core/java/src/net/i2p/util/Clock.java b/core/java/src/net/i2p/util/Clock.java index 91fe2d9fb..669c9d92a 100644 --- a/core/java/src/net/i2p/util/Clock.java +++ b/core/java/src/net/i2p/util/Clock.java @@ -92,9 +92,10 @@ public class Clock implements Timestamper.UpdateListener { else if (getLog().shouldLog(Log.INFO)) getLog().info("Updating clock offset to " + offsetMs + "ms from " + _offset + "ms"); - if (!_statCreated) + if (!_statCreated) { _context.statManager().createRateStat("clock.skew", "How far is the already adjusted clock being skewed?", "Clock", new long[] { 10*60*1000, 3*60*60*1000, 24*60*60*60 }); _statCreated = true; + } _context.statManager().addRateData("clock.skew", delta, 0); } else { getLog().log(Log.INFO, "Initializing clock offset to " + offsetMs + "ms from " + _offset + "ms"); diff --git a/history.txt b/history.txt index 1c0eb6d01..f6b2e8e9a 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,19 @@ +2010-01-28 zzz + * ProfileOrganizerRenderer: Cleanups + * Reseed: Update welt's reseed hostname + * Transport clock skews: + - Store and report UDP clock skews even for large values, so + a badly skewed local clock will be reported to the console + - Don't shitlist for NTCP clock skew if we don't know what time it is + - If NTP hasn't worked yet, have NTCP or SSU update the clock one time + - Include failed clock skew in NTCP skew vector if there aren't many connections + - Don't include NTCP clock skews for non-established connections + - Fix framed clock skew frame size + - Report framed clock skew even if for only one peer, if NTP hasn't worked yet + - Don't log RRD errors after clock adjustment + - Reduce min skew for console warning to 30s (was 45s) + - More Java 5 cleanups + 2010-01-24 zzz * Clock: - Don't let a client update the router clock diff --git a/router/java/src/net/i2p/router/RouterClock.java b/router/java/src/net/i2p/router/RouterClock.java index b6731b0fd..9e0401702 100644 --- a/router/java/src/net/i2p/router/RouterClock.java +++ b/router/java/src/net/i2p/router/RouterClock.java @@ -88,9 +88,10 @@ public class RouterClock extends Clock { else if (getLog().shouldLog(Log.INFO)) getLog().info("Updating clock offset to " + offsetMs + "ms from " + _offset + "ms"); - if (!_statCreated) + if (!_statCreated) { _contextRC.statManager().createRateStat("clock.skew", "How far is the already adjusted clock being skewed?", "Clock", new long[] { 10*60*1000, 3*60*60*1000, 24*60*60*60 }); _statCreated = true; + } _contextRC.statManager().addRateData("clock.skew", delta, 0); } else { getLog().log(Log.INFO, "Initializing clock offset to " + offsetMs + "ms from " + _offset + "ms"); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index b8546913b..f17951822 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 = ""; diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 81971a2fe..b19662c85 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -77,6 +77,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { public boolean haveHighOutboundCapacity() { return (_manager == null ? false : _manager.haveHighOutboundCapacity()); } /** + * @param percentToInclude 1-100 * @return 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. */ @@ -87,21 +88,23 @@ public class CommSystemFacadeImpl extends CommSystemFacade { return Long.valueOf(_context.clock().getOffset() / 1000); } Vector skews = _manager.getClockSkews(); - if (skews == null) { - return Long.valueOf(_context.clock().getOffset() / 1000); - } - if (skews.size() < 5) { + if (skews == null || + skews.size() <= 0 || + (skews.size() < 5 && _context.clock().getUpdatedSuccessfully())) { return Long.valueOf(_context.clock().getOffset() / 1000); } + // Going to calculate, sort them Collections.sort(skews); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Clock skews: " + skews); // Calculate frame size - int frameSize = Math.min((skews.size() * percentToInclude / 100), 2); + int frameSize = Math.max((skews.size() * percentToInclude / 100), 1); int first = (skews.size() / 2) - (frameSize / 2); - int last = (skews.size() / 2) + (frameSize / 2); + int last = Math.min((skews.size() / 2) + (frameSize / 2), skews.size() - 1); // Sum skew values long sum = 0; - for (int i = first; i < last; i++) { + for (int i = first; i <= last; i++) { long value = ((Long) (skews.get(i))).longValue(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Adding clock skew " + i + " valued " + value + " s."); diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java index 9cd5f1ad5..0749e8d6c 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java @@ -365,12 +365,20 @@ public class EstablishState { // the skew is not authenticated yet, but it is certainly fatal to // the establishment, so fail hard if appropriate long diff = 1000*Math.abs(_tsA-_tsB); - if (diff >= Router.CLOCK_FUDGE_FACTOR) { + if (!_context.clock().getUpdatedSuccessfully()) { + // Adjust the clock one time in desperation + _context.clock().setOffset(1000 * (_tsB - _tsA), true); + _tsA = _tsB; + if (diff != 0) + _log.error("NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); + } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidOutboundSkew", diff, 0); _transport.markReachable(_con.getRemotePeer().calculateHash(), false); + // Only shitlist if we know what time it is _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff), _con.getRemotePeer().calculateHash(), _x("Excessive clock skew: {0}")); + _transport.setLastBadSkew(_tsA- _tsB); fail("Clocks too skewed (" + diff + " ms)", null, true); return; } else if (_log.shouldLog(Log.DEBUG)) { @@ -570,12 +578,21 @@ public class EstablishState { _log.debug(prefix() + "verification successful for " + _con); long diff = 1000*Math.abs(tsA-_tsB); - if (diff >= Router.CLOCK_FUDGE_FACTOR) { + if (!_context.clock().getUpdatedSuccessfully()) { + // Adjust the clock one time in desperation + // This isn't very likely, outbound will do it first + _context.clock().setOffset(1000 * (_tsB - tsA), true); + tsA = _tsB; + if (diff != 0) + _log.error("NTP failure, NTCP adjusting clock by " + DataHelper.formatDuration(diff)); + } else if (diff >= Router.CLOCK_FUDGE_FACTOR) { _context.statManager().addRateData("ntcp.invalidInboundSkew", diff, 0); _transport.markReachable(alice.calculateHash(), true); + // Only shitlist if we know what time it is _context.shitlist().shitlistRouter(DataHelper.formatDuration(diff), alice.calculateHash(), _x("Excessive clock skew: {0}")); + _transport.setLastBadSkew(tsA- _tsB); fail("Clocks too skewed (" + diff + " ms)", null, true); return; } else if (_log.shouldLog(Log.DEBUG)) { diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 743acf17a..41ad29e23 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -53,6 +53,7 @@ public class NTCPTransport extends TransportImpl { private List _sent; private NTCPSendFinisher _finisher; + private long _lastBadSkew; private static final long[] RATES = { 10*60*1000 }; public NTCPTransport(RouterContext ctx) { @@ -382,24 +383,36 @@ public class NTCPTransport extends TransportImpl { return active; } + /** @param skew in seconds */ + void setLastBadSkew(long skew) { + _lastBadSkew = skew; + } + /** * Return our peer clock skews on this transport. * Vector composed of Long, each element representing a peer skew in seconds. */ @Override - public Vector getClockSkews() { + public Vector getClockSkews() { - Vector peers = new Vector(); - Vector skews = new Vector(); + Vector peers = new Vector(); + Vector skews = new Vector(); synchronized (_conLock) { peers.addAll(_conByIdent.values()); } - for (Iterator iter = peers.iterator(); iter.hasNext(); ) { - NTCPConnection con = (NTCPConnection)iter.next(); - skews.addElement(new Long (con.getClockSkew())); + for (Iterator iter = peers.iterator(); iter.hasNext(); ) { + NTCPConnection con = iter.next(); + if (con.isEstablished()) + skews.addElement(Long.valueOf(con.getClockSkew())); } + + // If we don't have many peers, maybe it is because of a bad clock, so + // return the last bad skew we got + if (skews.size() < 5 && _lastBadSkew != 0) + skews.addElement(Long.valueOf(_lastBadSkew)); + if (_log.shouldLog(Log.DEBUG)) _log.debug("NTCP transport returning " + skews.size() + " peer clock skews."); return skews; diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index 8edcc5def..e32530809 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -6,6 +6,7 @@ import java.util.List; import net.i2p.router.Router; import net.i2p.router.RouterContext; +import net.i2p.data.DataHelper; import net.i2p.util.I2PThread; import net.i2p.util.Log; @@ -417,26 +418,36 @@ public class PacketHandler { long recvOn = packet.getBegin(); long sendOn = reader.readTimestamp() * 1000; long skew = recvOn - sendOn; + + // update skew whether or not we will be dropping the packet for excessive skew + if (state != null) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Received packet from " + state.getRemoteHostId().toString() + " with skew " + skew); + state.adjustClockSkew(skew); + } + _context.statManager().addRateData("udp.receivePacketSkew", skew, packet.getLifetime()); + + if (!_context.clock().getUpdatedSuccessfully()) { + // adjust the clock one time in desperation + // this doesn't seem to work for big skews, we never get anything back, + // so we have to wait for NTCP to do it + _context.clock().setOffset(0 - skew, true); + if (skew != 0) + _log.error("NTP failure, UDP adjusting clock by " + DataHelper.formatDuration(Math.abs(skew))); + } + if (skew > GRACE_PERIOD) { if (_log.shouldLog(Log.WARN)) - _log.warn("Packet too far in the past: " + new Date(sendOn/1000) + ": " + packet); + _log.warn("Packet too far in the past: " + new Date(sendOn) + ": " + packet); _context.statManager().addRateData("udp.droppedInvalidSkew", skew, packet.getExpiration()); return; } else if (skew < 0 - GRACE_PERIOD) { if (_log.shouldLog(Log.WARN)) - _log.warn("Packet too far in the future: " + new Date(sendOn/1000) + ": " + packet); + _log.warn("Packet too far in the future: " + new Date(sendOn) + ": " + packet); _context.statManager().addRateData("udp.droppedInvalidSkew", 0-skew, packet.getExpiration()); return; } - if (state != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received packet from " + state.getRemoteHostId().toString() + " with skew " + skew); - state.adjustClockSkew((short)skew); - } - - _context.statManager().addRateData("udp.receivePacketSkew", skew, packet.getLifetime()); - //InetAddress fromHost = packet.getPacket().getAddress(); //int fromPort = packet.getPacket().getPort(); //RemoteHostId from = new RemoteHostId(fromHost.getAddress(), fromPort); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java index 050d87d4d..f36e2d95c 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java @@ -59,8 +59,8 @@ public class PeerState { private boolean _rekeyBeganLocally; /** when were the current cipher and MAC keys established/rekeyed? */ private long _keyEstablishedTime; - /** how far off is the remote peer from our clock, in seconds? */ - private short _clockSkew; + /** how far off is the remote peer from our clock, in milliseconds? */ + private long _clockSkew; /** what is the current receive second, for congestion control? */ private long _currentReceiveSecond; /** when did we last send them a packet? */ @@ -327,8 +327,8 @@ public class PeerState { public boolean getRekeyBeganLocally() { return _rekeyBeganLocally; } /** when were the current cipher and MAC keys established/rekeyed? */ public long getKeyEstablishedTime() { return _keyEstablishedTime; } - /** how far off is the remote peer from our clock, in seconds? */ - public short getClockSkew() { return ( (short) (_clockSkew / 1000)); } + /** how far off is the remote peer from our clock, in milliseconds? */ + public long getClockSkew() { return _clockSkew ; } /** what is the current receive second, for congestion control? */ public long getCurrentReceiveSecond() { return _currentReceiveSecond; } /** when did we last send them a packet? */ @@ -425,9 +425,9 @@ public class PeerState { public void setRekeyBeganLocally(boolean local) { _rekeyBeganLocally = local; } /** when were the current cipher and MAC keys established/rekeyed? */ public void setKeyEstablishedTime(long when) { _keyEstablishedTime = when; } - /** how far off is the remote peer from our clock, in seconds? */ - public void adjustClockSkew(short skew) { - _clockSkew = (short)(0.9*(float)_clockSkew + 0.1*(float)skew); + /** how far off is the remote peer from our clock, in milliseconds? */ + public void adjustClockSkew(long skew) { + _clockSkew = (long) (0.9*(float)_clockSkew + 0.1*(float)skew); } /** what is the current receive second, for congestion control? */ public void setCurrentReceiveSecond(long sec) { _currentReceiveSecond = sec; } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java index 9bb665f6b..efb85ac48 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java @@ -74,6 +74,7 @@ public class UDPPacketReader { return (_message[_payloadBeginOffset] & (1 << 2)) != 0; } + /** @return seconds */ public long readTimestamp() { return DataHelper.fromLong(_message, _payloadBeginOffset + 1, 4); } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index 075326c53..4f0e788e4 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -42,9 +42,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private Log _log; private UDPEndpoint _endpoint; /** Peer (Hash) to PeerState */ - private final Map _peersByIdent; + private final Map _peersByIdent; /** RemoteHostId to PeerState */ - private final Map _peersByRemoteHost; + private final Map _peersByRemoteHost; private PacketHandler _handler; private EstablishmentManager _establisher; private MessageQueue _outboundMessages; @@ -575,7 +575,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority */ PeerState getPeerState(RemoteHostId hostInfo) { synchronized (_peersByRemoteHost) { - return (PeerState)_peersByRemoteHost.get(hostInfo); + return _peersByRemoteHost.get(hostInfo); } } @@ -585,7 +585,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority */ public PeerState getPeerState(Hash remotePeer) { synchronized (_peersByIdent) { - return (PeerState)_peersByIdent.get(remotePeer); + return _peersByIdent.get(remotePeer); } } @@ -664,7 +664,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority PeerState oldPeer = null; if (remotePeer != null) { synchronized (_peersByIdent) { - oldPeer = (PeerState)_peersByIdent.put(remotePeer, peer); + oldPeer = _peersByIdent.put(remotePeer, peer); if ( (oldPeer != null) && (oldPeer != peer) ) { // transfer over the old state/inbound message fragments/etc peer.loadFrom(oldPeer); @@ -684,7 +684,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority if (remoteId == null) return false; synchronized (_peersByRemoteHost) { - oldPeer = (PeerState)_peersByRemoteHost.put(remoteId, peer); + oldPeer = _peersByRemoteHost.put(remoteId, peer); if ( (oldPeer != null) && (oldPeer != peer) ) { // transfer over the old state/inbound message fragments/etc peer.loadFrom(oldPeer); @@ -883,14 +883,14 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority long now = _context.clock().now(); _context.statManager().addRateData("udp.droppedPeer", now - peer.getLastReceiveTime(), now - peer.getKeyEstablishedTime()); synchronized (_peersByIdent) { - altByIdent = (PeerState)_peersByIdent.remove(peer.getRemotePeer()); + altByIdent = _peersByIdent.remove(peer.getRemotePeer()); } } RemoteHostId remoteId = peer.getRemoteHostId(); if (remoteId != null) { synchronized (_peersByRemoteHost) { - altByHost = (PeerState)_peersByRemoteHost.remove(remoteId); + altByHost = _peersByRemoteHost.remove(remoteId); } } @@ -1417,8 +1417,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority int active = 0; int inactive = 0; synchronized (_peersByIdent) { - for (Iterator iter = _peersByIdent.values().iterator(); iter.hasNext(); ) { - PeerState peer = (PeerState)iter.next(); + for (Iterator iter = _peersByIdent.values().iterator(); iter.hasNext(); ) { + PeerState peer = iter.next(); if (now-peer.getLastReceiveTime() > 5*60*1000) inactive++; else @@ -1434,8 +1434,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority int active = 0; int inactive = 0; synchronized (_peersByIdent) { - for (Iterator iter = _peersByIdent.values().iterator(); iter.hasNext(); ) { - PeerState peer = (PeerState)iter.next(); + for (Iterator iter = _peersByIdent.values().iterator(); iter.hasNext(); ) { + PeerState peer = iter.next(); if (now-peer.getLastSendFullyTime() > 1*60*1000) inactive++; else @@ -1461,20 +1461,24 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority * Vector composed of Long, each element representing a peer skew in seconds. */ @Override - public Vector getClockSkews() { + public Vector getClockSkews() { - Vector skews = new Vector(); - Vector peers = new Vector(); + Vector skews = new Vector(); + Vector peers = new Vector(); synchronized (_peersByIdent) { peers.addAll(_peersByIdent.values()); } + // If our clock is way off, we may not have many (or any) successful connections, + // so try hard in that case to return good data + boolean includeEverybody = _context.router().getUptime() < 10*60*1000 || peers.size() < 10; long now = _context.clock().now(); - for (Iterator iter = peers.iterator(); iter.hasNext(); ) { - PeerState peer = (PeerState)iter.next(); - if (now-peer.getLastReceiveTime() > 60*60*1000) continue; // skip old peers - skews.addElement(new Long (peer.getClockSkew())); + for (Iterator iter = peers.iterator(); iter.hasNext(); ) { + PeerState peer = iter.next(); + if ((!includeEverybody) && now - peer.getLastReceiveTime() > 15*60*1000) + continue; // skip old peers + skews.addElement(Long.valueOf(peer.getClockSkew() / 1000)); } if (_log.shouldLog(Log.DEBUG)) _log.debug("UDP transport returning " + skews.size() + " peer clock skews."); @@ -1813,7 +1817,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority public void renderStatusHTML(Writer out, int sortFlags) throws IOException {} @Override public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException { - TreeSet peers = new TreeSet(getComparator(sortFlags)); + TreeSet peers = new TreeSet(getComparator(sortFlags)); synchronized (_peersByIdent) { peers.addAll(_peersByIdent.values()); } @@ -1958,7 +1962,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append(""); buf.append(" "); - buf.append(peer.getClockSkew()); + buf.append(peer.getClockSkew() / 1000); buf.append("s"); offsetTotal = offsetTotal + peer.getClockSkew(); @@ -2055,7 +2059,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append(formatKBps(bpsIn)).append("/").append(formatKBps(bpsOut)); buf.append("K/s
    "); buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(uptimeMsTotal/numPeers) : "0s"); - buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(offsetTotal*1000/numPeers) : "0ms").append("\n"); + buf.append(" ").append(numPeers > 0 ? DataHelper.formatDuration(offsetTotal/numPeers) : "0ms").append("\n"); buf.append(" "); buf.append(numPeers > 0 ? cwinTotal/(numPeers*1024) + "K" : "0K"); buf.append("  \n"); @@ -2276,13 +2280,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } PeerState pickTestPeer(RemoteHostId dontInclude) { - List peers = null; + List peers = null; synchronized (_peersByIdent) { peers = new ArrayList(_peersByIdent.values()); } Collections.shuffle(peers, _context.random()); for (int i = 0; i < peers.size(); i++) { - PeerState peer = (PeerState)peers.get(i); + PeerState peer = peers.get(i); if ( (dontInclude != null) && (dontInclude.equals(peer.getRemoteHostId())) ) continue; RouterInfo peerInfo = _context.netDb().lookupRouterInfoLocally(peer.getRemotePeer()); From 474691927a84ebcf3f85775d3ee9f27f482904b2 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 24 Jan 2010 15:41:33 +0000 Subject: [PATCH 51/72] fix date --- history.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/history.txt b/history.txt index f6b2e8e9a..f505b5da0 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,4 @@ -2010-01-28 zzz +2010-01-24 zzz * ProfileOrganizerRenderer: Cleanups * Reseed: Update welt's reseed hostname * Transport clock skews: From b97197c0fa3796639927d718e0fc5580b420a07d Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 15:21:41 +0000 Subject: [PATCH 52/72] * Debian: Fixup, update, enhance dream's scripts * build.xml: Speed up sponge's distclean additions --- build.xml | 20 +++++--- debian/README.txt | 22 +++++++++ debian/changelog | 5 ++ debian/control | 14 ++---- debian/rules | 46 ++++++++++++++----- debian/scripts/init | 6 +-- debian/scripts/postinst | 17 ++++--- debian/scripts/postrm | 9 +++- debian/scripts/prerm | 19 +++++++- installer/resources/i2prouter | 2 +- installer/resources/postinstall.sh | 2 - .../net/i2p/router/startup/WorkingDir.java | 7 ++- 12 files changed, 127 insertions(+), 42 deletions(-) create mode 100644 debian/README.txt diff --git a/build.xml b/build.xml index ed7ec5166..62a1f0abf 100644 --- a/build.xml +++ b/build.xml @@ -197,6 +197,8 @@ + + @@ -237,8 +239,7 @@ - - + - - - - + + - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -330,19 +287,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -367,6 +373,7 @@ + diff --git a/debian/README.txt b/debian/README.txt index 2953a76ce..683d50623 100644 --- a/debian/README.txt +++ b/debian/README.txt @@ -14,7 +14,7 @@ This sets up a binary package with the following: Todo: -- Remove 1MB lib/jbigi.jar, just build and include dynamic libjbigi +- Remove lib/jbigi.jar, just build and include dynamic libjbigi and the linux libjcpuid (and add dependency on libgmp) - Initial router.config for i2psvc (without confusing i2p that the router directory already exists): diff --git a/debian/rules b/debian/rules index 06a78d8e9..21009d70a 100755 --- a/debian/rules +++ b/debian/rules @@ -1,19 +1,11 @@ #!/usr/bin/make -f build: - ant preppkg + ant preppkg-linux-only mkdir -p debian/tmp/usr/lib mkdir -p debian/tmp/etc/init.d cp -a debian/scripts/init debian/tmp/etc/init.d/i2p cp -a pkg-temp debian/tmp/usr/lib/i2p - rm -f debian/tmp/usr/lib/i2p/*.bat - rm -f debian/tmp/usr/lib/i2p/i2p.exe - rm -rf debian/tmp/usr/lib/i2p/icons - rm -f debian/tmp/usr/lib/i2p/lib/systray4j.dll - rm -rf debian/tmp/usr/lib/i2p/lib/wrapper/freebsd - rm -rf debian/tmp/usr/lib/i2p/lib/wrapper/macosx - rm -rf debian/tmp/usr/lib/i2p/lib/wrapper/solaris - rm -rf debian/tmp/usr/lib/i2p/lib/wrapper/win32 chmod +x debian/tmp/usr/lib/i2p/postinstall.sh sed 's|$$INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/wrapper.config > debian/tmp/usr/lib/i2p/a sed 's|$$SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/wrapper.config diff --git a/debian/scripts/prerm b/debian/scripts/prerm index 176a067a2..7fe947121 100755 --- a/debian/scripts/prerm +++ b/debian/scripts/prerm @@ -10,6 +10,8 @@ update-rc.d -f i2p remove # dpkg doesn't know about these files, created by postinstall.sh I2P=/usr/lib/i2p rm -f $I2P/i2psvc $I2P/lib/libwrapper.so $I2P/lib/wrapper.jar +# copied out of jbigi.jar by the router +rm -f $I2P/libjbigi.so $I2P/libjcpuid.so # the home directory for the i2p daemon SVCHOME=/var/lib/i2p From 977d39aeb1d8283336a384e5442da39aef39f8d4 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:49:21 +0000 Subject: [PATCH 54/72] minor license updates --- LICENSE.txt | 3 +++ licenses/LICENSE-SNTP.txt | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/LICENSE.txt b/LICENSE.txt index f3345857e..bbc5423d4 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -207,6 +207,9 @@ The following applications and libraries are not used or bundled in binary packages, therefore the licenses are not included in binary distributions. See the source package for the additional license information. + Admin Manager: + Public domain + Atalk: Public domain diff --git a/licenses/LICENSE-SNTP.txt b/licenses/LICENSE-SNTP.txt index 26c104971..fe9c2a76e 100644 --- a/licenses/LICENSE-SNTP.txt +++ b/licenses/LICENSE-SNTP.txt @@ -1,3 +1,17 @@ +> Date: Fri, 13 Aug 2004 15:58:30 +1200 (NZST) +> Message-ID: <1776.202.37.75.101.1092369510.squirrel@202.37.75.101> +> From: adam@adambuckley.net +> To: jrandom@i2p.net +> +> [...] +> +> I hereby authorize my NtpClient.java and NtpMessage.java code to be +> redistributed under the BSD license for the purpose of integration with +> the I2P project, providing that I am credited as the original author of +> the code. +> +> [...] + /* * Copyright (c) 2004, Adam Buckley * All rights reserved. From ce74e49236cb70df27e2f442b7ef52e2fdcc9ffd Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:49:35 +0000 Subject: [PATCH 55/72] * Clock: Don't refuse to update because of peer skew the first time --- router/java/src/net/i2p/router/RouterClock.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/RouterClock.java b/router/java/src/net/i2p/router/RouterClock.java index 9e0401702..bb22dfbcb 100644 --- a/router/java/src/net/i2p/router/RouterClock.java +++ b/router/java/src/net/i2p/router/RouterClock.java @@ -29,8 +29,6 @@ public class RouterClock extends Clock { */ @Override public void setOffset(long offsetMs, boolean force) { - - if (false) return; long delta = offsetMs - _offset; if (!force) { if ((offsetMs > MAX_OFFSET) || (offsetMs < 0 - MAX_OFFSET)) { @@ -54,7 +52,8 @@ public class RouterClock extends Clock { } // If so configured, check sanity of proposed clock offset - if (Boolean.valueOf(_contextRC.getProperty("router.clockOffsetSanityCheck","true")).booleanValue() == true) { + if (Boolean.valueOf(_contextRC.getProperty("router.clockOffsetSanityCheck","true")).booleanValue() && + _alreadyChanged) { // Try calculating peer clock skew Long peerClockSkew = _contextRC.commSystem().getFramedAveragePeerClockSkew(50); From 76c1f47b20cf98f81bef75f17caa8be78a12a2dc Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:52:06 +0000 Subject: [PATCH 56/72] * Profiles: Fix lack of profiles at router startup, especially for new routers --- router/java/src/net/i2p/router/ProfileManager.java | 1 + .../networkdb/kademlia/PersistentDataStore.java | 4 ++++ .../i2p/router/peermanager/ProfileManagerImpl.java | 11 +++++++++++ 3 files changed, 16 insertions(+) diff --git a/router/java/src/net/i2p/router/ProfileManager.java b/router/java/src/net/i2p/router/ProfileManager.java index f829bdaeb..f861ab186 100644 --- a/router/java/src/net/i2p/router/ProfileManager.java +++ b/router/java/src/net/i2p/router/ProfileManager.java @@ -155,6 +155,7 @@ public interface ProfileManager { * through an explicit dbStore or in a dbLookupReply */ void heardAbout(Hash peer); + void heardAbout(Hash peer, long when); /** * Note that the router received a message from the given peer on the specified diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java index 16aa7dfb6..abc78b855 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java @@ -411,6 +411,10 @@ class PersistentDataStore extends TransientDataStore { try { // persist = false so we don't write what we just read _facade.store(ri.getIdentity().getHash(), ri, false); + // when heardAbout() was removed from TransientDataStore, it broke + // profile bootstrapping for new routers, + // so add it here. + getContext().profileManager().heardAbout(ri.getIdentity().getHash(), ri.getPublished()); } catch (IllegalArgumentException iae) { _log.info("Refused locally loaded routerInfo - deleting"); corrupt = true; diff --git a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java index 69088caaa..712a3cba6 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java +++ b/router/java/src/net/i2p/router/peermanager/ProfileManagerImpl.java @@ -311,6 +311,17 @@ public class ProfileManagerImpl implements ProfileManager { if (data == null) return; data.setLastHeardAbout(_context.clock().now()); } + + /** + * Note that the local router received a reference to the given peer + * at a certain time. Only update the time if newer. + */ + public void heardAbout(Hash peer, long when) { + PeerProfile data = getProfile(peer); + if (data == null) return; + if (when > data.getLastHeardAbout()) + data.setLastHeardAbout(when); + } /** * Note that the router received a message from the given peer on the specified From b97f4f8bd7ef90ca801b31d3840fc02696775771 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:53:25 +0000 Subject: [PATCH 57/72] try to silence log errors at shutdown --- core/java/src/net/i2p/util/LogWriter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/util/LogWriter.java b/core/java/src/net/i2p/util/LogWriter.java index 2135eefe1..76db2a500 100644 --- a/core/java/src/net/i2p/util/LogWriter.java +++ b/core/java/src/net/i2p/util/LogWriter.java @@ -137,8 +137,10 @@ class LogWriter implements Runnable { // may be a little off if a lot of multi-byte chars, but unlikely _numBytesInCurrentFile += val.length(); } catch (Throwable t) { - System.err.println("Error writing record, disk full?"); - t.printStackTrace(); + if (!_write) + return; + System.err.println("Error writing log, disk full? " + t); + //t.printStackTrace(); } if (_numBytesInCurrentFile >= _manager.getFileSize()) { rotateFile(); From ccc95087a1c354e003b412315ab334e8c72ecf48 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:56:36 +0000 Subject: [PATCH 58/72] shrink the stats.jsp dropdown --- .../net/i2p/router/web/StatsGenerator.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 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 4ddc6e6f4..e2aee86be 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -38,19 +38,20 @@ public class StatsGenerator { for (Iterator iter = groups.entrySet().iterator(); iter.hasNext(); ) { Map.Entry entry = (Map.Entry)iter.next(); String group = (String)entry.getKey(); - Set stats = (Set)entry.getValue(); buf.append("\n"); - for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) { - String stat = (String)statIter.next(); - buf.append("\n"); - } - out.write(buf.toString()); - buf.setLength(0); + // let's just do the groups + //Set stats = (Set)entry.getValue(); + //for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) { + // String stat = (String)statIter.next(); + // buf.append("\n"); + //} + //out.write(buf.toString()); + //buf.setLength(0); } buf.append(" "); buf.append(""); From 164b39d8df3820b283a70b19c21e0ce96dc36130 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 19:59:39 +0000 Subject: [PATCH 59/72] * I2NP: Various cleanup and bulletproofing --- core/java/src/net/i2p/data/DataHelper.java | 32 +++++----- history.txt | 11 ++++ .../src/net/i2p/data/i2np/DataMessage.java | 4 +- .../i2p/data/i2np/DatabaseLookupMessage.java | 59 +++++++++++-------- .../data/i2np/DatabaseSearchReplyMessage.java | 11 ++-- .../src/net/i2p/data/i2np/GarlicMessage.java | 2 +- .../net/i2p/data/i2np/I2NPMessageImpl.java | 6 +- .../src/net/i2p/router/RouterVersion.java | 2 +- .../net/i2p/data/i2np/DateMessage.java | 0 9 files changed, 76 insertions(+), 51 deletions(-) rename router/java/{src => test}/net/i2p/data/i2np/DateMessage.java (100%) diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java index 6c7ed7dd1..e84c4a5c3 100644 --- a/core/java/src/net/i2p/data/DataHelper.java +++ b/core/java/src/net/i2p/data/DataHelper.java @@ -48,8 +48,8 @@ import net.i2p.util.ReusableGZIPOutputStream; * @author jrandom */ public class DataHelper { - private final static byte _equalBytes[] = "=".getBytes(); // in UTF-8 - private final static byte _semicolonBytes[] = ";".getBytes(); // in UTF-8 + private final static byte EQUAL_BYTES[] = "=".getBytes(); // in UTF-8 + private final static byte SEMICOLON_BYTES[] = ";".getBytes(); // in UTF-8 /** Read a mapping from the stream, as defined by the I2P data structure spec, * and store it into a Properties object. @@ -76,17 +76,17 @@ public class DataHelper { int read = read(rawStream, data); if (read != size) throw new DataFormatException("Not enough data to read the properties"); ByteArrayInputStream in = new ByteArrayInputStream(data); - byte eqBuf[] = new byte[_equalBytes.length]; - byte semiBuf[] = new byte[_semicolonBytes.length]; + byte eqBuf[] = new byte[EQUAL_BYTES.length]; + byte semiBuf[] = new byte[SEMICOLON_BYTES.length]; while (in.available() > 0) { String key = readString(in); read = read(in, eqBuf); - if ((read != eqBuf.length) || (!eq(eqBuf, _equalBytes))) { + if ((read != eqBuf.length) || (!eq(eqBuf, EQUAL_BYTES))) { break; } String val = readString(in); read = read(in, semiBuf); - if ((read != semiBuf.length) || (!eq(semiBuf, _semicolonBytes))) { + if ((read != semiBuf.length) || (!eq(semiBuf, SEMICOLON_BYTES))) { break; } props.put(key, val); @@ -123,7 +123,7 @@ public class DataHelper { if (props != null) { OrderedProperties p = new OrderedProperties(); p.putAll(props); - ByteArrayOutputStream baos = new ByteArrayOutputStream(32); + ByteArrayOutputStream baos = new ByteArrayOutputStream(p.size() * 64); for (Iterator iter = p.keySet().iterator(); iter.hasNext();) { String key = (String) iter.next(); String val = p.getProperty(key); @@ -131,15 +131,17 @@ public class DataHelper { writeStringUTF8(baos, key); else writeString(baos, key); - baos.write(_equalBytes); + baos.write(EQUAL_BYTES); if (utf8) writeStringUTF8(baos, val); else writeString(baos, val); - baos.write(_semicolonBytes); + baos.write(SEMICOLON_BYTES); } baos.close(); byte propBytes[] = baos.toByteArray(); + if (propBytes.length > 65535) + throw new DataFormatException("Properties too big (65535 max): " + propBytes.length); writeLong(rawStream, 2, propBytes.length); rawStream.write(propBytes); } else { @@ -164,9 +166,9 @@ public class DataHelper { //key = new String(key.getBytes(), "UTF-8"); //val = new String(val.getBytes(), "UTF-8"); writeString(baos, key); - baos.write(_equalBytes); + baos.write(EQUAL_BYTES); writeString(baos, val); - baos.write(_semicolonBytes); + baos.write(SEMICOLON_BYTES); } baos.close(); byte propBytes[] = baos.toByteArray(); @@ -190,17 +192,17 @@ public class DataHelper { int size = (int)fromLong(source, offset, 2); offset += 2; ByteArrayInputStream in = new ByteArrayInputStream(source, offset, size); - byte eqBuf[] = new byte[_equalBytes.length]; - byte semiBuf[] = new byte[_semicolonBytes.length]; + byte eqBuf[] = new byte[EQUAL_BYTES.length]; + byte semiBuf[] = new byte[SEMICOLON_BYTES.length]; while (in.available() > 0) { String key = readString(in); int read = read(in, eqBuf); - if ((read != eqBuf.length) || (!eq(eqBuf, _equalBytes))) { + if ((read != eqBuf.length) || (!eq(eqBuf, EQUAL_BYTES))) { break; } String val = readString(in); read = read(in, semiBuf); - if ((read != semiBuf.length) || (!eq(semiBuf, _semicolonBytes))) { + if ((read != semiBuf.length) || (!eq(semiBuf, SEMICOLON_BYTES))) { break; } target.put(key, val); diff --git a/history.txt b/history.txt index f505b5da0..d64ca92d5 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,14 @@ +2010-01-28 zzz + * Clock: Don't refuse to update because of peer skew the first time + * I2NP: Various cleanup and bulletproofing + * Log: Try to avoid complaints at shutdown + * Profiles: Fix lack of profiles at router startup, especially for new routers + * stats.jsp: Shrink the dropdown box + +2010-01-26 zzz + * build.xml: Speed up distclean additions + * Debian: Fixup, update, enhance scripts + 2010-01-24 zzz * ProfileOrganizerRenderer: Cleanups * Reseed: Update welt's reseed hostname diff --git a/router/java/src/net/i2p/data/i2np/DataMessage.java b/router/java/src/net/i2p/data/i2np/DataMessage.java index 641d6b40b..e98630bc8 100644 --- a/router/java/src/net/i2p/data/i2np/DataMessage.java +++ b/router/java/src/net/i2p/data/i2np/DataMessage.java @@ -22,8 +22,6 @@ public class DataMessage extends I2NPMessageImpl { public final static int MESSAGE_TYPE = 20; private byte _data[]; - // private static final int MAX_SIZE = 64*1024; // LINT -- field hides another field, and not used - public DataMessage(I2PAppContext context) { super(context); _data = null; @@ -48,7 +46,7 @@ public class DataMessage extends I2NPMessageImpl { int curIndex = offset; long size = DataHelper.fromLong(data, curIndex, 4); curIndex += 4; - if (size > 64*1024) + if (size > MAX_SIZE) throw new I2NPMessageException("wtf, size=" + size); _data = new byte[(int)size]; System.arraycopy(data, curIndex, _data, 0, (int)size); diff --git a/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java index 43e2ee8d5..3b197ee92 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseLookupMessage.java @@ -17,7 +17,7 @@ import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.TunnelId; -import net.i2p.util.Log; +//import net.i2p.util.Log; /** * Defines the message a router sends to another router to search for a @@ -26,18 +26,22 @@ import net.i2p.util.Log; * @author jrandom */ public class DatabaseLookupMessage extends I2NPMessageImpl { - private final static Log _log = new Log(DatabaseLookupMessage.class); + //private final static Log _log = new Log(DatabaseLookupMessage.class); public final static int MESSAGE_TYPE = 2; private Hash _key; private Hash _fromHash; private TunnelId _replyTunnel; - private Set _dontIncludePeers; + private Set _dontIncludePeers; - private static volatile long _currentLookupPeriod = 0; - private static volatile int _currentLookupCount = 0; + //private static volatile long _currentLookupPeriod = 0; + //private static volatile int _currentLookupCount = 0; // if we try to send over 20 netDb lookups in 10 seconds, we're acting up - private static final long LOOKUP_THROTTLE_PERIOD = 10*1000; - private static final long LOOKUP_THROTTLE_MAX = 50; + //private static final long LOOKUP_THROTTLE_PERIOD = 10*1000; + //private static final long LOOKUP_THROTTLE_MAX = 50; + + /** Insanely big. Not much more than 1500 will fit in a message. + Have to prevent a huge alloc on rcv of a malicious msg though */ + private static final int MAX_NUM_PEERS = 512; public DatabaseLookupMessage(I2PAppContext context) { this(context, false); @@ -48,24 +52,27 @@ public class DatabaseLookupMessage extends I2NPMessageImpl { //setFrom(null); //setDontIncludePeers(null); - context.statManager().createRateStat("router.throttleNetDbDoSSend", "How many netDb lookup messages we are sending during a period with a DoS detected", "Throttle", new long[] { 60*1000, 10*60*1000, 60*60*1000, 24*60*60*1000 }); - + // This is the wrong place for this, any throttling should be in netdb + // And it doesnt throttle anyway (that would have to be in netdb), it just increments a stat + //context.statManager().createRateStat("router.throttleNetDbDoSSend", "How many netDb lookup messages we are sending during a period with a DoS detected", "Throttle", new long[] { 60*1000, 10*60*1000, 60*60*1000, 24*60*60*1000 }); + // // only check DoS generation if we are creating the message... - if (locallyCreated) { - // we do this in the writeMessage so we know that we have all the data - int dosCount = detectDoS(context); - if (dosCount > 0) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Are we flooding the network with NetDb messages? (" + dosCount - + " messages so far)", new Exception("Flood cause")); - } - } + //if (locallyCreated) { + // // we do this in the writeMessage so we know that we have all the data + // int dosCount = detectDoS(context); + // if (dosCount > 0) { + // if (_log.shouldLog(Log.WARN)) + // _log.warn("Are we flooding the network with NetDb messages? (" + dosCount + // + " messages so far)", new Exception("Flood cause")); + // } + //} } /** * Return number of netDb messages in this period, if flood, else 0 * */ +/***** private static int detectDoS(I2PAppContext context) { int count = _currentLookupCount++; // now lets check for DoS @@ -87,6 +94,7 @@ public class DatabaseLookupMessage extends I2NPMessageImpl { return 0; } } +*****/ /** * Defines the key being searched for @@ -113,7 +121,7 @@ public class DatabaseLookupMessage extends I2NPMessageImpl { * * @return Set of Hash objects, each of which is the H(routerIdentity) to skip */ - public Set getDontIncludePeers() { return _dontIncludePeers; } + public Set getDontIncludePeers() { return _dontIncludePeers; } public void setDontIncludePeers(Set peers) { if (peers != null) _dontIncludePeers = new HashSet(peers); @@ -156,9 +164,9 @@ public class DatabaseLookupMessage extends I2NPMessageImpl { int numPeers = (int)DataHelper.fromLong(data, curIndex, 2); curIndex += 2; - if ( (numPeers < 0) || (numPeers >= (1<<16) ) ) + if ( (numPeers < 0) || (numPeers > MAX_NUM_PEERS) ) throw new I2NPMessageException("Invalid number of peers - " + numPeers); - Set peers = new HashSet(numPeers); + Set peers = new HashSet(numPeers); for (int i = 0; i < numPeers; i++) { byte peer[] = new byte[Hash.HASH_LENGTH]; System.arraycopy(data, curIndex, peer, 0, Hash.HASH_LENGTH); @@ -201,11 +209,14 @@ public class DatabaseLookupMessage extends I2NPMessageImpl { out[curIndex++] = 0x0; out[curIndex++] = 0x0; } else { - byte len[] = DataHelper.toLong(2, _dontIncludePeers.size()); + int size = _dontIncludePeers.size(); + if (size > MAX_NUM_PEERS) + throw new I2NPMessageException("Too many peers: " + size); + byte len[] = DataHelper.toLong(2, size); out[curIndex++] = len[0]; out[curIndex++] = len[1]; - for (Iterator iter = _dontIncludePeers.iterator(); iter.hasNext(); ) { - Hash peer = (Hash)iter.next(); + for (Iterator iter = _dontIncludePeers.iterator(); iter.hasNext(); ) { + Hash peer = iter.next(); System.arraycopy(peer.getData(), 0, out, curIndex, Hash.HASH_LENGTH); curIndex += Hash.HASH_LENGTH; } diff --git a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java index ab3a7f678..085edc5a0 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java @@ -26,13 +26,14 @@ import net.i2p.data.Hash; public class DatabaseSearchReplyMessage extends I2NPMessageImpl { public final static int MESSAGE_TYPE = 3; private Hash _key; - private List _peerHashes; + private List _peerHashes; private Hash _from; public DatabaseSearchReplyMessage(I2PAppContext context) { super(context); - _context.statManager().createRateStat("netDb.searchReplyMessageSend", "How many search reply messages we send", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); - _context.statManager().createRateStat("netDb.searchReplyMessageReceive", "How many search reply messages we receive", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); + // do this in netdb if we need it + //_context.statManager().createRateStat("netDb.searchReplyMessageSend", "How many search reply messages we send", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); + //_context.statManager().createRateStat("netDb.searchReplyMessageReceive", "How many search reply messages we receive", "NetworkDatabase", new long[] { 60*1000, 5*60*1000, 10*60*1000, 60*60*1000 }); setSearchKey(null); _peerHashes = new ArrayList(3); setFromHash(null); @@ -45,7 +46,7 @@ public class DatabaseSearchReplyMessage extends I2NPMessageImpl { public void setSearchKey(Hash key) { _key = key; } public int getNumReplies() { return _peerHashes.size(); } - public Hash getReply(int index) { return (Hash)_peerHashes.get(index); } + public Hash getReply(int index) { return _peerHashes.get(index); } public void addReply(Hash peer) { _peerHashes.add(peer); } //public void addReplies(Collection replies) { _peerHashes.addAll(replies); } @@ -77,7 +78,7 @@ public class DatabaseSearchReplyMessage extends I2NPMessageImpl { curIndex += Hash.HASH_LENGTH; _from = new Hash(from); - _context.statManager().addRateData("netDb.searchReplyMessageReceive", num*32 + 64, 1); + //_context.statManager().addRateData("netDb.searchReplyMessageReceive", num*32 + 64, 1); } /** calculate the message body's length (not including the header and footer */ diff --git a/router/java/src/net/i2p/data/i2np/GarlicMessage.java b/router/java/src/net/i2p/data/i2np/GarlicMessage.java index 88d2f2b37..72d7e5d06 100644 --- a/router/java/src/net/i2p/data/i2np/GarlicMessage.java +++ b/router/java/src/net/i2p/data/i2np/GarlicMessage.java @@ -44,7 +44,7 @@ public class GarlicMessage extends I2NPMessageImpl { long len = DataHelper.fromLong(data, curIndex, 4); curIndex += 4; - if ( (len <= 0) || (len > 64*1024) ) throw new I2NPMessageException("size="+len); + if ( (len <= 0) || (len > MAX_SIZE) ) throw new I2NPMessageException("size="+len); _data = new byte[(int)len]; System.arraycopy(data, curIndex, _data, 0, (int)len); } diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index f89c6cbfe..e841160d6 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -373,8 +373,9 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM return new DatabaseSearchReplyMessage(context); case DeliveryStatusMessage.MESSAGE_TYPE: return new DeliveryStatusMessage(context); - case DateMessage.MESSAGE_TYPE: - return new DateMessage(context); + // unused since forever (0.5?) + //case DateMessage.MESSAGE_TYPE: + // return new DateMessage(context); case GarlicMessage.MESSAGE_TYPE: return new GarlicMessage(context); case TunnelDataMessage.MESSAGE_TYPE: @@ -383,6 +384,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM return new TunnelGatewayMessage(context); case DataMessage.MESSAGE_TYPE: return new DataMessage(context); + // unused since 0.6.1.10 //case TunnelCreateMessage.MESSAGE_TYPE: // return new TunnelCreateMessage(context); //case TunnelCreateStatusMessage.MESSAGE_TYPE: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f17951822..fb40e5644 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 = ""; diff --git a/router/java/src/net/i2p/data/i2np/DateMessage.java b/router/java/test/net/i2p/data/i2np/DateMessage.java similarity index 100% rename from router/java/src/net/i2p/data/i2np/DateMessage.java rename to router/java/test/net/i2p/data/i2np/DateMessage.java From a8ae36c4031f4f3307ac9cd9ab3b441ee4ec4c45 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 26 Jan 2010 20:05:03 +0000 Subject: [PATCH 60/72] fixup --- history.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/history.txt b/history.txt index d64ca92d5..caecdd4af 100644 --- a/history.txt +++ b/history.txt @@ -1,14 +1,12 @@ -2010-01-28 zzz +2010-01-26 zzz + * build.xml: Speed up distclean additions * Clock: Don't refuse to update because of peer skew the first time + * Debian: Fixup, update, enhance scripts * I2NP: Various cleanup and bulletproofing * Log: Try to avoid complaints at shutdown * Profiles: Fix lack of profiles at router startup, especially for new routers * stats.jsp: Shrink the dropdown box -2010-01-26 zzz - * build.xml: Speed up distclean additions - * Debian: Fixup, update, enhance scripts - 2010-01-24 zzz * ProfileOrganizerRenderer: Cleanups * Reseed: Update welt's reseed hostname From 45388b0d4843b79ae151ec099977fd8e449c3214 Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 28 Jan 2010 20:05:03 +0000 Subject: [PATCH 61/72] added an getTargetAddresses(transportStyle) method to the RouterInfo structure --- core/java/src/net/i2p/data/RouterInfo.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/java/src/net/i2p/data/RouterInfo.java b/core/java/src/net/i2p/data/RouterInfo.java index f3e2f4899..523fc45dc 100644 --- a/core/java/src/net/i2p/data/RouterInfo.java +++ b/core/java/src/net/i2p/data/RouterInfo.java @@ -19,6 +19,7 @@ import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.Set; +import java.util.Vector; import net.i2p.crypto.DSAEngine; import net.i2p.crypto.SHA256Generator; @@ -450,6 +451,18 @@ public class RouterInfo extends DataStructureImpl { } return null; } + + public List getTargetAddresses(String transportStyle) { + List ret = new Vector(); + synchronized(this._addresses) { + for(Object o : this._addresses) { + RouterAddress addr = (RouterAddress)o; + if(addr.getTransportStyle().equals(transportStyle)) + ret.add(addr); + } + } + return ret; + } /** * Actually validate the signature From 9c2edf5c6aff23c5ff3a86983315c4575da27e87 Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 28 Jan 2010 20:06:16 +0000 Subject: [PATCH 62/72] update history --- history.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/history.txt b/history.txt index caecdd4af..3dedc9645 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2010-01-28 welterde + * enhance support for multiple RouterAddresses' of the same style in RouterInfo + 2010-01-26 zzz * build.xml: Speed up distclean additions * Clock: Don't refuse to update because of peer skew the first time From cfeafacd07b38155c83d290ed9437b8b462a53aa Mon Sep 17 00:00:00 2001 From: walking Date: Fri, 29 Jan 2010 09:26:02 +0000 Subject: [PATCH 63/72] update the pos --- apps/i2psnark/locale/messages_zh.po | 8 +- apps/i2ptunnel/locale/messages_zh.po | 155 +- apps/routerconsole/locale/messages_zh.po | 8559 +++++++++++----------- 3 files changed, 4286 insertions(+), 4436 deletions(-) diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index 54759f568..09e9e2012 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-18 06:45+0000\n" -"PO-Revision-Date: 2009-12-27 10:47+0800\n" +"POT-Creation-Date: 2010-01-29 07:17+0000\n" +"PO-Revision-Date: 2010-01-29 15:30+0800\n" "Last-Translator: walking \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" @@ -141,8 +141,8 @@ 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\"结尾,删除之!" +msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!" +msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!" #: ../java/src/org/klomp/snark/SnarkManager.java:566 #, java-format diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index 3e9f29211..e0ca5089c 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-02 08:14+0000\n" -"PO-Revision-Date: 2010-01-02 23:43+0800\n" +"POT-Creation-Date: 2010-01-29 07:17+0000\n" +"PO-Revision-Date: 2010-01-29 15:31+0800\n" "Last-Translator: walking \n" "Language-Team: foo \n" "MIME-Version: 1.0\n" @@ -17,12 +17,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:426 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:436 #, java-format msgid "To visit the destination in your host database, click here. To visit the conflicting addresshelper link by temporarily giving it a random alias, click here." msgstr "要访问您本地【地址簿】中规定的主机(相当与IP),请点击这里。要访问【地址助手】返回的主机请点这里(主机的域名会被临时强制替换)。" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:792 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:802 msgid "Click a link below to look for an address helper by using a \"jump\" service:" msgstr "请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的主机:" @@ -70,6 +70,10 @@ msgstr "Streamr 客户端" msgid "Streamr server" msgstr "Streamr 服务器" +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392 +msgid "HTTP bidir" +msgstr "双向http" + #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73 msgid "I2P Tunnel Manager - Edit Client Tunnel" msgstr "I2P 隧道管理器 - 编辑客户端隧道" @@ -112,6 +116,7 @@ msgstr "目标" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 msgid "Access Point" msgstr "接入点" @@ -119,28 +124,34 @@ msgstr "接入点" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:179 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:207 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:157 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:181 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:172 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:228 msgid "required" msgstr "必要" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:183 msgid "Reachable by" msgstr "访问地址" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:162 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:195 msgid "Locally (127.0.0.1)" msgstr "本地(127.0.0.1)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:166 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199 msgid "Everyone (0.0.0.0)" msgstr "任何人(0.0.0.0)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:170 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203 msgid "LAN Hosts (Please specify your LAN address)" msgstr "局域网(请指定LAN地址)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:186 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:205 msgid "Other" msgstr "其他" @@ -157,17 +168,17 @@ msgid "name or destination" msgstr "名称或描述" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:190 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237 msgid "Profile" msgstr "连接类型" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:197 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:244 msgid "interactive connection" msgstr "速度连接" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:201 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:248 msgid "bulk connection (downloads/websites/BT)" msgstr "效率连接(下载/WEB/BT)" @@ -198,7 +209,7 @@ msgid "(Check the Box for 'YES')" msgstr "(选中表示\"是\")" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:253 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:219 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266 msgid "Advanced networking options" msgstr "高级网络设置" @@ -207,151 +218,151 @@ msgid "(NOTE: when this client proxy is configured to share tunnels, then these msgstr "(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户端!)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:257 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268 msgid "Tunnel Options" msgstr "隧道选项" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:270 msgid "Length" msgstr "长度" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:266 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277 msgid "0 hop tunnel (low anonymity, low latency)" msgstr "直连(匿名性无,延迟低)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:270 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:234 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281 msgid "1 hop tunnel (medium anonymity, medium latency)" msgstr "隧道跳点x1(匿名性中,延迟中)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:274 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:238 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:285 msgid "2 hop tunnel (high anonymity, high latency)" msgstr "隧道跳点x2(匿名性高,延迟高)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:289 msgid "3 hop tunnel (very high anonymity, poor performance)" msgstr "隧道跳点x3(匿名性优,影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:287 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:298 msgid "hop tunnel (very poor performance)" msgstr "跳点隧道(严重影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 msgid "Variance" msgstr "随机变化" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:299 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:263 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310 msgid "0 hop variance (no randomisation, consistant performance)" msgstr "隧道长度恒定(随机性无,性能稳定)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:303 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:267 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314 msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-1(随机性中,影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:271 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318 msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)" msgstr "隧道长度+ 0-2(随机性高,影响性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:322 msgid "+/- 0-1 hop variance (standard randomisation, standard performance)" msgstr "隧道长度+/- 0-1(随机性标准,正常性能)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:315 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:326 msgid "+/- 0-2 hop variance (not recommended)" msgstr "隧道程度+/- 0-2(不推荐)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:327 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:338 msgid "hop variance" msgstr "节点数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:332 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:343 msgid "Count" msgstr "计数" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:339 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350 msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)" msgstr "出/入站隧道x1(带宽低,低可靠性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:343 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:307 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:354 msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)" msgstr "出/入站隧道x2(带宽标准,标准稳定性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:347 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:358 msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)" msgstr "出/入站隧道x3(带宽高,高稳定性)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:367 msgid "tunnels" msgstr "隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:325 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:372 msgid "Backup Count" msgstr "备用数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:368 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379 msgid "0 backup tunnels (0 redundancy, no added resource usage)" msgstr "无备用隧道(无冗余,不增加资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383 msgid "1 backup tunnel each direction (low redundancy, low resource usage)" msgstr "备用隧道对x1 (低冗余,低资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:340 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:387 msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)" msgstr "备用隧道对x2 (中冗余,中资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391 msgid "3 backup tunnels each direction (high redundancy, high resource usage)" msgstr "备用隧道对x3 (高冗余,高资源占用)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:389 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:400 msgid "backup tunnels" msgstr "备用隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405 msgid "I2CP Options" msgstr "I2CP选项" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407 msgid "Host" msgstr "主机" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:400 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266 msgid "Port" msgstr "端口" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:398 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445 msgid "Reduce tunnel quantity when idle" msgstr "空闲时缩减隧道数量" @@ -360,20 +371,20 @@ msgstr "空闲时缩减隧道数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:388 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:400 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447 msgid "Enable" msgstr "启用" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:404 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451 msgid "Reduced tunnel count" msgstr "削减后的隧道数量" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455 msgid "Idle minutes" msgstr "空闲时间(分钟)" @@ -402,7 +413,7 @@ msgid "File" msgstr "文件" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:252 msgid "Local destination" msgstr "本地目标" @@ -411,27 +422,27 @@ msgid "(if known)" msgstr "(如果已知)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:444 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:491 msgid "Custom options" msgstr "自定义选项" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:448 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495 msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted." msgstr "注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生效。" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:474 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497 msgid "Save" msgstr "保存" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501 msgid "Delete" msgstr "删除" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:456 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:503 msgid "Cancel" msgstr "取消" @@ -447,92 +458,92 @@ msgstr "服务器隧道设置" msgid "New server settings" msgstr "新建服务器设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214 msgid "Website name" msgstr "网站名称" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:171 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218 msgid "(leave blank for outproxies)" msgstr "(出口代理这里请置空)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:176 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223 msgid "Private key file" msgstr "私钥文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:215 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262 msgid "Add to local addressbook" msgstr "添加至本地地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415 msgid "Encrypt Leaseset" msgstr "加密赁集" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:374 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421 msgid "Encryption Key" msgstr "加密密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:378 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425 msgid "Generate New Key" msgstr "生成新密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427 msgid "Generate" msgstr "生成" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:382 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489 msgid "(Tunnel must be stopped first)" msgstr "(必须先停止隧道)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431 msgid "Restricted Access List" msgstr "限制访问列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433 msgid "Unimplemented" msgstr "尚未实现" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:392 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439 msgid "Access List" msgstr "访问列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:396 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443 msgid "(Restrict to these clients only)" msgstr "(仅允许这些客户访问)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459 msgid "New Certificate type" msgstr "新建证书类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:414 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:461 msgid "None" msgstr "无" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:418 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:465 msgid "Hashcash (effort)" msgstr "Hashcash (强度)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471 msgid "Hashcash Calc Time" msgstr "Hashcash 计算时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473 msgid "Estimate" msgstr "估算" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:428 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475 msgid "Hidden" msgstr "隐藏" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:432 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479 msgid "Signed (signed by)" msgstr "签名(签名者)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:438 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485 msgid "Modify Certificate" msgstr "修改证书" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487 msgid "Modify" msgstr "修改" diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index f58ecf519..1a3ef881d 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -1,4360 +1,4199 @@ -# 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: 2010-01-02 08:13+0000\n" -"PO-Revision-Date: \n" -"Last-Translator: walking \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: Chinese\n" -"X-Poedit-Country: CHINA\n" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:117 -#, java-format -msgid "Banned by router hash: {0}" -msgstr "按路由器指纹封杀:{0}" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:119 -msgid "Banned by router hash" -msgstr "路由指纹封锁" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:664 -msgid "IP banned" -msgstr "IP封锁" - -#: ../../../router/java/src/net/i2p/router/Blocklist.java:734 -#, java-format -msgid "IP banned by blocklist.txt entry {0}" -msgstr "按IP黑名单blocklist.txt封杀的节点{0}" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:91 -msgid "Rejecting tunnels: Shutting down" -msgstr "拒绝共享:准备退出" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:140 -msgid "Rejecting tunnels: High message delay" -msgstr "拒绝共享:高消息延迟" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:176 -msgid "Rejecting most tunnels: High number of requests" -msgstr "收紧共享:高请求量" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:232 -msgid "Rejecting tunnels: Limit reached" -msgstr "拒绝共享:隧道数限额" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:300 -msgid "Rejecting tunnels: Bandwidth limit" -msgstr "拒绝共享:带宽限额" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:370 -msgid "Rejecting most tunnels: Bandwidth limit" -msgstr "收紧共享:带宽限额" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:374 -msgid "Accepting most tunnels" -msgstr "接收多数隧道" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:376 -msgid "Accepting tunnels" -msgstr "接收共享隧道" - -#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:486 -msgid "Rejecting tunnels" -msgstr "拒绝参与共享隧道" - -#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 -msgid "No transports (hidden or starting up?)" -msgstr "无数据传输(隐身或正在启动)" - -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 -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 -#, java-format -msgid "Excessive clock skew: {0}" -msgstr "严重时滞:{0}" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:137 -msgid "Dropping tunnel requests: Too slow" -msgstr "忽略共享请求:速度太慢" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:354 -msgid "Dropping tunnel requests: Overloaded" -msgstr "忽略共享请求:路由过载" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:521 -msgid "Rejecting tunnels: Request overload" -msgstr "拒绝共享:请求过多" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:546 -msgid "Rejecting tunnels: Connection limit" -msgstr "拒绝共享:连接受限" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:748 -msgid "Dropping tunnel requests: High load" -msgstr "忽略共享请求:高负载" - -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:757 -msgid "Dropping tunnel requests: Queue time" -msgstr "忽略共享请求:队列积压" - -#: ../java/build/Countries.java:3 -msgid "Andorra" -msgstr "安道尔" - -#: ../java/build/Countries.java:4 -msgid "United Arab Emirates" -msgstr "阿联酋" - -#: ../java/build/Countries.java:5 -msgid "Afghanistan" -msgstr "阿富汗" - -#: ../java/build/Countries.java:6 -msgid "Antigua and Barbuda" -msgstr "安提瓜与巴布达" - -#: ../java/build/Countries.java:7 -msgid "Anguilla" -msgstr "安格拉" - -#: ../java/build/Countries.java:8 -msgid "Albania" -msgstr "阿尔巴尼亚" - -#: ../java/build/Countries.java:9 -msgid "Armenia" -msgstr "亚美尼亚" - -#: ../java/build/Countries.java:10 -msgid "Netherlands Antilles" -msgstr "荷兰属地" - -#: ../java/build/Countries.java:11 -msgid "Angola" -msgstr "安哥拉" - -#: ../java/build/Countries.java:12 -msgid "Antarctica" -msgstr "南极洲" - -#: ../java/build/Countries.java:13 -msgid "Argentina" -msgstr "阿根廷" - -#: ../java/build/Countries.java:14 -msgid "American Samoa" -msgstr "东萨摩亚" - -#: ../java/build/Countries.java:15 -msgid "Austria" -msgstr "奥地利" - -#: ../java/build/Countries.java:16 -msgid "Australia" -msgstr "澳大利亚" - -#: ../java/build/Countries.java:17 -msgid "Aruba" -msgstr "阿鲁巴" - -#: ../java/build/Countries.java:19 -msgid "Azerbaijan" -msgstr "阿塞拜疆" - -#: ../java/build/Countries.java:20 -msgid "Bosnia and Herzegovina" -msgstr "波黑" - -#: ../java/build/Countries.java:21 -msgid "Barbados" -msgstr "巴巴多斯" - -#: ../java/build/Countries.java:22 -msgid "Bangladesh" -msgstr "孟加拉" - -#: ../java/build/Countries.java:23 -msgid "Belgium" -msgstr "比利时" - -#: ../java/build/Countries.java:24 -msgid "Burkina Faso" -msgstr "布基纳法索" - -#: ../java/build/Countries.java:25 -msgid "Bulgaria" -msgstr "保加利亚" - -#: ../java/build/Countries.java:26 -msgid "Bahrain" -msgstr "巴林" - -#: ../java/build/Countries.java:27 -msgid "Burundi" -msgstr "不丹" - -#: ../java/build/Countries.java:28 -msgid "Benin" -msgstr "贝宁" - -#: ../java/build/Countries.java:29 -msgid "Bermuda" -msgstr "百慕大" - -#: ../java/build/Countries.java:30 -msgid "Brunei Darussalam" -msgstr "文莱达鲁萨兰" - -#: ../java/build/Countries.java:31 -msgid "Bolivia" -msgstr "玻利维亚" - -#: ../java/build/Countries.java:32 -msgid "Brazil" -msgstr "巴西" - -#: ../java/build/Countries.java:33 -msgid "Bahamas" -msgstr "巴哈马" - -#: ../java/build/Countries.java:34 -msgid "Bhutan" -msgstr "不丹" - -#: ../java/build/Countries.java:35 -msgid "Bouvet Island" -msgstr "布韦群岛" - -#: ../java/build/Countries.java:36 -msgid "Botswana" -msgstr "伯兹瓦纳" - -#: ../java/build/Countries.java:37 -msgid "Belarus" -msgstr "白俄罗斯" - -#: ../java/build/Countries.java:38 -msgid "Belize" -msgstr "伯利兹" - -#: ../java/build/Countries.java:39 -msgid "Canada" -msgstr "加拿大" - -#: ../java/build/Countries.java:40 -msgid "The Democratic Republic of the Congo" -msgstr "刚果" - -#: ../java/build/Countries.java:41 -msgid "Central African Republic" -msgstr "中非" - -#: ../java/build/Countries.java:42 -msgid "Congo" -msgstr "Congo" - -#: ../java/build/Countries.java:43 -msgid "Switzerland" -msgstr "瑞士" - -#: ../java/build/Countries.java:44 -msgid "Cote D'Ivoire" -msgstr "象牙海岸" - -#: ../java/build/Countries.java:45 -msgid "Cook Islands" -msgstr "库克群岛" - -#: ../java/build/Countries.java:46 -msgid "Chile" -msgstr "智利" - -#: ../java/build/Countries.java:47 -msgid "Cameroon" -msgstr "喀麦隆" - -#: ../java/build/Countries.java:48 -msgid "China" -msgstr "中国" - -#: ../java/build/Countries.java:49 -msgid "Colombia" -msgstr "哥伦比亚" - -#: ../java/build/Countries.java:50 -msgid "Costa Rica" -msgstr "哥斯达黎加" - -#: ../java/build/Countries.java:51 -msgid "Serbia and Montenegro" -msgstr "塞尔维亚与黑山" - -#: ../java/build/Countries.java:52 -msgid "Cuba" -msgstr "古巴" - -#: ../java/build/Countries.java:53 -msgid "Cape Verde" -msgstr "佛得角" - -#: ../java/build/Countries.java:54 -msgid "Cyprus" -msgstr "塞浦路斯" - -#: ../java/build/Countries.java:55 -msgid "Czech Republic" -msgstr "捷克" - -#: ../java/build/Countries.java:56 -msgid "Germany" -msgstr "德国" - -#: ../java/build/Countries.java:57 -msgid "Djibouti" -msgstr "吉布提" - -#: ../java/build/Countries.java:58 -msgid "Denmark" -msgstr "丹麦" - -#: ../java/build/Countries.java:59 -msgid "Dominica" -msgstr "多米尼" - -#: ../java/build/Countries.java:60 -msgid "Dominican Republic" -msgstr "多米尼加联邦" - -#: ../java/build/Countries.java:61 -msgid "Algeria" -msgstr "阿尔及利亚" - -#: ../java/build/Countries.java:62 -msgid "Ecuador" -msgstr "厄瓜多尔" - -#: ../java/build/Countries.java:63 -msgid "Estonia" -msgstr "爱沙尼亚" - -#: ../java/build/Countries.java:64 -msgid "Egypt" -msgstr "埃及" - -#: ../java/build/Countries.java:65 -msgid "Eritrea" -msgstr "厄立特里亚" - -#: ../java/build/Countries.java:66 -msgid "Spain" -msgstr "西班牙" - -#: ../java/build/Countries.java:67 -msgid "Ethiopia" -msgstr "埃塞俄比亚" - -#: ../java/build/Countries.java:68 -msgid "Finland" -msgstr "芬兰" - -#: ../java/build/Countries.java:69 -msgid "Fiji" -msgstr "斐济" - -#: ../java/build/Countries.java:70 -msgid "Falkland Islands (Malvinas)" -msgstr "福克兰群岛" - -#: ../java/build/Countries.java:71 -msgid "Federated States of Micronesia" -msgstr "密克罗尼西亚" - -#: ../java/build/Countries.java:72 -msgid "Faroe Islands" -msgstr "法罗群岛" - -#: ../java/build/Countries.java:73 -msgid "France" -msgstr "法国" - -#: ../java/build/Countries.java:74 -msgid "Gabon" -msgstr "加蓬" - -#: ../java/build/Countries.java:75 -msgid "United Kingdom" -msgstr "英国" - -#: ../java/build/Countries.java:76 -msgid "Grenada" -msgstr "格林纳达" - -#: ../java/build/Countries.java:77 -msgid "Georgia" -msgstr "格鲁吉亚" - -#: ../java/build/Countries.java:78 -msgid "French Guiana" -msgstr "圭亚那" - -#: ../java/build/Countries.java:79 -msgid "Ghana" -msgstr "加纳" - -#: ../java/build/Countries.java:80 -msgid "Gibraltar" -msgstr "直布罗陀" - -#: ../java/build/Countries.java:81 -msgid "Greenland" -msgstr "格陵兰群岛" - -#: ../java/build/Countries.java:82 -msgid "Gambia" -msgstr "冈比亚" - -#: ../java/build/Countries.java:83 -msgid "Guinea" -msgstr "几内亚" - -#: ../java/build/Countries.java:84 -msgid "Guadeloupe" -msgstr "瓜德罗普岛" - -#: ../java/build/Countries.java:85 -msgid "Equatorial Guinea" -msgstr "赤道几内亚" - -#: ../java/build/Countries.java:86 -msgid "Greece" -msgstr "希腊" - -#: ../java/build/Countries.java:87 -msgid "South Georgia and the South Sandwich Islands" -msgstr "南乔治亚岛和南桑德韦奇岛" - -#: ../java/build/Countries.java:88 -msgid "Guatemala" -msgstr "危地马拉" - -#: ../java/build/Countries.java:89 -msgid "Guam" -msgstr "关岛" - -#: ../java/build/Countries.java:90 -msgid "Guinea-Bissau" -msgstr "几内亚比绍" - -#: ../java/build/Countries.java:91 -msgid "Guyana" -msgstr "圭亚那" - -#: ../java/build/Countries.java:92 -msgid "Hong Kong" -msgstr "香港" - -#: ../java/build/Countries.java:93 -msgid "Honduras" -msgstr "洪都拉斯" - -#: ../java/build/Countries.java:94 -msgid "Croatia" -msgstr "克罗蒂亚" - -#: ../java/build/Countries.java:95 -msgid "Haiti" -msgstr "海地" - -#: ../java/build/Countries.java:96 -msgid "Hungary" -msgstr "匈牙利" - -#: ../java/build/Countries.java:97 -msgid "Indonesia" -msgstr "印尼" - -#: ../java/build/Countries.java:98 -msgid "Ireland" -msgstr "爱尔兰" - -#: ../java/build/Countries.java:99 -msgid "Israel" -msgstr "以色列" - -#: ../java/build/Countries.java:101 -msgid "India" -msgstr "印度" - -#: ../java/build/Countries.java:102 -msgid "British Indian Ocean Territory" -msgstr "英属印度洋地区" - -#: ../java/build/Countries.java:103 -msgid "Iraq" -msgstr "伊拉克" - -#: ../java/build/Countries.java:104 -msgid "Islamic Republic of Iran" -msgstr "伊朗" - -#: ../java/build/Countries.java:105 -msgid "Iceland" -msgstr "冰岛" - -#: ../java/build/Countries.java:106 -msgid "Italy" -msgstr "意大利" - -#: ../java/build/Countries.java:108 -msgid "Jamaica" -msgstr "牙买加" - -#: ../java/build/Countries.java:109 -msgid "Jordan" -msgstr "约旦" - -#: ../java/build/Countries.java:110 -msgid "Japan" -msgstr "日本" - -#: ../java/build/Countries.java:111 -msgid "Kenya" -msgstr "肯尼亚" - -#: ../java/build/Countries.java:112 -msgid "Kyrgyzstan" -msgstr "吉尔吉斯斯坦" - -#: ../java/build/Countries.java:113 -msgid "Cambodia" -msgstr "柬埔塞" - -#: ../java/build/Countries.java:114 -msgid "Kiribati" -msgstr "基里巴斯" - -#: ../java/build/Countries.java:115 -msgid "Comoros" -msgstr "科摩罗" - -#: ../java/build/Countries.java:116 -msgid "Saint Kitts and Nevis" -msgstr "圣克里斯多福与尼维斯" - -#: ../java/build/Countries.java:117 -msgid "Republic of Korea" -msgstr "韩国" - -#: ../java/build/Countries.java:118 -msgid "Kuwait" -msgstr "科威特" - -#: ../java/build/Countries.java:119 -msgid "Cayman Islands" -msgstr "开曼群岛" - -#: ../java/build/Countries.java:120 -msgid "Kazakhstan" -msgstr "哈萨克斯坦" - -#: ../java/build/Countries.java:121 -msgid "Lao People's Democratic Republic" -msgstr "老挝" - -#: ../java/build/Countries.java:122 -msgid "Lebanon" -msgstr "黎巴嫩" - -#: ../java/build/Countries.java:123 -msgid "Saint Lucia" -msgstr "圣露西亚岛" - -#: ../java/build/Countries.java:124 -msgid "Liechtenstein" -msgstr "列支敦士登" - -#: ../java/build/Countries.java:125 -msgid "Sri Lanka" -msgstr "斯里兰卡" - -#: ../java/build/Countries.java:126 -msgid "Liberia" -msgstr "利比里亚" - -#: ../java/build/Countries.java:127 -msgid "Lesotho" -msgstr "莱索托" - -#: ../java/build/Countries.java:128 -msgid "Lithuania" -msgstr "立陶宛" - -#: ../java/build/Countries.java:129 -msgid "Luxembourg" -msgstr "卢森堡" - -#: ../java/build/Countries.java:130 -msgid "Latvia" -msgstr "拉脱维亚" - -#: ../java/build/Countries.java:131 -msgid "Libyan Arab Jamahiriya" -msgstr "利比亚" - -#: ../java/build/Countries.java:132 -msgid "Morocco" -msgstr "摩洛哥" - -#: ../java/build/Countries.java:133 -msgid "Monaco" -msgstr "摩纳哥" - -#: ../java/build/Countries.java:134 -msgid "Republic of Moldova" -msgstr "摩尔多瓦" - -#: ../java/build/Countries.java:137 -msgid "Madagascar" -msgstr "马达加斯加" - -#: ../java/build/Countries.java:138 -msgid "Marshall Islands" -msgstr "马绍尔群岛" - -#: ../java/build/Countries.java:139 -msgid "The Former Yugoslav Republic of Macedonia" -msgstr "前南斯拉夫之马其顿共和国" - -#: ../java/build/Countries.java:140 -msgid "Mali" -msgstr "马里" - -#: ../java/build/Countries.java:141 -msgid "Myanmar" -msgstr "缅甸" - -#: ../java/build/Countries.java:142 -msgid "Mongolia" -msgstr "蒙古" - -#: ../java/build/Countries.java:143 -msgid "Macao" -msgstr "澳门" - -#: ../java/build/Countries.java:144 -msgid "Northern Mariana Islands" -msgstr "北马里亚纳群岛" - -#: ../java/build/Countries.java:145 -msgid "Martinique" -msgstr "马提尼克岛" - -#: ../java/build/Countries.java:146 -msgid "Mauritania" -msgstr "毛里塔尼亚" - -#: ../java/build/Countries.java:147 -msgid "Montserrat" -msgstr "蒙特塞拉特" - -#: ../java/build/Countries.java:148 -msgid "Malta" -msgstr "马尔他" - -#: ../java/build/Countries.java:149 -msgid "Mauritius" -msgstr "毛里求斯" - -#: ../java/build/Countries.java:150 -msgid "Maldives" -msgstr "马尔代夫" - -#: ../java/build/Countries.java:151 -msgid "Malawi" -msgstr "马拉维" - -#: ../java/build/Countries.java:152 -msgid "Mexico" -msgstr "墨西哥" - -#: ../java/build/Countries.java:153 -msgid "Malaysia" -msgstr "马来西亚" - -#: ../java/build/Countries.java:154 -msgid "Mozambique" -msgstr "莫桑比克" - -#: ../java/build/Countries.java:155 -msgid "Namibia" -msgstr "纳米比亚" - -#: ../java/build/Countries.java:156 -msgid "New Caledonia" -msgstr "新喀里多尼亚" - -#: ../java/build/Countries.java:157 -msgid "Niger" -msgstr "尼日尔" - -#: ../java/build/Countries.java:158 -msgid "Norfolk Island" -msgstr "尼加拉瓜" - -#: ../java/build/Countries.java:159 -msgid "Nigeria" -msgstr "尼日利亚" - -#: ../java/build/Countries.java:160 -msgid "Nicaragua" -msgstr "尼加拉瓜" - -#: ../java/build/Countries.java:161 -msgid "Netherlands" -msgstr "荷兰" - -#: ../java/build/Countries.java:162 -msgid "Norway" -msgstr "挪威" - -#: ../java/build/Countries.java:163 -msgid "Nepal" -msgstr "尼泊尔" - -#: ../java/build/Countries.java:164 -msgid "Nauru" -msgstr "瑙鲁" - -#: ../java/build/Countries.java:165 -msgid "Niue" -msgstr "纽埃岛" - -#: ../java/build/Countries.java:166 -msgid "New Zealand" -msgstr "新西兰" - -#: ../java/build/Countries.java:167 -msgid "Oman" -msgstr "阿曼" - -#: ../java/build/Countries.java:168 -msgid "Panama" -msgstr "巴拿马" - -#: ../java/build/Countries.java:169 -msgid "Peru" -msgstr "秘鲁" - -#: ../java/build/Countries.java:170 -msgid "French Polynesia" -msgstr "玻利尼西亚" - -#: ../java/build/Countries.java:171 -msgid "Papua New Guinea" -msgstr "巴布亚新几内亚" - -#: ../java/build/Countries.java:172 -msgid "Philippines" -msgstr "菲律宾" - -#: ../java/build/Countries.java:173 -msgid "Pakistan" -msgstr "巴基斯坦" - -#: ../java/build/Countries.java:174 -msgid "Poland" -msgstr "波兰" - -#: ../java/build/Countries.java:175 -msgid "Saint Pierre and Miquelon" -msgstr "圣皮埃尔岛和密克隆" - -#: ../java/build/Countries.java:176 -msgid "Puerto Rico" -msgstr "波多黎各" - -#: ../java/build/Countries.java:177 -msgid "Palestinian Territory" -msgstr "巴勒斯坦地区" - -#: ../java/build/Countries.java:178 -msgid "Portugal" -msgstr "葡萄牙" - -#: ../java/build/Countries.java:179 -msgid "Palau" -msgstr "帕劳" - -#: ../java/build/Countries.java:180 -msgid "Paraguay" -msgstr "巴拉圭" - -#: ../java/build/Countries.java:181 -msgid "Qatar" -msgstr "卡塔尔" - -#: ../java/build/Countries.java:182 -msgid "Reunion" -msgstr "留尼汪岛" - -#: ../java/build/Countries.java:183 -msgid "Romania" -msgstr "罗马尼亚" - -#: ../java/build/Countries.java:184 -msgid "Serbia" -msgstr "塞尔维亚" - -#: ../java/build/Countries.java:185 -msgid "Russian Federation" -msgstr "俄联邦" - -#: ../java/build/Countries.java:186 -msgid "Rwanda" -msgstr "卢旺达" - -#: ../java/build/Countries.java:187 -msgid "Saudi Arabia" -msgstr "沙特阿拉伯" - -#: ../java/build/Countries.java:188 -msgid "Solomon Islands" -msgstr "所罗门群岛" - -#: ../java/build/Countries.java:189 -msgid "Seychelles" -msgstr "塞舌尔" - -#: ../java/build/Countries.java:190 -msgid "Sudan" -msgstr "苏丹" - -#: ../java/build/Countries.java:191 -msgid "Sweden" -msgstr "瑞典" - -#: ../java/build/Countries.java:192 -msgid "Singapore" -msgstr "新加坡" - -#: ../java/build/Countries.java:193 -msgid "Slovenia" -msgstr "斯洛文尼亚" - -#: ../java/build/Countries.java:194 -msgid "Slovakia" -msgstr "斯洛伐克" - -#: ../java/build/Countries.java:195 -msgid "Sierra Leone" -msgstr "塞拉利昂" - -#: ../java/build/Countries.java:196 -msgid "San Marino" -msgstr "圣马力诺" - -#: ../java/build/Countries.java:197 -msgid "Senegal" -msgstr "塞内加尔" - -#: ../java/build/Countries.java:198 -msgid "Somalia" -msgstr "索马里" - -#: ../java/build/Countries.java:199 -msgid "Suriname" -msgstr "苏里南" - -#: ../java/build/Countries.java:200 -msgid "Sao Tome and Principe" -msgstr "圣多美与普林西比共和国" - -#: ../java/build/Countries.java:201 -msgid "El Salvador" -msgstr "萨尔瓦多" - -#: ../java/build/Countries.java:202 -msgid "Syrian Arab Republic" -msgstr "叙利亚" - -#: ../java/build/Countries.java:203 -msgid "Swaziland" -msgstr "斯威士兰" - -#: ../java/build/Countries.java:204 -msgid "Turks and Caicos Islands" -msgstr "特克斯和凯科斯群岛" - -#: ../java/build/Countries.java:205 -msgid "Chad" -msgstr "乍得" - -#: ../java/build/Countries.java:206 -msgid "French Southern Territories" -msgstr "法属南半球领地" - -#: ../java/build/Countries.java:207 -msgid "Togo" -msgstr "多哥" - -#: ../java/build/Countries.java:208 -msgid "Thailand" -msgstr "泰国" - -#: ../java/build/Countries.java:209 -msgid "Tajikistan" -msgstr "塔吉克斯坦" - -#: ../java/build/Countries.java:210 -msgid "Tokelau" -msgstr "托克劳群岛" - -#: ../java/build/Countries.java:211 -msgid "Timor-Leste" -msgstr "东帝汶" - -#: ../java/build/Countries.java:212 -msgid "Turkmenistan" -msgstr "土库曼斯坦" - -#: ../java/build/Countries.java:213 -msgid "Tunisia" -msgstr "突尼斯" - -#: ../java/build/Countries.java:214 -msgid "Tonga" -msgstr "汤加" - -#: ../java/build/Countries.java:215 -msgid "Turkey" -msgstr "土耳其" - -#: ../java/build/Countries.java:216 -msgid "Trinidad and Tobago" -msgstr "特立尼达和多巴哥" - -#: ../java/build/Countries.java:217 -msgid "Tuvalu" -msgstr "图瓦鲁" - -#: ../java/build/Countries.java:218 -msgid "Taiwan" -msgstr "台湾" - -#: ../java/build/Countries.java:219 -msgid "United Republic of Tanzania" -msgstr "坦桑尼亚" - -#: ../java/build/Countries.java:220 -msgid "Ukraine" -msgstr "乌克兰" - -#: ../java/build/Countries.java:221 -msgid "Uganda" -msgstr "乌干达" - -#: ../java/build/Countries.java:222 -msgid "United States Minor Outlying Islands" -msgstr "美国本土外小岛屿" - -#: ../java/build/Countries.java:223 -msgid "United States" -msgstr "美国" - -#: ../java/build/Countries.java:224 -msgid "Uruguay" -msgstr "乌拉圭" - -#: ../java/build/Countries.java:225 -msgid "Uzbekistan" -msgstr "乌兹别克斯坦" - -#: ../java/build/Countries.java:226 -msgid "Holy See (Vatican City State)" -msgstr "梵地冈" - -#: ../java/build/Countries.java:227 -msgid "Saint Vincent and the Grenadines" -msgstr "圣文森特和格林纳丁斯" - -#: ../java/build/Countries.java:228 -msgid "Venezuela" -msgstr "委内瑞拉" - -#: ../java/build/Countries.java:229 ../java/build/Countries.java:230 -msgid "Virgin Islands" -msgstr "维京群岛" - -#: ../java/build/Countries.java:231 -msgid "Viet Nam" -msgstr "越南" - -#: ../java/build/Countries.java:232 -msgid "Vanuatu" -msgstr "瓦努阿图" - -#: ../java/build/Countries.java:233 -msgid "Wallis and Futuna" -msgstr "瓦利斯群岛和富图纳群岛" - -#: ../java/build/Countries.java:234 -msgid "Samoa" -msgstr "东萨摩亚" - -#: ../java/build/Countries.java:235 -msgid "Yemen" -msgstr "也门" - -#: ../java/build/Countries.java:236 -msgid "Mayotte" -msgstr "马约特" - -#: ../java/build/Countries.java:237 -msgid "South Africa" -msgstr "南非" - -#: ../java/build/Countries.java:238 -msgid "Zambia" -msgstr "赞比亚" - -#: ../java/build/Countries.java:239 -msgid "Zimbabwe" -msgstr "津巴布韦" - -#: ../java/src/net/i2p/router/web/CSSHelper.java:54 -#: ../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 -msgid "I2P Router Console" -msgstr "I2P 路由控制台" - -#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 -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:263 -msgid "Configuration saved successfully" -msgstr "设置保存成功" - -#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:265 -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 -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 -msgid "Save WebApp Configuration" -msgstr "保存 WebApp 设置" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:54 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:67 -msgid "Start" -msgstr "启动" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:68 -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 -msgid "Unsupported" -msgstr "未支持的" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:83 -msgid "" -"Client configuration saved successfully - restart required to take effect." -msgstr "客户程序设置保存成功 - 程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:89 -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:382 -msgid "Client" -msgstr "客户" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 -msgid "started" -msgstr "已启动" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:111 -msgid "" -"WebApp configuration saved successfully - restart required to take effect." -msgstr "WebApp设置保存成功 - 程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 -msgid "WebApp" -msgstr "Web程序" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:131 -msgid "Failed to start" -msgstr "启动失败" - -#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:137 -msgid "Failed to find server." -msgstr "服务器或服务程序查找失败。" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 -msgid "Class and arguments" -msgstr "类与参数" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 -msgid "Run at Startup?" -msgstr "启动时运行?" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:17 -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 -msgid "Start Now" -msgstr "立即启动" - -#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:34 -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 -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 -msgid "Delete key" -msgstr "删除密钥" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 -msgid "You must enter a destination" -msgstr "您必须输入一个目标" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 -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 -msgid "Key for" -msgstr "密钥" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 -msgid "added to keyring" -msgstr "已加入钥匙环" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 -msgid "Invalid destination or key" -msgstr "目标或密钥无效" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 -msgid "removed from keyring" -msgstr "已从钥匙环中删除" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 -msgid "not found in keyring" -msgstr "在钥匙环未找到" - -#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 -msgid "Invalid destination" -msgstr "目标无效" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "CRIT" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "DEBUG" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "ERROR" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "INFO" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 -msgid "WARN" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -msgid "Network" -msgstr "网络" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -msgid "Service" -msgstr "服务" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:86 -#: ../java/strings/Strings.java:72 -msgid "Tunnels" -msgstr "隧道" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -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 -msgid "Update" -msgstr "更新" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -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 -msgid "Keyring" -msgstr "钥匙环" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -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 -#: ../java/strings/Strings.java:67 -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 -msgid "Stats" -msgstr "统计" - -#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 -msgid "Advanced" -msgstr "高级" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:261 -#: ../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:502 -#: ../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 -msgid "Save changes" -msgstr "保存修改" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 -msgid "Rechecking router reachability..." -msgstr "正在重检查路由连通性..." - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:150 -msgid "Updating IP address" -msgstr "正在更新IP地址" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:168 -msgid "Disabling TCP completely" -msgstr "正在彻底禁用TCP" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:172 -msgid "Updating inbound TCP address to" -msgstr "正在更新进站TCP地址至" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 -msgid "Disabling inbound TCP" -msgstr "正在禁用入站TCP" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:178 -msgid "Updating inbound TCP address to auto" -msgstr "正在更新入站TCP地址至" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:187 -msgid "Updating inbound TCP port to" -msgstr "正在更新入站TCP端口至" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 -msgid "Updating inbound TCP port to auto" -msgstr "正在更新入站TCP端口至" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 -msgid "Updating UDP port from" -msgstr "正在更新UDP端口由" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 -msgid "to" -msgstr "至" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:218 -msgid "Gracefully restarting into Hidden Router Mode" -msgstr "正在平滑重启路由进入隐身模式" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:220 -msgid "Gracefully restarting to exit Hidden Router Mode" -msgstr "正在平滑重启路由退出隐身模式" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:229 -msgid "Enabling UPnP, restart required to take effect" -msgstr "正在启用UPnP,程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 -msgid "Disabling UPnP, restart required to take effect" -msgstr "正在禁用UPnP,程序重启后生效" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:239 -msgid "Enabling laptop mode" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:241 -msgid "Disabling laptop mode" -msgstr "" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 -msgid "Requiring SSU introducers" -msgstr "正在获取SSU中介" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:288 -msgid "Gracefully restarting I2P to change published router address" -msgstr "正在平滑重启路由重新发布路由地址" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:308 -msgid "Updating bandwidth share percentage" -msgstr "正在更新共享带宽比例" - -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:378 -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 -msgid "unknown" -msgstr "未知" - -#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 -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 -msgid "Ban peer until restart" -msgstr "封杀节点直到重启" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 -#, 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 -msgid "Peer" -msgstr "节点" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 -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 -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 -msgid "Unban peer" -msgstr "节点解封" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 -msgid "unbanned" -msgstr "已解封" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 -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 -msgid "Adjust Profile Bonuses" -msgstr "调整节点评分" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 -msgid "Bad speed value" -msgstr "速度值无效" - -#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 -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 -msgid "Shutdown immediately" -msgstr "立刻关闭" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 -msgid "Cancel shutdown" -msgstr "取消关闭" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 -msgid "Cancel restart" -msgstr "取消重启" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 -msgid "Restart immediately" -msgstr "立刻重启" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 -msgid "Restart" -msgstr "重 启" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46 -msgid "Shutdown" -msgstr "关 闭" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 -msgid "Restart imminent" -msgstr "立刻重启" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 -msgid "Shutdown imminent" -msgstr "立刻关闭" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 -#, java-format -msgid "Shutdown in {0}" -msgstr "{0} 后退出" - -#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 -#, 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 -msgid "Shutdown gracefully" -msgstr "平滑关闭" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 -msgid "Graceful shutdown initiated" -msgstr "开始平滑关闭" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 -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 -msgid "Cancel graceful shutdown" -msgstr "取消平滑关闭" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 -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 -msgid "Graceful restart" -msgstr "平滑重启" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 -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 -msgid "Hard restart" -msgstr "硬重启" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 -msgid "Hard restart requested" -msgstr "硬重启已请求" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 -msgid "Rekey and Restart" -msgstr "更换密钥并重启" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 -msgid "Rekeying after graceful restart" -msgstr "平滑重启后更换密钥" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 -msgid "Rekey and Shutdown" -msgstr "更换密钥并关闭" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 -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 -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 -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 -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 -msgid "Show systray icon" -msgstr "显示托盘图标" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 -msgid "System tray icon enabled." -msgstr "系统托盘图标已启用" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:98 -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:110 -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 -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 -msgid "Hide systray icon" -msgstr "隐藏系统图标" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 -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 -msgid "View console on startup" -msgstr "程序启动时显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 -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 -msgid "Do not view console on startup" -msgstr "启动后不打开控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 -msgid "Console is not to be shown on startup" -msgstr "启动后不显示控制台" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 -msgid "Service installed" -msgstr "服务已安装" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 -msgid "Warning: unable to install the service" -msgstr "警告:无法安装服务" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 -msgid "Service removed" -msgstr "服务已卸载" - -#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 -msgid "Warning: unable to remove the service" -msgstr "警告:无法卸载服务" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 -msgid "Stat filter and location updated successfully to" -msgstr "统计数据过滤器及位置成功更新至" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 -msgid "Failed to update the stat filter and location" -msgstr "统计数据过滤器及地址更新失败" - -#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 -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 -msgid "Updated settings for all pools." -msgstr "隧道池更新完毕" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 -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 -msgid "" -"Error saving the configuration (applied but not saved) - please see the " -"error logs." -msgstr "配置保存出错(已应用但未保存) - 参见错误日志" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:11 -msgid "hop" -msgstr "跳点" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:12 -msgid "tunnel" -msgstr "隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 -msgid "hops" -msgstr "跳点" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 -msgid "tunnels" -msgstr "隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 -msgid "Exploratory tunnels" -msgstr "探测隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 -msgid "Client tunnels for" -msgstr "客户隧道 - " - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 -msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." -msgstr "匿名性警告 - 设置中包括 0-跳点 隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 -msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." -msgstr "匿名性警告 - 设置中包括 1-跳点 隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 -msgid "PERFORMANCE WARNING - Settings include very long tunnels." -msgstr "性能警告 - 设置中包括长隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 -msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." -msgstr "性能警告 - 设置中包括大量隧道" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 -msgid "Inbound" -msgstr "入站" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 -msgid "Outbound" -msgstr "出站" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 -msgid "Length" -msgstr "长度" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 -msgid "Randomization" -msgstr "随机" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 -msgid "Quantity" -msgstr "数量" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 -msgid "Backup quantity" -msgstr "备用数量" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 -msgid "Inbound options" -msgstr "入站选项" - -#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 -msgid "Outbound options" -msgstr "出站选项" - -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 -msgid "Theme change saved." -msgstr "主题设置已保存。" - -#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 -msgid "Refresh the page to view." -msgstr "刷新页面后查看。" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -msgid "English" -msgstr "英语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -msgid "French" -msgstr "法语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 -msgid "German" -msgstr "德语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -msgid "Chinese" -msgstr "中文" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -msgid "Dutch" -msgstr "荷兰语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -msgid "Russian" -msgstr "俄语" - -#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 -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 -msgid "Check for updates" -msgstr "检查更新" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:63 -msgid "Update available, attempting to download now" -msgstr "有更新可用,正在尝试下载" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:65 -msgid "Update available, click button on left to download" -msgstr "有更新可用,点左侧按钮下载" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:67 -msgid "No update available" -msgstr "无更新" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:75 -msgid "Updating news URL to" -msgstr "正在更新新闻链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:83 -msgid "Updating proxy host to" -msgstr "正在更新代理主机至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:91 -msgid "Updating proxy port to" -msgstr "正在更新代理端口至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 -msgid "Updating refresh frequency to" -msgstr "正在更新更新频率为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 -msgid "Updating update policy to" -msgstr "正在更新升级策略为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 -msgid "Updating update URLs." -msgstr "正在更新更新链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:128 -msgid "Updating trusted keys." -msgstr "正在更新可信公钥为" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:136 -msgid "Updating unsigned update URL to" -msgstr "正在更新未签名软件链接至" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:75 -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 -msgid "Never" -msgstr "从不" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:77 -msgid "Every" -msgstr "每" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:92 -msgid "Notify only" -msgstr "只提示" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:95 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:97 -msgid "Download and verify only" -msgstr "仅下载并验证" - -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:101 -#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:103 -msgid "Download, verify, and restart" -msgstr "仅下载、验证并重启" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:107 -msgid "Configure Graph Display" -msgstr "图表显示设置" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:107 -msgid "Select Stats" -msgstr "选择统计项" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:109 -msgid "Periods" -msgstr "周期" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:110 -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 -msgid "or" -msgstr "或" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:111 -msgid "plot events" -msgstr "事件数量" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:112 -msgid "Image sizes" -msgstr "图像尺寸" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:112 -msgid "width" -msgstr "宽度" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:113 -msgid "height" -msgstr "高度" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:113 -#: ../java/src/net/i2p/router/web/GraphHelper.java:114 -msgid "pixels" -msgstr "像素" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 -msgid "Refresh delay" -msgstr "刷新延迟" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 -msgid "hour" -msgstr "小时" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 -msgid "minute" -msgstr "分钟" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:115 -msgid "minutes" -msgstr "分钟" - -#: ../java/src/net/i2p/router/web/GraphHelper.java:116 -msgid "Redraw" -msgstr "重绘" - -#: ../java/src/net/i2p/router/web/LogsHelper.java:13 -#: ../java/src/net/i2p/router/web/LogsHelper.java:37 -msgid "File location" -msgstr "文件位置" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:59 -msgid "Network Database RouterInfo Lookup" -msgstr "网络数据库 RouterInfo 检索" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 -#: ../java/strings/Strings.java:68 -msgid "Router" -msgstr "路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:74 -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 -msgid "Network Database Contents" -msgstr "网络数据库内容" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 -msgid "View RouterInfo" -msgstr "浏览 RouterInfo" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 -msgid "LeaseSets" -msgstr "赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 -msgid "LeaseSet" -msgstr "赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:94 -msgid "Local" -msgstr "本地" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96 -msgid "Unpublished" -msgstr "未发布" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104 -msgid "Destination" -msgstr "目标" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:114 -#, java-format -msgid "Expires in {0}" -msgstr "{0} 后过期" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:116 -#, 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 -msgid "Gateway" -msgstr "网关" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:118 -msgid "Lease" -msgstr "租赁" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:120 -msgid "Tunnel" -msgstr "隧道" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:134 -msgid "View LeaseSets" -msgstr "查看赁集" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:136 -msgid "Not initialized" -msgstr "未初始化" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:145 -msgid "Routers" -msgstr "路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:147 -msgid "Show all routers" -msgstr "显示所有路由器" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:149 -msgid "Show all routers with full stats" -msgstr "显示所有路由及统计" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:184 -msgid "Network Database Router Statistics" -msgstr "NetDb路由器统计" - -#: ../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 -msgid "Count" -msgstr "计数" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 -msgid "Version" -msgstr "版本" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:204 -msgid "Transports" -msgstr "传输" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:222 -msgid "Country" -msgstr "国家" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:254 -msgid "Our info" -msgstr "我方信息" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:256 -msgid "Peer info for" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:260 -msgid "Full entry" -msgstr "完整项" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:105 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 -msgid "Hidden" -msgstr "隐身" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266 -msgid "Updated" -msgstr "已更新" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 -#, 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 -msgid "Published" -msgstr "发布" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:275 -msgid "Address(es)" -msgstr "地址" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 -msgid "Hidden or starting up" -msgstr "隐身或正在启动" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 -msgid "SSU" -msgstr "" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:308 -msgid "SSU with introducers" -msgstr "使用中介的SSU连接" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 -msgid "NTCP" -msgstr "" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 -msgid "NTCP and SSU" -msgstr "NTCP 与 SSU" - -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 -msgid "NTCP and SSU with introducers" -msgstr "使用中介的NTCP与SSU连接" - -#: ../java/src/net/i2p/router/web/NewsFetcher.java:80 -#, java-format -msgid "News last updated {0} ago." -msgstr "新闻更新于{0}前" - -#: ../java/src/net/i2p/router/web/NewsFetcher.java:86 -#, java-format -msgid "News last checked {0} ago." -msgstr "最近一次查收新闻在{0}前" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 -msgid "Peer Profiles" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 -#, java-format -msgid "Showing {0} recent profiles." -msgstr "显示最近 {0} 个节点信息" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 -#, java-format -msgid "Hiding {0} older profiles." -msgstr "隐藏 {0} 个较旧的信息。" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 -#, java-format -msgid "Hiding {0} standard profiles." -msgstr "隐藏 {0} 个标准描述。" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 -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 -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 -msgid "Capacity" -msgstr "容量" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 -msgid "Integration" -msgstr "整合" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 -msgid "Status" -msgstr "状态" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 -msgid "Fast, High Capacity" -msgstr "高速,高容" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127 -msgid "High Capacity" -msgstr "高容" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 -msgid "Standard" -msgstr "标准" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 -msgid "Failing" -msgstr "失败" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 -msgid "Integrated" -msgstr "已整合节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 -msgid "Banned" -msgstr "已封锁" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 -msgid "Unreachable" -msgstr "不可达" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 -msgid "Test Fails" -msgstr "测试失败" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 -msgid "profile" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 -msgid "Floodfill and Integrated Peers" -msgstr "种子节点与整合节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 -msgid "Caps" -msgstr "容量" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 -msgid "Integ. Value" -msgstr "" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 -msgid "Last Heard About" -msgstr "" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 -msgid "Last Heard From" -msgstr "" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 -msgid "Last Good Send" -msgstr "上一次发送成功" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 -msgid "Last Bad Send" -msgstr "上一次发送失败" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 -msgid "10m Resp. Time" -msgstr "10m响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 -msgid "1h Resp. Time" -msgstr "1h响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 -msgid "1d Resp. Time" -msgstr "1d响应时间" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 -msgid "Last Good Lookup" -msgstr "上一次查询成功" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 -msgid "Last Bad Lookup" -msgstr "上一次查询失败" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 -msgid "Last Good Store" -msgstr "上一次保存成功" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 -msgid "Last Bad Store" -msgstr "上一次保存失败" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 -msgid "1h Fail Rate" -msgstr "1h失败率" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 -msgid "1d Fail Rate" -msgstr "1d失败率" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 -msgid "Thresholds" -msgstr "临界值" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 -msgid "fast peers" -msgstr "高速节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 -msgid "high capacity peers" -msgstr "高容节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 -msgid " well integrated peers" -msgstr "整合节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 -msgid "Definitions" -msgstr "定义" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 -msgid "as determined by the profile organizer" -msgstr "由节点描述信息管理器决定" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 -msgid "groups" -msgstr "分组" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 -msgid "capabilities in the netDb, not used to determine profiles" -msgstr "netDb中的容量,与描述信息无关。" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 -msgid "caps" -msgstr "容量" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 -msgid "" -"peak throughput (bytes per second) over a 1 minute period that the peer has " -"sustained in a single tunnel" -msgstr "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 -msgid "speed" -msgstr "速度" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 -msgid "capacity" -msgstr "容量" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 -msgid "how many tunnels can we ask them to join in an hour?" -msgstr "一小时内路由可以邀请加入的隧道总量" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 -msgid "how many new peers have they told us about lately?" -msgstr "最近获知的新节点" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 -msgid "integration" -msgstr "整合" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 -msgid "is the peer banned, or unreachable, or failing tunnel tests?" -msgstr "是否节点被封禁,不可达,或在隧道测试中失败?" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 -msgid "status" -msgstr "状态" - -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:321 -msgid "n/a" -msgstr "" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 -#, java-format -msgid "Temporary ban expiring in {0}" -msgstr "临时封锁{0}后解除" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 -#, java-format -msgid "Banned until restart or in {0}" -msgstr "封锁直到重启或{0}后" - -#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 -msgid "unban now" -msgstr "立即解封" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:55 -msgid "GO" -msgstr "" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:58 -msgid "Statistics gathered during this router's uptime" -msgstr "路由运行时收集的统计数据" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:61 -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/StatsGenerator.java:107 -msgid "frequency" -msgstr "更新频率" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:141 -msgid "No lifetime events" -msgstr "自运行起无事件" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:153 -msgid "rate" -msgstr "速度" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:155 -msgid "avg value" -msgstr "均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:184 -msgid "events" -msgstr "事件" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:190 -msgid "No events" -msgstr "无事件" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:196 -msgid "lifetime average" -msgstr "总平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:198 -msgid "peak average" -msgstr "峰值平均值" - -#: ../java/src/net/i2p/router/web/StatsGenerator.java:216 -msgid "lifetime average value" -msgstr "总平均值" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44 -msgid "" -"Configure startup of clients and webapps (services); manually start dormant " -"services" -msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46 -msgid "I2P Services" -msgstr "I2P 服务" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52 -msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "管理您的 I2P HOST表(I2P域名解析表)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 -msgid "Addressbook" -msgstr "地址簿" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58 -msgid "Built-in anonymous BitTorrent Client" -msgstr "内建的匿名 BitTorrent 客户端" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60 -msgid "Torrents" -msgstr "匿名BT" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64 -msgid "Anonymous webmail client" -msgstr "匿名Web邮件客户端" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66 -msgid "Webmail" -msgstr "匿名邮箱" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 -msgid "Anonymous resident webserver" -msgstr "内置的匿名Web服务器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72 -msgid "Webserver" -msgstr "匿名主页服务器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76 -msgid "Configure I2P Router" -msgstr "设置 I2P 路由器" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:78 -msgid "I2P Internals" -msgstr "I2P内部设置" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348 -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 -msgid "Show all current peer connections" -msgstr "显示当前所有的节点连接" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96 -msgid "Show recent peer performance profiles" -msgstr "显示当前节点的性能记录" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98 -msgid "Profiles" -msgstr "节点信息" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102 -msgid "Show list of all known I2P routers" -msgstr "包含所有已知I2P路由器的列表" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104 -msgid "NetDB" -msgstr "NetDB" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108 -msgid "Health Report" -msgstr "路由器健康状况报告" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110 -msgid "Logs" -msgstr "日志" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114 -msgid "Show the router's workload, and how it's performing" -msgstr "显示I2P路由器的负载与工作状况" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116 -msgid "Jobs" -msgstr "作业" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120 -msgid "Graph router performance" -msgstr "路由性能统计图" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122 -msgid "Graphs" -msgstr "图表" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126 -msgid "Textual router performance statistics" -msgstr "路由性能文字统计" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138 -msgid "I2P Router Help" -msgstr "I2P路由帮助" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140 -msgid "General" -msgstr "功能概况" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143 -msgid "Your unique I2P router identity is" -msgstr "您I2P路由的唯一身份为" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 -msgid "never reveal it to anyone" -msgstr "切勿将其告诉任何人" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 -msgid "Local Identity" -msgstr "本地身份" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 -msgid "How long we've been running for this session" -msgstr "本次路由运行时间" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164 -msgid "Uptime" -msgstr "运行时间" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198 -msgid "Download" -msgstr "下载" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:207 -msgid "Download Unsigned" -msgstr "下载未签名更新" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233 -msgid "Active" -msgstr "活动节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:241 -msgid "Fast" -msgstr "快速节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:247 -msgid "High capacity" -msgstr "高容量节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259 -msgid "Known" -msgstr "已知节点" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274 -msgid "Help with firewall configuration" -msgstr "如何配置防火墙" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276 -msgid "Check NAT/firewall" -msgstr "检查NAT/防火墙" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296 -msgid "Reseed" -msgstr "补种(搜索节点启动网络)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:313 -msgid "Configure router bandwidth allocation" -msgstr "设置路由的带宽分配" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:315 -msgid "Bandwidth in/out" -msgstr "带宽(上/下行)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332 -msgid "Total" -msgstr "总计" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:340 -msgid "Used" -msgstr "已使用" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:350 -msgid "Tunnels in/out" -msgstr "通道(上/下行)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:355 -msgid "Exploratory" -msgstr "探测" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371 -msgid "Participating" -msgstr "共享" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:377 -msgid "What's in the router's job queue?" -msgstr "查看路由的作业队列" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379 -msgid "Congestion" -msgstr "拥堵" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 -msgid "Job lag" -msgstr "作业延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390 -msgid "Message delay" -msgstr "消息延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:396 -msgid "Tunnel lag" -msgstr "隧道延迟" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402 -msgid "Backlog" -msgstr "积压" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:96 -msgid "ERR-Client Manager I2CP Error - check logs" -msgstr "错误-客户程序管理器I2CP错误 - 请看日志" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:103 -#, java-format -msgid "ERR-Clock Skew of {0}" -msgstr "错误-系统时滞 {0}" - -# 暂不翻译,确定/良好 可能影响按钮的翻译 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:112 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 -msgid "OK" -msgstr "正常" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 -msgid "ERR-Private TCP Address" -msgstr "错误-TCP私有地址" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 -msgid "ERR-SymmetricNAT" -msgstr "错误-SymmeticNAT" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 -msgid "WARN-Firewalled with Inbound TCP Enabled" -msgstr "警告-入站TCP开启但因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 -msgid "WARN-Firewalled and Floodfill" -msgstr "警告-种子节点因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 -msgid "WARN-Firewalled and Fast" -msgstr "警告-快速节点因防火墙受限" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 -msgid "Firewalled" -msgstr "防火墙限制" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 -msgid "" -"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and " -"restart" -msgstr "" -"错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:131 -msgid "ERR-No Active Peers, Check Network Connection and Firewall" -msgstr "错误-无活动节点,请检查网络连接及防火墙" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:134 -msgid "ERR-UDP Disabled and Inbound TCP host/port not set" -msgstr "错误-UDP已禁用且TCP入站主机与端口未设置" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:136 -msgid "WARN-Firewalled with UDP Disabled" -msgstr "警告-因防火墙受限且UDP被禁用" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:138 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 -msgid "Testing" -msgstr "测试中" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:371 -msgid "Add/remove/edit & control your client and server tunnels" -msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:371 -msgid "Local Destinations" -msgstr "本地目标" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:380 -msgid "Server" -msgstr "服务" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 -msgid "Show tunnels" -msgstr "显示隧道" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:395 -msgid "Leases expired" -msgstr "Lease已过期" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:395 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 -msgid "Rebuilding" -msgstr "正在重建" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 -msgid "ago" -msgstr "前" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:399 -msgid "Ready" -msgstr "就绪" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:403 -msgid "Building" -msgstr "创建中" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:403 -msgid "Building tunnels" -msgstr "正在隧道创建" - -#: ../java/src/net/i2p/router/web/SummaryHelper.java:415 -#: ../java/strings/Strings.java:36 -msgid "shared clients" -msgstr "共享客户端" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:273 -msgid "configure" -msgstr "设置" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 -msgid "dead" -msgstr "失效" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 -msgid "Participating tunnels" -msgstr "共享隧道" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 -msgid "From" -msgstr "从" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 -msgid "Receive on" -msgstr "接收" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 -msgid "Expiration" -msgstr "到期" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 -msgid "Send on" -msgstr "发送" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 -msgid "To" -msgstr "至" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 -msgid "Rate" -msgstr "速度" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 -msgid "Role" -msgstr "职能" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -msgid "Usage" -msgstr "使用情况" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 -msgid "grace period" -msgstr "过渡期" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 -msgid "Outbound Endpoint" -msgstr "出站终端" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 -msgid "Inbound Gateway" -msgstr "入站网关" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162 -msgid "Participant" -msgstr "参与节点" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 -msgid "Inactive participating tunnels" -msgstr "不活跃的共享隧道" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 -msgid "Lifetime bandwidth usage" -msgstr "运行期间带宽使用情况" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -msgid "Expiry" -msgstr "到期" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 -msgid "In/Out" -msgstr "入/出" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159 -msgid "Participants" -msgstr "参与节点" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165 -msgid "Endpoint" -msgstr "终端" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 -msgid "Build in progress" -msgstr "创建中" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 -msgid "inbound" -msgstr "入站" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 -msgid "outbound" -msgstr "出站" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:215 -msgid "No tunnels; waiting for the grace period to end." -msgstr "无隧道;等待宽限期结束。" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 -msgid "in" -msgstr "入" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 -msgid "out" -msgstr "出" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:234 -msgid "Tunnel Counts By Peer" -msgstr "每节点隧道计数" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -msgid "% of total" -msgstr "占总数%" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -msgid "Our Tunnels" -msgstr "我方隧道" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 -msgid "Participating Tunnels" -msgstr "共享隧道" - -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:253 -msgid "Totals" -msgstr "总计" - -#: ../java/strings/Strings.java:12 -msgid "addressbook" -msgstr "地址簿" - -#: ../java/strings/Strings.java:13 -msgid "i2psnark" -msgstr "匿名BT客户端" - -#: ../java/strings/Strings.java:14 -msgid "i2ptunnel" -msgstr "I2P隧道" - -#: ../java/strings/Strings.java:15 -msgid "susimail" -msgstr "匿名邮箱" - -#: ../java/strings/Strings.java:16 -msgid "susidns" -msgstr "susiDNS" - -#: ../java/strings/Strings.java:17 -msgid "routerconsole" -msgstr "路由控制台" - -#: ../java/strings/Strings.java:22 -msgid "Web console" -msgstr "网页控制台" - -#: ../java/strings/Strings.java:23 -msgid "SAM application bridge" -msgstr "SAM 协议桥" - -#: ../java/strings/Strings.java:24 -msgid "Application tunnels" -msgstr "程序隧道" - -#: ../java/strings/Strings.java:25 -msgid "My eepsite web server" -msgstr "匿名主页服务器" - -#: ../java/strings/Strings.java:26 -msgid "I2P webserver (eepsite)" -msgstr "匿名主页服务器(eepsite)" - -#: ../java/strings/Strings.java:27 -msgid "Browser launch at startup" -msgstr "路由器启动时运行浏览器" - -#: ../java/strings/Strings.java:28 -msgid "BOB application bridge" -msgstr "BOB 协议桥" - -#: ../java/strings/Strings.java:30 -msgid "Open Router Console in web browser at startup" -msgstr "路由启动时打开控制台" - -#: ../java/strings/Strings.java:37 -msgid "IRC proxy" -msgstr "I2P聊天室" - -#: ../java/strings/Strings.java:38 -msgid "eepsite" -msgstr "匿名网站" - -#: ../java/strings/Strings.java:39 -msgid "I2P webserver" -msgstr "匿名主页服务器" - -#: ../java/strings/Strings.java:40 -msgid "HTTP Proxy" -msgstr "HTTP 代理" - -#: ../java/strings/Strings.java:42 -msgid "eepProxy" -msgstr "I2P代理" - -#: ../java/strings/Strings.java:43 -msgid "ircProxy" -msgstr "I2P聊天室" - -#: ../java/strings/Strings.java:45 -msgid "I2PSnark" -msgstr "I2P Snark" - -#: ../java/strings/Strings.java:47 -msgid "iMule" -msgstr "" - -#: ../java/strings/Strings.java:51 -msgid "classic" -msgstr "经典" - -#: ../java/strings/Strings.java:52 -msgid "dark" -msgstr "暗色调" - -#: ../java/strings/Strings.java:53 -msgid "light" -msgstr "亮色调" - -#: ../java/strings/Strings.java:54 -msgid "midnight" -msgstr "午夜" - -#: ../java/strings/Strings.java:57 -msgid "Bandwidth" -msgstr "带宽" - -#: ../java/strings/Strings.java:58 -msgid "BandwidthLimiter" -msgstr "带宽限制" - -#: ../java/strings/Strings.java:59 -msgid "ClientMessages" -msgstr "客户消息" - -#: ../java/strings/Strings.java:60 -msgid "Encryption" -msgstr "加密" - -#: ../java/strings/Strings.java:61 -msgid "i2cp" -msgstr "" - -#: ../java/strings/Strings.java:62 -msgid "I2PTunnel" -msgstr "I2P隧道" - -#: ../java/strings/Strings.java:63 -msgid "InNetPool" -msgstr "" - -#: ../java/strings/Strings.java:64 -msgid "JobQueue" -msgstr "作业队列" - -#: ../java/strings/Strings.java:65 -msgid "NetworkDatabase" -msgstr "网络数据库" - -#: ../java/strings/Strings.java:66 -msgid "ntcp" -msgstr "NTCP" - -#: ../java/strings/Strings.java:69 -msgid "Stream" -msgstr "流" - -#: ../java/strings/Strings.java:70 -msgid "Throttle" -msgstr "门槛" - -#: ../java/strings/Strings.java:71 -msgid "Transport" -msgstr "传输" - -#: ../java/strings/Strings.java:73 -msgid "udp" -msgstr "UDP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 -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:235 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216 -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:238 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220 -msgid "Enable" -msgstr "启用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 -msgid "I2P Network Configuration" -msgstr "I2P 连网设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 -msgid "Bandwidth limiter" -msgstr "带宽限制" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299 -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 -msgid "KBps In" -msgstr "KBps 入站" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 -msgid "KBps Out" -msgstr "KBps 出站" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 -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 -msgid "NOTE" -msgstr "注意" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 -#, java-format -msgid "You have configured I2P to share only {0} KBps." -msgstr "您设置I2P仅共享 {0} KBps" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 -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 -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 -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 -#, java-format -msgid "You have configured I2P to share {0} KBps." -msgstr "您设置I2P共享 {0} KBps" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353 -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:504 -#: ../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 -msgid "Cancel" -msgstr "取消" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 -msgid "IP and Transport Configuration" -msgstr "IP 与传输设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 -msgid "The default settings will work for most people." -msgstr "默认设置适于大多数人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:367 -msgid "There is help below." -msgstr "页面下方有帮助信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 -msgid "UPnP Configuration" -msgstr "UPnP 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:373 -msgid "Enable UPnP to open firewall ports" -msgstr "启用UPnP以打开防火墙端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 -msgid "UPnP status" -msgstr "UPnP 统计" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 -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:449 -msgid "Externally reachable hostname or IP address" -msgstr "公网可访问的本机域名或IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 -msgid "Use all auto-detect methods" -msgstr "使用全部自动探测方法" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 -msgid "Disable UPnP IP address detection" -msgstr "禁用UPnP IP 地址探测" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 -msgid "Ignore local interface IP address" -msgstr "忽略本地接口的 IP 地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 -msgid "Use SSU IP address detection only" -msgstr "仅使用SSU IP 地址探测" - -#: ../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:467 -msgid "Specify hostname or IP" -msgstr "指定主机名或IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 -msgid "Select Interface" -msgstr "选择网络接口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 -msgid "Hidden mode - do not publish IP" -msgstr "隐身模式 - 不发布IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 -msgid "(prevents participating traffic)" -msgstr "(阻止共享流量)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:423 -msgid "Action when IP changes" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:427 -msgid "" -"Laptop mode - Change router identity and UDP port when IP changes for " -"enhanced anonymity" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 -msgid "Experimental" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 -msgid "UDP Configuration:" -msgstr "UPnP 设置:" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 -msgid "UDP port:" -msgstr "UDP端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:447 -msgid "TCP Configuration" -msgstr "TCP 连接设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 -msgid "Use auto-detected IP address" -msgstr "使用自动检测得到的 IP 地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:487 -msgid "currently" -msgstr "目前" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 -msgid "if we are not firewalled" -msgstr "如果没有受到防火墙阻挡" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 -msgid "Always use auto-detected IP address (Not firewalled)" -msgstr "总是使用自动探测到的IP地址(没有防火墙限制)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 -msgid "Disable inbound (Firewalled)" -msgstr "禁止入站连接(受防火墙限制)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 -msgid "Completely disable" -msgstr "完全禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 -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:481 -msgid "Externally reachable TCP port" -msgstr "公网可访问的TCP端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 -msgid "Use the same port configured for UDP" -msgstr "使用与UDP相同的端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 -msgid "Specify Port" -msgstr "指定端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 -#: ../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 -msgid "Note" -msgstr "注意" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:500 -msgid "Changing these settings will restart your router." -msgstr "修改这些设置将必须重启路由器。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:506 -msgid "Configuration Help" -msgstr "设置帮助" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 -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:510 -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:512 -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(Universal Plug and Play)或借助“SSU中介”进行UDP端口穿" -"透,通过它们也可以中继数据。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 -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:516 -msgid "Certain firewalls such as symmetric NATs may not work well with I2P." -msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525 -msgid "" -"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " -"the external IP address and forward ports." -msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 -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:529 -msgid "No UPnP-compatible device present" -msgstr "没有发现UPnP兼容设备" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:531 -msgid "UPnP disabled on the device" -msgstr "设备上的UPnP支持已禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:533 -msgid "Software firewall interference with UPnP" -msgstr "软件防火墙阻止UPnP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:535 -msgid "Bugs in the device's UPnP implementation" -msgstr "设备的UPnP支持有Bug" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 -msgid "Multiple firewall/routers in the internet connection path" -msgstr "公网连接中存在多个防火墙/路由器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 -msgid "UPnP device change, reset, or address change" -msgstr "UPnP设备改变、重置或地址迁移" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 -msgid "Review the UPnP status here." -msgstr "在这里检查UPnP状态。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 -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:545 -msgid "Hostnames entered above will be published in the network database." -msgstr "上面输入的主机名称将在网络数据库(NetDB)中发布。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 -msgid "They are not private." -msgstr "他们并非私有地址。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 -msgid "" -"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." -msgstr "此外,请勿输入如127.0.0.1或192.168.1.1等私有地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 -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:553 -msgid "When in doubt, leave the settings at the defaults." -msgstr "如果对设置有疑问,请保留默认设置。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 -msgid "Reachability Help" -msgstr "连通性帮助" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560 -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:563 -msgid "" -"If there is an error, the logs may also help " -"diagnose the problem." -msgstr "如果存在错误,日志可以帮助您诊断问题。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 -msgid "Your UDP port does not appear to be firewalled." -msgstr "您的UDP端口似乎一切正常。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 -msgid "Your UDP port appears to be firewalled." -msgstr "您的UDP端口似乎因防火墙而连接受限。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 -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:575 -msgid "" -"However, if it appears consistently, you should check whether both your " -"external and internal firewalls are open for your port." -msgstr "然而,如果总是出现此提示,您应检查外部或内部防火墙是否打开了I2P端口。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 -msgid "" -"I2P will work fine when firewalled, there is no reason for concern. When " -"firewalled, the router uses \"introducers\" to relay inbound connections." -msgstr "" -"即使受到防火墙阻拦,I2P也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通" -"过“中介(Introducers)”中继入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 -msgid "" -"However, you will get more participating traffic and help the network more " -"if you can open your firewall(s)." -msgstr "" -"然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 -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:583 -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:587 -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:591 -msgid "" -"The router is not configured to publish its address, therefore it does not " -"expect incoming connections." -msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 -msgid "WARN - Firewalled and Fast" -msgstr "警告 - 快速节点,因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 -msgid "" -"You have configured I2P to share more than 128KBps of bandwidth, but you are " -"firewalled." -msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 -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 "" -"尽管在此种配置情况下I2P可以正常工作,但如果您的确能够分享超过128kps的带宽,打" -"开防火墙端口它能工作的更好帮助网络中其他的人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 -msgid "WARN - Firewalled and Floodfill" -msgstr "警告 - 种子节点,因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 -msgid "" -"You have configured I2P to be a floodfill router, but you are firewalled." -msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 -msgid "" -"For best participation as a floodfill router, you should open your firewall." -msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" - -# 暂不翻译方便反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 -msgid "WARN - Firewalled with Inbound TCP Enabled" -msgstr "警告 - 入站TCP开启,但因防火墙受限" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 -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:609 -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连接,其他路由器节点将无法与您" -"建立连接,造成网络受阻。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 -msgid "Please open your firewall or disable inbound TCP above." -msgstr "请打开您的防火墙端口或禁用上面的入站TCP连接。" - -# 暂不翻译 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 -msgid "WARN - Firewalled with UDP Disabled" -msgstr "警告 - 因防火墙受限,且UDP被禁用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 -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:617 -msgid "" -"You appear to be firewalled on TCP, therefore your router cannot accept " -"inbound connections." -msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 -msgid "Please open your firewall or enable UDP." -msgstr "请打开防火墙端口或启用UDP。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 -msgid "ERR - Clock Skew" -msgstr "错误 - 系统时滞" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 -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:625 -msgid "Correct your clock setting if this error persists." -msgstr "如果错误持续,请校对您的系统时间。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 -msgid "ERR - Private TCP Address" -msgstr "错误 - 私有TCP地址" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 -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:631 -msgid "Correct the address or disable inbound TCP above." -msgstr "正确设置IP地址或禁用上面的入站TCP连接。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 -msgid "ERR - SymmetricNAT" -msgstr "错误 - SymmetricNAT" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 -msgid "I2P detected that you are firewalled by a Symmetric NAT." -msgstr "I2P检测到您受到Symmetic NAT的阻挡。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 -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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网" -"络。" - -# 暂不翻译,方便问题反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 -msgid "" -"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " -"and restart" -msgstr "" -"错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程" -"序" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 -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:643 -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的端口,如果是,关闭此程序或设置I2P使用不同的" -"端口。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 -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:647 -msgid "However, a restart is always required after this error." -msgstr "然而,发生此错误后一般需要重启程序才能解决。" - -# 暂不翻译,方便错误反馈 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 -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:651 -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:653 -msgid "Therefore your router cannot accept inbound connections." -msgstr "因此您的路由器无法接收入站连接。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 -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:657 -msgid "ERR - Client Manager I2CP Error - check logs" -msgstr "错误 - 客户程序管理器 I2CP 错误 - 请看日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 -msgid "This is usually due to a port 7654 conflict. Check the logs to verify." -msgstr "这通常为7654端口冲突所致,请查看日志确认原因。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 -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 -msgid "config advanced" -msgstr "高级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 -msgid "I2P Advanced Configuration" -msgstr "I2P 高级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 -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 -msgid "Apply" -msgstr "应用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 -msgid "Some changes may require a restart to take effect." -msgstr "某些设置需要程序重启后生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 -msgid "config clients" -msgstr "升级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:241 -msgid "I2P Client Configuration" -msgstr "I2P 客户程序设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:306 -msgid "Client Configuration" -msgstr "客户程序设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:308 -msgid "" -"The Java clients listed below are started by the router and run in the same " -"JVM." -msgstr "下面列出的Java客户端随路由器启动并运行于同一JVM中。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:312 -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 -msgid "All changes require restart to take effect." -msgstr "所有更改均需要程序重启才能生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:323 -msgid "WebApp Configuration" -msgstr "WebApp 设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:325 -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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。" -"这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 " -"i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, " -"i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327 -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 "" -"从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web" -"程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 -msgid "config keyring" -msgstr "钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 -msgid "I2P Keyring Configuration" -msgstr "I2P 钥匙环设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 -msgid "The router keyring is used to decrypt encrypted leaseSets." -msgstr "路由的钥匙环被用来解密和加密赁集." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297 -msgid "" -"The keyring may contain keys for local or remote encrypted destinations." -msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307 -msgid "Manual Keyring Addition" -msgstr "手动添加钥匙环" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 -msgid "Enter keys for encrypted remote destinations here." -msgstr "在此处添加远程加密目标的密钥。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 -msgid "Keys for local destinations must be entered on the" -msgstr "输入本地目标的密钥请到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 -msgid "I2PTunnel page" -msgstr "I2P 隧道页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 -msgid "Dest. name, hash, or full key" -msgstr "目标(Dest.)名称, HASH, 或完整公钥" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 -msgid "Encryption Key" -msgstr "加密密钥" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 -msgid "config logging" -msgstr "日志设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 -msgid "I2P Logging Configuration" -msgstr "I2P 记录设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 -msgid "Configure I2P Logging Options" -msgstr "设置 I2P 记录选项" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 -msgid "Logging filename" -msgstr "日志文件名称" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 -msgid "(the symbol '@' will be replaced during log rotation)" -msgstr "(日志轮转时符号'@'将被替换)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 -msgid "Log record format" -msgstr "日志记录格式" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311 -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 -msgid "Log date format" -msgstr "日志日期格式" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317 -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 -msgid "Max log file size" -msgstr "日志最大体积" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 -msgid "Default log level" -msgstr "默认日志等级" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 -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 -msgid "Log level overrides" -msgstr "等级外
    日志项目" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 -msgid "config peers" -msgstr "节点设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 -msgid "I2P Peer Configuration" -msgstr "I2P 节点设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 -msgid "Manual Peer Controls" -msgstr "手动节点控制" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 -msgid "Router Hash" -msgstr "路由器Key(见NetDB)" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 -msgid "Manually Ban / Unban a Peer" -msgstr "手动封杀/解封某个节点" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312 -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 -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 "" -"评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客" -"户程序通道,高容量节点用于探索隧道。当前评分显示于" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 -msgid "profiles page" -msgstr "节点信息页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 -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 -msgid "Banned Peers" -msgstr "已封锁节点" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 -msgid "Banned IPs" -msgstr "已封锁IP" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 -msgid "config service" -msgstr "服务设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 -msgid "I2P Service Configuration" -msgstr "I2P 服务设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 -msgid "Shutdown the router" -msgstr "关闭路由器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286 -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 -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 -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 -msgid "This is useful in some situations" -msgstr "重启在某些情况下有用" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302 -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 -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 -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 -msgid "Systray integration" -msgstr "使用系统托盘" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 -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 -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 -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 -msgid "Run on startup" -msgstr "启动时运行" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 -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 -msgid "I2P will install (or remove) a service accordingly." -msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 -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 -msgid "" -"If you are running I2P as service right now, removing it will shut down your " -"router immediately." -msgstr "如果您目前已经以服务形式运行 I2P ,删除 I2P 服务将立刻关闭路由器。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346 -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 -msgid "Debugging" -msgstr "调试" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 -msgid "Launch browser on router startup?" -msgstr "路由器启动时运行浏览器?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 -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 "" -"此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要I2P可以在路由启动时调用" -"浏览器打开" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 -msgid "config stats" -msgstr "统计设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 -msgid "I2P Stats Configuration" -msgstr "I2P 统计设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 -msgid "Configure I2P Stat Collection" -msgstr "设置 I2P 统计项" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 -msgid "Enable full stats?" -msgstr "启用完整统计?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 -msgid "change requires restart to take effect" -msgstr "设置需要程序重启后才能生效。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 -msgid "Stat file" -msgstr "统计文件" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 -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 -msgid "toggle all" -msgstr "全部切换" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 -msgid "Log" -msgstr "日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 -msgid "Graph" -msgstr "图表" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 -msgid "Advanced filter" -msgstr "高级过滤器" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 -msgid "config tunnels" -msgstr "隧道设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241 -msgid "I2P Tunnel Configuration" -msgstr "I2P 隧道设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 -msgid "The default settings work for most people." -msgstr "默认设置适于大多数人。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 -msgid "There is a fundamental tradeoff between anonymity and performance." -msgstr "匿名性需要以性能为代价。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312 -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 -msgid "High CPU and/or high outbound bandwidth usage may result." -msgstr "导致高CPU占用和/或高上行流量。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 -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 -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 -msgid "Client tunnel changes are temporary and are not saved." -msgstr "对客户程序隧道的修改是临时的,将不予保存。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 -msgid "To make permanent client tunnel changes see the" -msgstr "要永久性更改客户通道的设置参见" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 -msgid "i2ptunnel page" -msgstr "I2P 隧道页面" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 -msgid "config UI" -msgstr "界面设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 -msgid "I2P UI Configuration" -msgstr "I2P 界面设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 -msgid "Router Console Theme" -msgstr "路由控制台主题" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 -msgid "Theme selection disabled for Internet Explorer, sorry." -msgstr "抱歉,主题功能在InternetExplorer中已禁用。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311 -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的UserAgent;您需要设置浏览器(或过滤" -"式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 -msgid "Router Console Language" -msgstr "路由控制台语言" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319 -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 -msgid "config update" -msgstr "升级设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 -msgid "I2P Update Configuration" -msgstr "I2P 更新设置" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:300 -msgid "Check for I2P and news updates" -msgstr "检查I2P软件及新闻更新" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 -msgid "News & I2P Updates" -msgstr "软件及新闻更新" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:306 -msgid "Update In Progress" -msgstr "更新中" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:314 -msgid "News URL" -msgstr "新闻链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:318 -msgid "Refresh frequency" -msgstr "更新频率" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:322 -msgid "Update policy" -msgstr "升级策略" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 -msgid "Update through the eepProxy?" -msgstr "通过I2P代理更新?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 -msgid "eepProxy host" -msgstr "I2P代理主机" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 -msgid "eepProxy port" -msgstr "I2P代理端口" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 -msgid "Update URLs" -msgstr "更新链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 -msgid "Trusted keys" -msgstr "可信公钥" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 -msgid "Update with unsigned development builds?" -msgstr "更新包括未签名的开发版?" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 -msgid "Unsigned Build URL" -msgstr "未签名软件链接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 -msgid "Save" -msgstr "保存" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 -msgid "Page Not Found" -msgstr "页面未找到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243 -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 -msgid "Error 404" -msgstr "错误 404" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 -msgid "not found" -msgstr "未找到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 -msgid "graphs" -msgstr "图表" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 -msgid "I2P Performance Graphs" -msgstr "I2P 性能图表" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 -msgid "home" -msgstr "主页" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 -msgid "job queue" -msgstr "作业队列" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 -msgid "I2P Router Job Queue" -msgstr "I2P 路由器作业队列" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 -msgid "logs" -msgstr "日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 -msgid "I2P Router Logs" -msgstr "I2P 路由器日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 -msgid "I2P Version & Running Environment" -msgstr "I2P 版本及运行环境" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 -msgid "Please include this information in bug reports" -msgstr "报告问题时请包括以下信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:267 -msgid "Critical Logs" -msgstr "关键日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:271 -msgid "Router Logs" -msgstr "路由器日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:277 -msgid "Service (Wrapper) Logs" -msgstr "服务(封装)日志" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 -msgid "network database summary" -msgstr "I2P 网络数据库概况" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 -msgid "I2P Network Database Summary" -msgstr "I2P 网络数据库概况" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 -msgid "WebApp Not Found" -msgstr "Web程序(war)未找到" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 -msgid "Web Application Not Running" -msgstr "Web程序(.war)未运行" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 -msgid "The requested web application is not running." -msgstr "您所访问的Web程序未启动。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 -msgid "" -"Please visit the config clients page to start it." -msgstr "" -"请先在配置客户端页面中启动它。" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 -msgid "peer connections" -msgstr "节点连接" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 -msgid "I2P Network Peers" -msgstr "I2P 网络节点" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 -msgid "peer profiles" -msgstr "节点信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 -msgid "I2P Network Peer Profiles" -msgstr "I2P 网络节点信息" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 -msgid "statistics" -msgstr "统计" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242 -msgid "I2P Router Statistics" -msgstr "I2P 路由器统计数据" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 -#, java-format -msgid "Disable {0}s Refresh" -msgstr "停止 {0}秒 刷新" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 -msgid "tunnel summary" -msgstr "隧道概况" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 -msgid "I2P Tunnel Summary" -msgstr "I2P 隧道概况" - -#~ msgid "skew" -#~ msgstr "时滞" - -#~ msgid "Expl. + Client" -#~ msgstr "探测+客户" - -#~ msgid "Part. from + to" -#~ msgstr "相邻共享节点" - -#~ msgid "Depth" -#~ msgstr "深度" - -#~ msgid "Addresses" -#~ msgstr "地址" - -#~ msgid "view without" -#~ msgstr "查看不含" - -#~ msgid "view with" -#~ msgstr "查看含" - -#~ msgid "stats" -#~ msgstr "统计" - -#~ msgid "View" -#~ msgstr "查看" - -#~ msgid "Not Failing" -#~ msgstr "标准" - -#~ msgid "" -#~ "If you want the router to restart itself after shutting down, you can " -#~ "choose one of the following. This is useful in some situations - 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. A graceful restart will take a few minutes (but your peers " -#~ "will appreciate your patience), while a hard restart does so " -#~ "immediately. After tearing down the router, it will wait 1 minute before " -#~ "starting back up again." -#~ msgstr "" -#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " -#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" -#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" -#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" - -#~ msgid "" -#~ "On the windows platform, there is a small application to sit in the " -#~ "system tray, allowing you to view the router's status (later on, I2P " -#~ "client applications will be able to integrate their own functionality " -#~ "into the system tray as well). If you are on windows, you can either " -#~ "enable or disable that icon here." -#~ msgstr "" -#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" -#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" -#~ "或关闭这个托盘图标。" +# 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: 2010-01-29 07:17+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: walking \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: Chinese\n" +"X-Poedit-Country: CHINA\n" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:117 +#, java-format +msgid "Banned by router hash: {0}" +msgstr "按路由器指纹封杀:{0}" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:119 +msgid "Banned by router hash" +msgstr "路由指纹封锁" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:664 +msgid "IP banned" +msgstr "IP封锁" + +#: ../../../router/java/src/net/i2p/router/Blocklist.java:734 +#, java-format +msgid "IP banned by blocklist.txt entry {0}" +msgstr "按IP黑名单blocklist.txt封杀的节点{0}" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:91 +msgid "Rejecting tunnels: Shutting down" +msgstr "拒绝共享:准备退出" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:140 +msgid "Rejecting tunnels: High message delay" +msgstr "拒绝共享:高消息延迟" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:176 +msgid "Rejecting most tunnels: High number of requests" +msgstr "收紧共享:高请求量" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:232 +msgid "Rejecting tunnels: Limit reached" +msgstr "拒绝共享:隧道数限额" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:300 +msgid "Rejecting tunnels: Bandwidth limit" +msgstr "拒绝共享:带宽限额" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:370 +msgid "Rejecting most tunnels: Bandwidth limit" +msgstr "收紧共享:带宽限额" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:374 +msgid "Accepting most tunnels" +msgstr "接收多数隧道" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:376 +msgid "Accepting tunnels" +msgstr "接收共享隧道" + +#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:486 +msgid "Rejecting tunnels" +msgstr "拒绝参与共享隧道" + +#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 +msgid "No transports (hidden or starting up?)" +msgstr "无数据传输(隐身或正在启动)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450 +msgid "Unreachable on any transport" +msgstr "各传输方式均不可达" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:380 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:594 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "严重时滞:{0}" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:137 +msgid "Dropping tunnel requests: Too slow" +msgstr "忽略共享请求:速度太慢" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:354 +msgid "Dropping tunnel requests: Overloaded" +msgstr "忽略共享请求:路由过载" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:521 +msgid "Rejecting tunnels: Request overload" +msgstr "拒绝共享:请求过多" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:546 +msgid "Rejecting tunnels: Connection limit" +msgstr "拒绝共享:连接受限" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:748 +msgid "Dropping tunnel requests: High load" +msgstr "忽略共享请求:高负载" + +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:757 +msgid "Dropping tunnel requests: Queue time" +msgstr "忽略共享请求:队列积压" + +#: ../java/build/Countries.java:3 +msgid "Andorra" +msgstr "安道尔" + +#: ../java/build/Countries.java:4 +msgid "United Arab Emirates" +msgstr "阿联酋" + +#: ../java/build/Countries.java:5 +msgid "Afghanistan" +msgstr "阿富汗" + +#: ../java/build/Countries.java:6 +msgid "Antigua and Barbuda" +msgstr "安提瓜与巴布达" + +#: ../java/build/Countries.java:7 +msgid "Anguilla" +msgstr "安格拉" + +#: ../java/build/Countries.java:8 +msgid "Albania" +msgstr "阿尔巴尼亚" + +#: ../java/build/Countries.java:9 +msgid "Armenia" +msgstr "亚美尼亚" + +#: ../java/build/Countries.java:10 +msgid "Netherlands Antilles" +msgstr "荷兰属地" + +#: ../java/build/Countries.java:11 +msgid "Angola" +msgstr "安哥拉" + +#: ../java/build/Countries.java:12 +msgid "Antarctica" +msgstr "南极洲" + +#: ../java/build/Countries.java:13 +msgid "Argentina" +msgstr "阿根廷" + +#: ../java/build/Countries.java:14 +msgid "American Samoa" +msgstr "东萨摩亚" + +#: ../java/build/Countries.java:15 +msgid "Austria" +msgstr "奥地利" + +#: ../java/build/Countries.java:16 +msgid "Australia" +msgstr "澳大利亚" + +#: ../java/build/Countries.java:17 +msgid "Aruba" +msgstr "阿鲁巴" + +#: ../java/build/Countries.java:19 +msgid "Azerbaijan" +msgstr "阿塞拜疆" + +#: ../java/build/Countries.java:20 +msgid "Bosnia and Herzegovina" +msgstr "波黑" + +#: ../java/build/Countries.java:21 +msgid "Barbados" +msgstr "巴巴多斯" + +#: ../java/build/Countries.java:22 +msgid "Bangladesh" +msgstr "孟加拉" + +#: ../java/build/Countries.java:23 +msgid "Belgium" +msgstr "比利时" + +#: ../java/build/Countries.java:24 +msgid "Burkina Faso" +msgstr "布基纳法索" + +#: ../java/build/Countries.java:25 +msgid "Bulgaria" +msgstr "保加利亚" + +#: ../java/build/Countries.java:26 +msgid "Bahrain" +msgstr "巴林" + +#: ../java/build/Countries.java:27 +msgid "Burundi" +msgstr "不丹" + +#: ../java/build/Countries.java:28 +msgid "Benin" +msgstr "贝宁" + +#: ../java/build/Countries.java:29 +msgid "Bermuda" +msgstr "百慕大" + +#: ../java/build/Countries.java:30 +msgid "Brunei Darussalam" +msgstr "文莱达鲁萨兰" + +#: ../java/build/Countries.java:31 +msgid "Bolivia" +msgstr "玻利维亚" + +#: ../java/build/Countries.java:32 +msgid "Brazil" +msgstr "巴西" + +#: ../java/build/Countries.java:33 +msgid "Bahamas" +msgstr "巴哈马" + +#: ../java/build/Countries.java:34 +msgid "Bhutan" +msgstr "不丹" + +#: ../java/build/Countries.java:35 +msgid "Bouvet Island" +msgstr "布韦群岛" + +#: ../java/build/Countries.java:36 +msgid "Botswana" +msgstr "伯兹瓦纳" + +#: ../java/build/Countries.java:37 +msgid "Belarus" +msgstr "白俄罗斯" + +#: ../java/build/Countries.java:38 +msgid "Belize" +msgstr "伯利兹" + +#: ../java/build/Countries.java:39 +msgid "Canada" +msgstr "加拿大" + +#: ../java/build/Countries.java:40 +msgid "The Democratic Republic of the Congo" +msgstr "刚果" + +#: ../java/build/Countries.java:41 +msgid "Central African Republic" +msgstr "中非" + +#: ../java/build/Countries.java:42 +msgid "Congo" +msgstr "Congo" + +#: ../java/build/Countries.java:43 +msgid "Switzerland" +msgstr "瑞士" + +#: ../java/build/Countries.java:44 +msgid "Cote D'Ivoire" +msgstr "象牙海岸" + +#: ../java/build/Countries.java:45 +msgid "Cook Islands" +msgstr "库克群岛" + +#: ../java/build/Countries.java:46 +msgid "Chile" +msgstr "智利" + +#: ../java/build/Countries.java:47 +msgid "Cameroon" +msgstr "喀麦隆" + +#: ../java/build/Countries.java:48 +msgid "China" +msgstr "中国" + +#: ../java/build/Countries.java:49 +msgid "Colombia" +msgstr "哥伦比亚" + +#: ../java/build/Countries.java:50 +msgid "Costa Rica" +msgstr "哥斯达黎加" + +#: ../java/build/Countries.java:51 +msgid "Serbia and Montenegro" +msgstr "塞尔维亚与黑山" + +#: ../java/build/Countries.java:52 +msgid "Cuba" +msgstr "古巴" + +#: ../java/build/Countries.java:53 +msgid "Cape Verde" +msgstr "佛得角" + +#: ../java/build/Countries.java:54 +msgid "Cyprus" +msgstr "塞浦路斯" + +#: ../java/build/Countries.java:55 +msgid "Czech Republic" +msgstr "捷克" + +#: ../java/build/Countries.java:56 +msgid "Germany" +msgstr "德国" + +#: ../java/build/Countries.java:57 +msgid "Djibouti" +msgstr "吉布提" + +#: ../java/build/Countries.java:58 +msgid "Denmark" +msgstr "丹麦" + +#: ../java/build/Countries.java:59 +msgid "Dominica" +msgstr "多米尼" + +#: ../java/build/Countries.java:60 +msgid "Dominican Republic" +msgstr "多米尼加联邦" + +#: ../java/build/Countries.java:61 +msgid "Algeria" +msgstr "阿尔及利亚" + +#: ../java/build/Countries.java:62 +msgid "Ecuador" +msgstr "厄瓜多尔" + +#: ../java/build/Countries.java:63 +msgid "Estonia" +msgstr "爱沙尼亚" + +#: ../java/build/Countries.java:64 +msgid "Egypt" +msgstr "埃及" + +#: ../java/build/Countries.java:65 +msgid "Eritrea" +msgstr "厄立特里亚" + +#: ../java/build/Countries.java:66 +msgid "Spain" +msgstr "西班牙" + +#: ../java/build/Countries.java:67 +msgid "Ethiopia" +msgstr "埃塞俄比亚" + +#: ../java/build/Countries.java:68 +msgid "Finland" +msgstr "芬兰" + +#: ../java/build/Countries.java:69 +msgid "Fiji" +msgstr "斐济" + +#: ../java/build/Countries.java:70 +msgid "Falkland Islands (Malvinas)" +msgstr "福克兰群岛" + +#: ../java/build/Countries.java:71 +msgid "Federated States of Micronesia" +msgstr "密克罗尼西亚" + +#: ../java/build/Countries.java:72 +msgid "Faroe Islands" +msgstr "法罗群岛" + +#: ../java/build/Countries.java:73 +msgid "France" +msgstr "法国" + +#: ../java/build/Countries.java:74 +msgid "Gabon" +msgstr "加蓬" + +#: ../java/build/Countries.java:75 +msgid "United Kingdom" +msgstr "英国" + +#: ../java/build/Countries.java:76 +msgid "Grenada" +msgstr "格林纳达" + +#: ../java/build/Countries.java:77 +msgid "Georgia" +msgstr "格鲁吉亚" + +#: ../java/build/Countries.java:78 +msgid "French Guiana" +msgstr "圭亚那" + +#: ../java/build/Countries.java:79 +msgid "Ghana" +msgstr "加纳" + +#: ../java/build/Countries.java:80 +msgid "Gibraltar" +msgstr "直布罗陀" + +#: ../java/build/Countries.java:81 +msgid "Greenland" +msgstr "格陵兰群岛" + +#: ../java/build/Countries.java:82 +msgid "Gambia" +msgstr "冈比亚" + +#: ../java/build/Countries.java:83 +msgid "Guinea" +msgstr "几内亚" + +#: ../java/build/Countries.java:84 +msgid "Guadeloupe" +msgstr "瓜德罗普岛" + +#: ../java/build/Countries.java:85 +msgid "Equatorial Guinea" +msgstr "赤道几内亚" + +#: ../java/build/Countries.java:86 +msgid "Greece" +msgstr "希腊" + +#: ../java/build/Countries.java:87 +msgid "South Georgia and the South Sandwich Islands" +msgstr "南乔治亚岛和南桑德韦奇岛" + +#: ../java/build/Countries.java:88 +msgid "Guatemala" +msgstr "危地马拉" + +#: ../java/build/Countries.java:89 +msgid "Guam" +msgstr "关岛" + +#: ../java/build/Countries.java:90 +msgid "Guinea-Bissau" +msgstr "几内亚比绍" + +#: ../java/build/Countries.java:91 +msgid "Guyana" +msgstr "圭亚那" + +#: ../java/build/Countries.java:92 +msgid "Hong Kong" +msgstr "香港" + +#: ../java/build/Countries.java:93 +msgid "Honduras" +msgstr "洪都拉斯" + +#: ../java/build/Countries.java:94 +msgid "Croatia" +msgstr "克罗蒂亚" + +#: ../java/build/Countries.java:95 +msgid "Haiti" +msgstr "海地" + +#: ../java/build/Countries.java:96 +msgid "Hungary" +msgstr "匈牙利" + +#: ../java/build/Countries.java:97 +msgid "Indonesia" +msgstr "印尼" + +#: ../java/build/Countries.java:98 +msgid "Ireland" +msgstr "爱尔兰" + +#: ../java/build/Countries.java:99 +msgid "Israel" +msgstr "以色列" + +#: ../java/build/Countries.java:101 +msgid "India" +msgstr "印度" + +#: ../java/build/Countries.java:102 +msgid "British Indian Ocean Territory" +msgstr "英属印度洋地区" + +#: ../java/build/Countries.java:103 +msgid "Iraq" +msgstr "伊拉克" + +#: ../java/build/Countries.java:104 +msgid "Islamic Republic of Iran" +msgstr "伊朗" + +#: ../java/build/Countries.java:105 +msgid "Iceland" +msgstr "冰岛" + +#: ../java/build/Countries.java:106 +msgid "Italy" +msgstr "意大利" + +#: ../java/build/Countries.java:108 +msgid "Jamaica" +msgstr "牙买加" + +#: ../java/build/Countries.java:109 +msgid "Jordan" +msgstr "约旦" + +#: ../java/build/Countries.java:110 +msgid "Japan" +msgstr "日本" + +#: ../java/build/Countries.java:111 +msgid "Kenya" +msgstr "肯尼亚" + +#: ../java/build/Countries.java:112 +msgid "Kyrgyzstan" +msgstr "吉尔吉斯斯坦" + +#: ../java/build/Countries.java:113 +msgid "Cambodia" +msgstr "柬埔塞" + +#: ../java/build/Countries.java:114 +msgid "Kiribati" +msgstr "基里巴斯" + +#: ../java/build/Countries.java:115 +msgid "Comoros" +msgstr "科摩罗" + +#: ../java/build/Countries.java:116 +msgid "Saint Kitts and Nevis" +msgstr "圣克里斯多福与尼维斯" + +#: ../java/build/Countries.java:117 +msgid "Republic of Korea" +msgstr "韩国" + +#: ../java/build/Countries.java:118 +msgid "Kuwait" +msgstr "科威特" + +#: ../java/build/Countries.java:119 +msgid "Cayman Islands" +msgstr "开曼群岛" + +#: ../java/build/Countries.java:120 +msgid "Kazakhstan" +msgstr "哈萨克斯坦" + +#: ../java/build/Countries.java:121 +msgid "Lao People's Democratic Republic" +msgstr "老挝" + +#: ../java/build/Countries.java:122 +msgid "Lebanon" +msgstr "黎巴嫩" + +#: ../java/build/Countries.java:123 +msgid "Saint Lucia" +msgstr "圣露西亚岛" + +#: ../java/build/Countries.java:124 +msgid "Liechtenstein" +msgstr "列支敦士登" + +#: ../java/build/Countries.java:125 +msgid "Sri Lanka" +msgstr "斯里兰卡" + +#: ../java/build/Countries.java:126 +msgid "Liberia" +msgstr "利比里亚" + +#: ../java/build/Countries.java:127 +msgid "Lesotho" +msgstr "莱索托" + +#: ../java/build/Countries.java:128 +msgid "Lithuania" +msgstr "立陶宛" + +#: ../java/build/Countries.java:129 +msgid "Luxembourg" +msgstr "卢森堡" + +#: ../java/build/Countries.java:130 +msgid "Latvia" +msgstr "拉脱维亚" + +#: ../java/build/Countries.java:131 +msgid "Libyan Arab Jamahiriya" +msgstr "利比亚" + +#: ../java/build/Countries.java:132 +msgid "Morocco" +msgstr "摩洛哥" + +#: ../java/build/Countries.java:133 +msgid "Monaco" +msgstr "摩纳哥" + +#: ../java/build/Countries.java:134 +msgid "Republic of Moldova" +msgstr "摩尔多瓦" + +#: ../java/build/Countries.java:137 +msgid "Madagascar" +msgstr "马达加斯加" + +#: ../java/build/Countries.java:138 +msgid "Marshall Islands" +msgstr "马绍尔群岛" + +#: ../java/build/Countries.java:139 +msgid "The Former Yugoslav Republic of Macedonia" +msgstr "前南斯拉夫之马其顿共和国" + +#: ../java/build/Countries.java:140 +msgid "Mali" +msgstr "马里" + +#: ../java/build/Countries.java:141 +msgid "Myanmar" +msgstr "缅甸" + +#: ../java/build/Countries.java:142 +msgid "Mongolia" +msgstr "蒙古" + +#: ../java/build/Countries.java:143 +msgid "Macao" +msgstr "澳门" + +#: ../java/build/Countries.java:144 +msgid "Northern Mariana Islands" +msgstr "北马里亚纳群岛" + +#: ../java/build/Countries.java:145 +msgid "Martinique" +msgstr "马提尼克岛" + +#: ../java/build/Countries.java:146 +msgid "Mauritania" +msgstr "毛里塔尼亚" + +#: ../java/build/Countries.java:147 +msgid "Montserrat" +msgstr "蒙特塞拉特" + +#: ../java/build/Countries.java:148 +msgid "Malta" +msgstr "马尔他" + +#: ../java/build/Countries.java:149 +msgid "Mauritius" +msgstr "毛里求斯" + +#: ../java/build/Countries.java:150 +msgid "Maldives" +msgstr "马尔代夫" + +#: ../java/build/Countries.java:151 +msgid "Malawi" +msgstr "马拉维" + +#: ../java/build/Countries.java:152 +msgid "Mexico" +msgstr "墨西哥" + +#: ../java/build/Countries.java:153 +msgid "Malaysia" +msgstr "马来西亚" + +#: ../java/build/Countries.java:154 +msgid "Mozambique" +msgstr "莫桑比克" + +#: ../java/build/Countries.java:155 +msgid "Namibia" +msgstr "纳米比亚" + +#: ../java/build/Countries.java:156 +msgid "New Caledonia" +msgstr "新喀里多尼亚" + +#: ../java/build/Countries.java:157 +msgid "Niger" +msgstr "尼日尔" + +#: ../java/build/Countries.java:158 +msgid "Norfolk Island" +msgstr "尼加拉瓜" + +#: ../java/build/Countries.java:159 +msgid "Nigeria" +msgstr "尼日利亚" + +#: ../java/build/Countries.java:160 +msgid "Nicaragua" +msgstr "尼加拉瓜" + +#: ../java/build/Countries.java:161 +msgid "Netherlands" +msgstr "荷兰" + +#: ../java/build/Countries.java:162 +msgid "Norway" +msgstr "挪威" + +#: ../java/build/Countries.java:163 +msgid "Nepal" +msgstr "尼泊尔" + +#: ../java/build/Countries.java:164 +msgid "Nauru" +msgstr "瑙鲁" + +#: ../java/build/Countries.java:165 +msgid "Niue" +msgstr "纽埃岛" + +#: ../java/build/Countries.java:166 +msgid "New Zealand" +msgstr "新西兰" + +#: ../java/build/Countries.java:167 +msgid "Oman" +msgstr "阿曼" + +#: ../java/build/Countries.java:168 +msgid "Panama" +msgstr "巴拿马" + +#: ../java/build/Countries.java:169 +msgid "Peru" +msgstr "秘鲁" + +#: ../java/build/Countries.java:170 +msgid "French Polynesia" +msgstr "玻利尼西亚" + +#: ../java/build/Countries.java:171 +msgid "Papua New Guinea" +msgstr "巴布亚新几内亚" + +#: ../java/build/Countries.java:172 +msgid "Philippines" +msgstr "菲律宾" + +#: ../java/build/Countries.java:173 +msgid "Pakistan" +msgstr "巴基斯坦" + +#: ../java/build/Countries.java:174 +msgid "Poland" +msgstr "波兰" + +#: ../java/build/Countries.java:175 +msgid "Saint Pierre and Miquelon" +msgstr "圣皮埃尔岛和密克隆" + +#: ../java/build/Countries.java:176 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: ../java/build/Countries.java:177 +msgid "Palestinian Territory" +msgstr "巴勒斯坦地区" + +#: ../java/build/Countries.java:178 +msgid "Portugal" +msgstr "葡萄牙" + +#: ../java/build/Countries.java:179 +msgid "Palau" +msgstr "帕劳" + +#: ../java/build/Countries.java:180 +msgid "Paraguay" +msgstr "巴拉圭" + +#: ../java/build/Countries.java:181 +msgid "Qatar" +msgstr "卡塔尔" + +#: ../java/build/Countries.java:182 +msgid "Reunion" +msgstr "留尼汪岛" + +#: ../java/build/Countries.java:183 +msgid "Romania" +msgstr "罗马尼亚" + +#: ../java/build/Countries.java:184 +msgid "Serbia" +msgstr "塞尔维亚" + +#: ../java/build/Countries.java:185 +msgid "Russian Federation" +msgstr "俄联邦" + +#: ../java/build/Countries.java:186 +msgid "Rwanda" +msgstr "卢旺达" + +#: ../java/build/Countries.java:187 +msgid "Saudi Arabia" +msgstr "沙特阿拉伯" + +#: ../java/build/Countries.java:188 +msgid "Solomon Islands" +msgstr "所罗门群岛" + +#: ../java/build/Countries.java:189 +msgid "Seychelles" +msgstr "塞舌尔" + +#: ../java/build/Countries.java:190 +msgid "Sudan" +msgstr "苏丹" + +#: ../java/build/Countries.java:191 +msgid "Sweden" +msgstr "瑞典" + +#: ../java/build/Countries.java:192 +msgid "Singapore" +msgstr "新加坡" + +#: ../java/build/Countries.java:193 +msgid "Slovenia" +msgstr "斯洛文尼亚" + +#: ../java/build/Countries.java:194 +msgid "Slovakia" +msgstr "斯洛伐克" + +#: ../java/build/Countries.java:195 +msgid "Sierra Leone" +msgstr "塞拉利昂" + +#: ../java/build/Countries.java:196 +msgid "San Marino" +msgstr "圣马力诺" + +#: ../java/build/Countries.java:197 +msgid "Senegal" +msgstr "塞内加尔" + +#: ../java/build/Countries.java:198 +msgid "Somalia" +msgstr "索马里" + +#: ../java/build/Countries.java:199 +msgid "Suriname" +msgstr "苏里南" + +#: ../java/build/Countries.java:200 +msgid "Sao Tome and Principe" +msgstr "圣多美与普林西比共和国" + +#: ../java/build/Countries.java:201 +msgid "El Salvador" +msgstr "萨尔瓦多" + +#: ../java/build/Countries.java:202 +msgid "Syrian Arab Republic" +msgstr "叙利亚" + +#: ../java/build/Countries.java:203 +msgid "Swaziland" +msgstr "斯威士兰" + +#: ../java/build/Countries.java:204 +msgid "Turks and Caicos Islands" +msgstr "特克斯和凯科斯群岛" + +#: ../java/build/Countries.java:205 +msgid "Chad" +msgstr "乍得" + +#: ../java/build/Countries.java:206 +msgid "French Southern Territories" +msgstr "法属南半球领地" + +#: ../java/build/Countries.java:207 +msgid "Togo" +msgstr "多哥" + +#: ../java/build/Countries.java:208 +msgid "Thailand" +msgstr "泰国" + +#: ../java/build/Countries.java:209 +msgid "Tajikistan" +msgstr "塔吉克斯坦" + +#: ../java/build/Countries.java:210 +msgid "Tokelau" +msgstr "托克劳群岛" + +#: ../java/build/Countries.java:211 +msgid "Timor-Leste" +msgstr "东帝汶" + +#: ../java/build/Countries.java:212 +msgid "Turkmenistan" +msgstr "土库曼斯坦" + +#: ../java/build/Countries.java:213 +msgid "Tunisia" +msgstr "突尼斯" + +#: ../java/build/Countries.java:214 +msgid "Tonga" +msgstr "汤加" + +#: ../java/build/Countries.java:215 +msgid "Turkey" +msgstr "土耳其" + +#: ../java/build/Countries.java:216 +msgid "Trinidad and Tobago" +msgstr "特立尼达和多巴哥" + +#: ../java/build/Countries.java:217 +msgid "Tuvalu" +msgstr "图瓦鲁" + +#: ../java/build/Countries.java:218 +msgid "Taiwan" +msgstr "台湾" + +#: ../java/build/Countries.java:219 +msgid "United Republic of Tanzania" +msgstr "坦桑尼亚" + +#: ../java/build/Countries.java:220 +msgid "Ukraine" +msgstr "乌克兰" + +#: ../java/build/Countries.java:221 +msgid "Uganda" +msgstr "乌干达" + +#: ../java/build/Countries.java:222 +msgid "United States Minor Outlying Islands" +msgstr "美国本土外小岛屿" + +#: ../java/build/Countries.java:223 +msgid "United States" +msgstr "美国" + +#: ../java/build/Countries.java:224 +msgid "Uruguay" +msgstr "乌拉圭" + +#: ../java/build/Countries.java:225 +msgid "Uzbekistan" +msgstr "乌兹别克斯坦" + +#: ../java/build/Countries.java:226 +msgid "Holy See (Vatican City State)" +msgstr "梵地冈" + +#: ../java/build/Countries.java:227 +msgid "Saint Vincent and the Grenadines" +msgstr "圣文森特和格林纳丁斯" + +#: ../java/build/Countries.java:228 +msgid "Venezuela" +msgstr "委内瑞拉" + +#: ../java/build/Countries.java:229 +#: ../java/build/Countries.java:230 +msgid "Virgin Islands" +msgstr "维京群岛" + +#: ../java/build/Countries.java:231 +msgid "Viet Nam" +msgstr "越南" + +#: ../java/build/Countries.java:232 +msgid "Vanuatu" +msgstr "瓦努阿图" + +#: ../java/build/Countries.java:233 +msgid "Wallis and Futuna" +msgstr "瓦利斯群岛和富图纳群岛" + +#: ../java/build/Countries.java:234 +msgid "Samoa" +msgstr "东萨摩亚" + +#: ../java/build/Countries.java:235 +msgid "Yemen" +msgstr "也门" + +#: ../java/build/Countries.java:236 +msgid "Mayotte" +msgstr "马约特" + +#: ../java/build/Countries.java:237 +msgid "South Africa" +msgstr "南非" + +#: ../java/build/Countries.java:238 +msgid "Zambia" +msgstr "赞比亚" + +#: ../java/build/Countries.java:239 +msgid "Zimbabwe" +msgstr "津巴布韦" + +#: ../java/src/net/i2p/router/web/CSSHelper.java:54 +#: ../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 +msgid "I2P Router Console" +msgstr "I2P 路由控制台" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57 +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:263 +msgid "Configuration saved successfully" +msgstr "设置保存成功" + +#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:265 +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:332 +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:344 +msgid "Save WebApp Configuration" +msgstr "保存 WebApp 设置" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:66 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97 +msgid "Start" +msgstr "启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:80 +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49 +msgid "Unsupported" +msgstr "未支持的" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:94 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:110 +msgid "desc" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:105 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:120 +msgid "name" +msgstr "名称" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:125 +msgid "New client added" +msgstr "新客户端添加完毕" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:129 +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "客户程序设置保存成功 - 程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:154 +msgid "Bad client index." +msgstr "客户程序索引无效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:159 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:384 +msgid "Client" +msgstr "客户" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:148 +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:194 +msgid "started" +msgstr "已启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:159 +msgid "deleted" +msgstr "已删除" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:176 +msgid "WebApp configuration saved successfully - restart required to take effect." +msgstr "WebApp设置保存成功 - 程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:194 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 +msgid "WebApp" +msgstr "Web程序" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:196 +msgid "Failed to start" +msgstr "启动失败" + +#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202 +msgid "Failed to find server." +msgstr "服务器或服务程序查找失败。" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:19 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:100 +msgid "Edit" +msgstr "编辑" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:28 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:328 +msgid "Add Client" +msgstr "添加客户端" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +msgid "Class and arguments" +msgstr "类与参数" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 +msgid "Run at Startup?" +msgstr "启动时运行?" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:36 +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 +msgid "Start Now" +msgstr "立即启动" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:55 +msgid "Description" +msgstr "描述" + +#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:101 +msgid "Delete" +msgstr "删除" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320 +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 +msgid "Delete key" +msgstr "删除密钥" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21 +msgid "You must enter a destination" +msgstr "您必须输入一个目标" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23 +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 +msgid "Key for" +msgstr "密钥" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34 +msgid "added to keyring" +msgstr "已加入钥匙环" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36 +msgid "Invalid destination or key" +msgstr "目标或密钥无效" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41 +msgid "removed from keyring" +msgstr "已从钥匙环中删除" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43 +msgid "not found in keyring" +msgstr "在钥匙环未找到" + +#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45 +msgid "Invalid destination" +msgstr "目标无效" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:46 +msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:47 +msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48 +msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +msgid "CRIT" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +msgid "DEBUG" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +msgid "ERROR" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +msgid "INFO" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52 +msgid "WARN" +msgstr "" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +msgid "Network" +msgstr "网络" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +msgid "Service" +msgstr "服务" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:86 +#: ../java/strings/Strings.java:72 +msgid "Tunnels" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +msgid "UI" +msgstr "界面" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216 +msgid "Update" +msgstr "更新" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +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 +msgid "Keyring" +msgstr "钥匙环" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +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:234 +#: ../java/strings/Strings.java:67 +msgid "Peers" +msgstr "节点" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:294 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:128 +msgid "Stats" +msgstr "统计" + +#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20 +msgid "Advanced" +msgstr "高级" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:261 +#: ../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:502 +#: ../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 +msgid "Save changes" +msgstr "保存修改" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121 +msgid "Rechecking router reachability..." +msgstr "正在重检查路由连通性..." + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:150 +msgid "Updating IP address" +msgstr "正在更新IP地址" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:168 +msgid "Disabling TCP completely" +msgstr "正在彻底禁用TCP" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:172 +msgid "Updating inbound TCP address to" +msgstr "正在更新进站TCP地址至" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 +msgid "Disabling inbound TCP" +msgstr "正在禁用入站TCP" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:178 +msgid "Updating inbound TCP address to auto" +msgstr "正在更新入站TCP地址至" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:187 +msgid "Updating inbound TCP port to" +msgstr "正在更新入站TCP端口至" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 +msgid "Updating inbound TCP port to auto" +msgstr "正在更新入站TCP端口至" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 +msgid "Updating UDP port from" +msgstr "正在更新UDP端口由" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 +msgid "to" +msgstr "至" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:218 +msgid "Gracefully restarting into Hidden Router Mode" +msgstr "正在平滑重启路由进入隐身模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:220 +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "正在平滑重启路由退出隐身模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:229 +msgid "Enabling UPnP, restart required to take effect" +msgstr "正在启用UPnP,程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 +msgid "Disabling UPnP, restart required to take effect" +msgstr "正在禁用UPnP,程序重启后生效" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:239 +msgid "Enabling laptop mode" +msgstr "正在启用笔记本模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:241 +msgid "Disabling laptop mode" +msgstr "正在禁用笔记本模式" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +msgid "Requiring SSU introducers" +msgstr "正在获取SSU中介" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:288 +msgid "Gracefully restarting I2P to change published router address" +msgstr "正在平滑重启路由重新发布路由地址" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:308 +msgid "Updating bandwidth share percentage" +msgstr "正在更新共享带宽比例" + +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:378 +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 +msgid "unknown" +msgstr "未知" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 +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 +msgid "Ban peer until restart" +msgstr "封杀节点直到重启" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23 +#, 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 +msgid "Peer" +msgstr "节点" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 +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 +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 +msgid "Unban peer" +msgstr "节点解封" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 +msgid "unbanned" +msgstr "已解封" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 +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 +msgid "Adjust Profile Bonuses" +msgstr "调整节点评分" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47 +msgid "Bad speed value" +msgstr "速度值无效" + +#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52 +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 +msgid "Shutdown immediately" +msgstr "立刻关闭" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 +msgid "Cancel shutdown" +msgstr "取消关闭" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37 +msgid "Cancel restart" +msgstr "取消重启" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39 +msgid "Restart immediately" +msgstr "立刻重启" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 +msgid "Restart" +msgstr "重 启" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46 +msgid "Shutdown" +msgstr "关 闭" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59 +msgid "Restart imminent" +msgstr "立刻重启" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61 +msgid "Shutdown imminent" +msgstr "立刻关闭" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65 +#, java-format +msgid "Shutdown in {0}" +msgstr "{0} 后退出" + +#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70 +#, 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 +msgid "Shutdown gracefully" +msgstr "平滑关闭" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56 +msgid "Graceful shutdown initiated" +msgstr "开始平滑关闭" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60 +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 +msgid "Cancel graceful shutdown" +msgstr "取消平滑关闭" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63 +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:306 +msgid "Graceful restart" +msgstr "平滑重启" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67 +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:308 +msgid "Hard restart" +msgstr "硬重启" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71 +msgid "Hard restart requested" +msgstr "硬重启已请求" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72 +msgid "Rekey and Restart" +msgstr "更换密钥并重启" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73 +msgid "Rekeying after graceful restart" +msgstr "平滑重启后更换密钥" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76 +msgid "Rekey and Shutdown" +msgstr "更换密钥并关闭" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77 +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:334 +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:336 +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:354 +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:322 +msgid "Show systray icon" +msgstr "显示托盘图标" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "System tray icon enabled." +msgstr "系统托盘图标已启用" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:98 +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:110 +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 +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:324 +msgid "Hide systray icon" +msgstr "隐藏系统图标" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108 +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:362 +msgid "View console on startup" +msgstr "程序启动时显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117 +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:364 +msgid "Do not view console on startup" +msgstr "启动后不打开控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120 +msgid "Console is not to be shown on startup" +msgstr "启动后不显示控制台" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129 +msgid "Service installed" +msgstr "服务已安装" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131 +msgid "Warning: unable to install the service" +msgstr "警告:无法安装服务" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137 +msgid "Service removed" +msgstr "服务已卸载" + +#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139 +msgid "Warning: unable to remove the service" +msgstr "警告:无法卸载服务" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118 +msgid "Stat filter and location updated successfully to" +msgstr "统计数据过滤器及位置成功更新至" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120 +msgid "Failed to update the stat filter and location" +msgstr "统计数据过滤器及地址更新失败" + +#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121 +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 +msgid "Updated settings for all pools." +msgstr "隧道池更新完毕" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +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 +msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgstr "配置保存出错(已应用但未保存) - 参见错误日志" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:11 +msgid "hop" +msgstr "跳点" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:12 +msgid "tunnel" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 +msgid "hops" +msgstr "跳点" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15 +msgid "tunnels" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 +msgid "Exploratory tunnels" +msgstr "探测隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "Client tunnels for" +msgstr "客户隧道 - " + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "匿名性警告 - 设置中包括 0-跳点 隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "匿名性警告 - 设置中包括 1-跳点 隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +msgid "PERFORMANCE WARNING - Settings include very long tunnels." +msgstr "性能警告 - 设置中包括长隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80 +msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." +msgstr "性能警告 - 设置中包括大量隧道" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Inbound" +msgstr "入站" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Outbound" +msgstr "出站" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +msgid "Length" +msgstr "长度" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +msgid "Randomization" +msgstr "随机" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +msgid "Quantity" +msgstr "数量" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +msgid "Backup quantity" +msgstr "备用数量" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167 +msgid "Inbound options" +msgstr "入站选项" + +#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180 +msgid "Outbound options" +msgstr "出站选项" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31 +msgid "Theme change saved." +msgstr "主题设置已保存。" + +#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33 +msgid "Refresh the page to view." +msgstr "刷新页面后查看。" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +msgid "English" +msgstr "英语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +msgid "French" +msgstr "法语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:41 +msgid "German" +msgstr "德语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +msgid "Chinese" +msgstr "中文" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +msgid "Dutch" +msgstr "荷兰语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +msgid "Russian" +msgstr "俄语" + +#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:42 +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 +msgid "Check for updates" +msgstr "检查更新" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:63 +msgid "Update available, attempting to download now" +msgstr "有更新可用,正在尝试下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:65 +msgid "Update available, click button on left to download" +msgstr "有更新可用,点左侧按钮下载" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:67 +msgid "No update available" +msgstr "无更新" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:75 +msgid "Updating news URL to" +msgstr "正在更新新闻链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:83 +msgid "Updating proxy host to" +msgstr "正在更新代理主机至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:91 +msgid "Updating proxy port to" +msgstr "正在更新代理端口至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 +msgid "Updating refresh frequency to" +msgstr "正在更新更新频率为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111 +msgid "Updating update policy to" +msgstr "正在更新升级策略为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 +msgid "Updating update URLs." +msgstr "正在更新更新链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:128 +msgid "Updating trusted keys." +msgstr "正在更新可信公钥为" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:136 +msgid "Updating unsigned update URL to" +msgstr "正在更新未签名软件链接至" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:75 +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +msgid "Never" +msgstr "从不" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:77 +msgid "Every" +msgstr "每" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:92 +msgid "Notify only" +msgstr "只提示" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:95 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:97 +msgid "Download and verify only" +msgstr "仅下载并验证" + +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:101 +#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:103 +msgid "Download, verify, and restart" +msgstr "仅下载、验证并重启" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:128 +msgid "Configure Graph Display" +msgstr "图表显示设置" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:128 +msgid "Select Stats" +msgstr "选择统计项" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +msgid "Periods" +msgstr "周期" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:131 +msgid "Plot averages" +msgstr "事件均值" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +#: ../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:332 +msgid "or" +msgstr "或" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +msgid "plot events" +msgstr "事件数量" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +msgid "Image sizes" +msgstr "图像尺寸" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +msgid "width" +msgstr "宽度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:134 +msgid "height" +msgstr "高度" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:134 +#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +msgid "pixels" +msgstr "像素" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +msgid "Refresh delay" +msgstr "刷新延迟" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +msgid "hour" +msgstr "小时" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +msgid "minute" +msgstr "分钟" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +msgid "minutes" +msgstr "分钟" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:137 +msgid "Redraw" +msgstr "重绘" + +#: ../java/src/net/i2p/router/web/LogsHelper.java:13 +#: ../java/src/net/i2p/router/web/LogsHelper.java:37 +msgid "File location" +msgstr "文件位置" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:60 +msgid "Network Database RouterInfo Lookup" +msgstr "网络数据库 RouterInfo 检索" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 +#: ../java/strings/Strings.java:68 +msgid "Router" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 +msgid "not found in network database" +msgstr "在网络数据库概况未找到" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "Network Database Contents" +msgstr "网络数据库内容" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 +msgid "View RouterInfo" +msgstr "浏览 RouterInfo" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:85 +msgid "LeaseSets" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:93 +msgid "LeaseSet" +msgstr "赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +msgid "Local" +msgstr "本地" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 +msgid "Unpublished" +msgstr "未发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:98 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105 +msgid "Destination" +msgstr "目标" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:115 +#, java-format +msgid "Expires in {0}" +msgstr "{0} 后过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:117 +#, java-format +msgid "Expired {0} ago" +msgstr "{0}前过期" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Gateway" +msgstr "网关" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 +msgid "Lease" +msgstr "租赁" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:121 +msgid "Tunnel" +msgstr "隧道" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +msgid "View LeaseSets" +msgstr "查看赁集" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:137 +msgid "Not initialized" +msgstr "未初始化" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:146 +msgid "Routers" +msgstr "路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:148 +msgid "Show all routers" +msgstr "显示所有路由器" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150 +msgid "Show all routers with full stats" +msgstr "显示所有路由及统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185 +msgid "Network Database Router Statistics" +msgstr "NetDb路由器统计" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 +msgid "Count" +msgstr "计数" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 +msgid "Version" +msgstr "版本" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 +msgid "Transports" +msgstr "传输" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 +msgid "Country" +msgstr "国家" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:255 +msgid "Our info" +msgstr "我方信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:257 +msgid "Peer info for" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:261 +msgid "Full entry" +msgstr "完整项" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:105 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +msgid "Hidden" +msgstr "隐身" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 +msgid "Updated" +msgstr "已更新" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#, java-format +msgid "{0} ago" +msgstr "{0}前" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:274 +msgid "Published" +msgstr "发布" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:276 +msgid "Address(es)" +msgstr "地址" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +msgid "Hidden or starting up" +msgstr "隐身或正在启动" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +msgid "SSU" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:309 +msgid "SSU with introducers" +msgstr "使用中介的SSU连接" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 +msgid "NTCP" +msgstr "" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 +msgid "NTCP and SSU" +msgstr "NTCP 与 SSU" + +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:310 +msgid "NTCP and SSU with introducers" +msgstr "使用中介的NTCP与SSU连接" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:80 +#, java-format +msgid "News last updated {0} ago." +msgstr "新闻更新于{0}前" + +#: ../java/src/net/i2p/router/web/NewsFetcher.java:86 +#, java-format +msgid "News last checked {0} ago." +msgstr "最近一次查收新闻在{0}前" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72 +msgid "Peer Profiles" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73 +#, java-format +msgid "Showing {0} recent profiles." +msgstr "显示最近 {0} 个节点信息" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75 +#, java-format +msgid "Hiding {0} older profiles." +msgstr "隐藏 {0} 个较旧的信息。" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77 +#, java-format +msgid "Hiding {0} standard profiles." +msgstr "隐藏 {0} 个标准描述。" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82 +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 +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 +msgid "Capacity" +msgstr "容量" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255 +msgid "Integration" +msgstr "整合" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86 +msgid "Status" +msgstr "状态" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126 +msgid "Fast, High Capacity" +msgstr "高速,高容" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127 +msgid "High Capacity" +msgstr "高容" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128 +msgid "Standard" +msgstr "标准" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163 +msgid "Failing" +msgstr "失败" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260 +msgid "Integrated" +msgstr "已整合节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 +msgid "Banned" +msgstr "已封锁" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164 +msgid "Unreachable" +msgstr "不可达" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 +msgid "Test Fails" +msgstr "测试失败" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175 +msgid "profile" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184 +msgid "Floodfill and Integrated Peers" +msgstr "种子节点与整合节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188 +msgid "Caps" +msgstr "容量" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 +msgid "Integ. Value" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 +msgid "Last Heard About" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191 +msgid "Last Heard From" +msgstr "" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192 +msgid "Last Good Send" +msgstr "上一次发送成功" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193 +msgid "Last Bad Send" +msgstr "上一次发送失败" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194 +msgid "10m Resp. Time" +msgstr "10m响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195 +msgid "1h Resp. Time" +msgstr "1h响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196 +msgid "1d Resp. Time" +msgstr "1d响应时间" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197 +msgid "Last Good Lookup" +msgstr "上一次查询成功" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198 +msgid "Last Bad Lookup" +msgstr "上一次查询失败" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199 +msgid "Last Good Store" +msgstr "上一次保存成功" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200 +msgid "Last Bad Store" +msgstr "上一次保存失败" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201 +msgid "1h Fail Rate" +msgstr "1h失败率" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202 +msgid "1d Fail Rate" +msgstr "1d失败率" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250 +msgid "Thresholds" +msgstr "临界值" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252 +msgid "fast peers" +msgstr "高速节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254 +msgid "high capacity peers" +msgstr "高容节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256 +msgid " well integrated peers" +msgstr "整合节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "定义" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +msgid "as determined by the profile organizer" +msgstr "由节点描述信息管理器决定" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258 +msgid "groups" +msgstr "分组" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +msgid "capabilities in the netDb, not used to determine profiles" +msgstr "netDb中的容量,与描述信息无关。" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 +msgid "caps" +msgstr "容量" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel" +msgstr "该节点一分钟由单一隧道通过的数据峰值(byte/s)。" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260 +msgid "speed" +msgstr "速度" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +msgid "capacity" +msgstr "容量" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261 +msgid "how many tunnels can we ask them to join in an hour?" +msgstr "一小时内路由可以邀请加入的隧道总量" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +msgid "how many new peers have they told us about lately?" +msgstr "最近获知的新节点" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262 +msgid "integration" +msgstr "整合" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +msgid "is the peer banned, or unreachable, or failing tunnel tests?" +msgstr "是否节点被封禁,不可达,或在隧道测试中失败?" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263 +msgid "status" +msgstr "状态" + +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313 +msgid "n/a" +msgstr "" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57 +#, java-format +msgid "Temporary ban expiring in {0}" +msgstr "临时封锁{0}后解除" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59 +#, java-format +msgid "Banned until restart or in {0}" +msgstr "封锁直到重启或{0}后" + +#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71 +msgid "unban now" +msgstr "立即解封" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:56 +msgid "GO" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:59 +msgid "Statistics gathered during this router's uptime" +msgstr "路由运行时收集的统计数据" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:62 +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/StatsGenerator.java:108 +msgid "frequency" +msgstr "更新频率" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:142 +msgid "No lifetime events" +msgstr "自运行起无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:154 +msgid "rate" +msgstr "速度" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:156 +msgid "avg value" +msgstr "均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:185 +msgid "events" +msgstr "事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:191 +msgid "No events" +msgstr "无事件" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:197 +msgid "lifetime average" +msgstr "总平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:199 +msgid "peak average" +msgstr "峰值平均值" + +#: ../java/src/net/i2p/router/web/StatsGenerator.java:217 +msgid "lifetime average value" +msgstr "总平均值" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44 +msgid "Configure startup of clients and webapps (services); manually start dormant services" +msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46 +msgid "I2P Services" +msgstr "I2P 服务" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "管理您的 I2P HOST表(I2P域名解析表)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 +msgid "Addressbook" +msgstr "地址簿" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58 +msgid "Built-in anonymous BitTorrent Client" +msgstr "内建的匿名 BitTorrent 客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60 +msgid "Torrents" +msgstr "匿名BT" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64 +msgid "Anonymous webmail client" +msgstr "匿名Web邮件客户端" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66 +msgid "Webmail" +msgstr "匿名邮箱" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 +msgid "Anonymous resident webserver" +msgstr "内置的匿名Web服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72 +msgid "Webserver" +msgstr "匿名主页服务器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76 +msgid "Configure I2P Router" +msgstr "设置 I2P 路由器" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:78 +msgid "I2P Internals" +msgstr "I2P内部设置" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:355 +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:232 +msgid "Show all current peer connections" +msgstr "显示当前所有的节点连接" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96 +msgid "Show recent peer performance profiles" +msgstr "显示当前节点的性能记录" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98 +msgid "Profiles" +msgstr "节点信息" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102 +msgid "Show list of all known I2P routers" +msgstr "包含所有已知I2P路由器的列表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104 +msgid "NetDB" +msgstr "NetDB" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108 +msgid "Health Report" +msgstr "路由器健康状况报告" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110 +msgid "Logs" +msgstr "日志" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114 +msgid "Show the router's workload, and how it's performing" +msgstr "显示I2P路由器的负载与工作状况" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116 +msgid "Jobs" +msgstr "作业" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120 +msgid "Graph router performance" +msgstr "路由性能统计图" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122 +msgid "Graphs" +msgstr "图表" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126 +msgid "Textual router performance statistics" +msgstr "路由性能文字统计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Local Destinations" +msgstr "本地目标" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134 +#: ../java/strings/Strings.java:62 +msgid "I2PTunnel" +msgstr "I2P隧道" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145 +msgid "I2P Router Help" +msgstr "I2P路由帮助" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147 +msgid "General" +msgstr "功能概况" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150 +msgid "Your unique I2P router identity is" +msgstr "您I2P路由的唯一身份为" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 +msgid "never reveal it to anyone" +msgstr "切勿将其告诉任何人" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:156 +msgid "Local Identity" +msgstr "本地身份" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:168 +msgid "How long we've been running for this session" +msgstr "本次路由运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171 +msgid "Uptime" +msgstr "运行时间" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178 +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:205 +msgid "Download" +msgstr "下载" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214 +msgid "Download Unsigned" +msgstr "下载未签名更新" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240 +msgid "Active" +msgstr "活动节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248 +msgid "Fast" +msgstr "快速节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254 +msgid "High capacity" +msgstr "高容量节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266 +msgid "Known" +msgstr "已知节点" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 +msgid "Help with firewall configuration" +msgstr "如何配置防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283 +msgid "Check NAT/firewall" +msgstr "检查NAT/防火墙" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303 +msgid "Reseed" +msgstr "补种(搜索节点启动网络)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:320 +msgid "Configure router bandwidth allocation" +msgstr "设置路由的带宽分配" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:322 +msgid "Bandwidth in/out" +msgstr "带宽(上/下行)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339 +msgid "Total" +msgstr "总计" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347 +msgid "Used" +msgstr "已使用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:357 +msgid "Tunnels in/out" +msgstr "通道(上/下行)" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:362 +msgid "Exploratory" +msgstr "探测" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378 +msgid "Participating" +msgstr "共享" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384 +msgid "Share ratio" +msgstr "共享/占用" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390 +msgid "What's in the router's job queue?" +msgstr "查看路由的作业队列" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392 +msgid "Congestion" +msgstr "拥堵" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397 +msgid "Job lag" +msgstr "作业延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403 +msgid "Message delay" +msgstr "消息延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409 +msgid "Tunnel lag" +msgstr "隧道延迟" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415 +msgid "Backlog" +msgstr "积压" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:96 +msgid "ERR-Client Manager I2CP Error - check logs" +msgstr "错误-客户程序管理器I2CP错误 - 请看日志" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:103 +#, java-format +msgid "ERR-Clock Skew of {0}" +msgstr "错误-系统时滞 {0}" + +# 暂不翻译,确定/良好 可能影响按钮的翻译 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:112 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "OK" +msgstr "正常" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:113 +msgid "ERR-Private TCP Address" +msgstr "错误-TCP私有地址" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:115 +msgid "ERR-SymmetricNAT" +msgstr "错误-SymmeticNAT" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:118 +msgid "WARN-Firewalled with Inbound TCP Enabled" +msgstr "警告-入站TCP开启但因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:120 +msgid "WARN-Firewalled and Floodfill" +msgstr "警告-种子节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:122 +msgid "WARN-Firewalled and Fast" +msgstr "警告-快速节点因防火墙受限" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:123 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +msgid "Firewalled" +msgstr "防火墙限制" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:125 +msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "错误-UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口并重启程序" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:131 +msgid "ERR-No Active Peers, Check Network Connection and Firewall" +msgstr "错误-无活动节点,请检查网络连接及防火墙" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:134 +msgid "ERR-UDP Disabled and Inbound TCP host/port not set" +msgstr "错误-UDP已禁用且TCP入站主机与端口未设置" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:136 +msgid "WARN-Firewalled with UDP Disabled" +msgstr "警告-因防火墙受限且UDP被禁用" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:138 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +msgid "Testing" +msgstr "测试中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:370 +msgid "Add/remove/edit & control your client and server tunnels" +msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:382 +msgid "Server" +msgstr "服务" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:386 +msgid "Show tunnels" +msgstr "显示隧道" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +msgid "Leases expired" +msgstr "Lease已过期" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:397 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "Rebuilding" +msgstr "正在重建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:398 +msgid "ago" +msgstr "前" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:401 +msgid "Ready" +msgstr "就绪" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building" +msgstr "创建中" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 +msgid "Building tunnels" +msgstr "正在隧道创建" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +msgid "none" +msgstr "无" + +#: ../java/src/net/i2p/router/web/SummaryHelper.java:421 +#: ../java/strings/Strings.java:36 +msgid "shared clients" +msgstr "共享客户端" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:273 +msgid "configure" +msgstr "设置" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65 +msgid "dead" +msgstr "失效" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "Participating tunnels" +msgstr "共享隧道" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "From" +msgstr "从" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "Receive on" +msgstr "接收" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "Expiration" +msgstr "到期" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "Send on" +msgstr "发送" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73 +msgid "To" +msgstr "至" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 +msgid "Rate" +msgstr "速度" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 +msgid "Role" +msgstr "职能" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Usage" +msgstr "使用情况" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107 +msgid "grace period" +msgstr "过渡期" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117 +msgid "Outbound Endpoint" +msgstr "出站终端" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119 +msgid "Inbound Gateway" +msgstr "入站网关" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162 +msgid "Participant" +msgstr "参与节点" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126 +msgid "Inactive participating tunnels" +msgstr "不活跃的共享隧道" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +msgid "Lifetime bandwidth usage" +msgstr "运行期间带宽使用情况" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "Expiry" +msgstr "到期" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 +msgid "In/Out" +msgstr "入/出" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159 +msgid "Participants" +msgstr "参与节点" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165 +msgid "Endpoint" +msgstr "终端" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +msgid "Build in progress" +msgstr "创建中" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 +msgid "inbound" +msgstr "入站" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +msgid "outbound" +msgstr "出站" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:215 +msgid "No tunnels; waiting for the grace period to end." +msgstr "无隧道;等待宽限期结束。" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +msgid "in" +msgstr "入" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 +msgid "out" +msgstr "出" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:234 +msgid "Tunnel Counts By Peer" +msgstr "每节点隧道计数" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +msgid "% of total" +msgstr "占总数%" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +msgid "Our Tunnels" +msgstr "我方隧道" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +msgid "Participating Tunnels" +msgstr "共享隧道" + +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:253 +msgid "Totals" +msgstr "总计" + +#: ../java/strings/Strings.java:12 +msgid "addressbook" +msgstr "地址簿" + +#: ../java/strings/Strings.java:13 +msgid "i2psnark" +msgstr "匿名BT客户端" + +#: ../java/strings/Strings.java:14 +msgid "i2ptunnel" +msgstr "I2P隧道" + +#: ../java/strings/Strings.java:15 +msgid "susimail" +msgstr "匿名邮箱" + +#: ../java/strings/Strings.java:16 +msgid "susidns" +msgstr "susiDNS" + +#: ../java/strings/Strings.java:17 +msgid "routerconsole" +msgstr "路由控制台" + +#: ../java/strings/Strings.java:22 +msgid "Web console" +msgstr "网页控制台" + +#: ../java/strings/Strings.java:23 +msgid "SAM application bridge" +msgstr "SAM 协议桥" + +#: ../java/strings/Strings.java:24 +msgid "Application tunnels" +msgstr "程序隧道" + +#: ../java/strings/Strings.java:25 +msgid "My eepsite web server" +msgstr "匿名主页服务器" + +#: ../java/strings/Strings.java:26 +msgid "I2P webserver (eepsite)" +msgstr "匿名主页服务器(eepsite)" + +#: ../java/strings/Strings.java:27 +msgid "Browser launch at startup" +msgstr "路由器启动时运行浏览器" + +#: ../java/strings/Strings.java:28 +msgid "BOB application bridge" +msgstr "BOB 协议桥" + +#: ../java/strings/Strings.java:30 +msgid "Open Router Console in web browser at startup" +msgstr "路由启动时打开控制台" + +#: ../java/strings/Strings.java:37 +msgid "IRC proxy" +msgstr "I2P聊天室" + +#: ../java/strings/Strings.java:38 +msgid "eepsite" +msgstr "匿名网站" + +#: ../java/strings/Strings.java:39 +msgid "I2P webserver" +msgstr "匿名主页服务器" + +#: ../java/strings/Strings.java:40 +msgid "HTTP Proxy" +msgstr "HTTP 代理" + +#: ../java/strings/Strings.java:42 +msgid "eepProxy" +msgstr "I2P代理" + +#: ../java/strings/Strings.java:43 +msgid "ircProxy" +msgstr "I2P聊天室" + +#: ../java/strings/Strings.java:45 +msgid "I2PSnark" +msgstr "I2P Snark" + +#: ../java/strings/Strings.java:47 +msgid "iMule" +msgstr "" + +#: ../java/strings/Strings.java:51 +msgid "classic" +msgstr "经典" + +#: ../java/strings/Strings.java:52 +msgid "dark" +msgstr "暗色调" + +#: ../java/strings/Strings.java:53 +msgid "light" +msgstr "亮色调" + +#: ../java/strings/Strings.java:54 +msgid "midnight" +msgstr "午夜" + +#: ../java/strings/Strings.java:57 +msgid "Bandwidth" +msgstr "带宽" + +#: ../java/strings/Strings.java:58 +msgid "BandwidthLimiter" +msgstr "带宽限制" + +#: ../java/strings/Strings.java:59 +msgid "ClientMessages" +msgstr "客户消息" + +#: ../java/strings/Strings.java:60 +msgid "Encryption" +msgstr "加密" + +#: ../java/strings/Strings.java:61 +msgid "i2cp" +msgstr "" + +#: ../java/strings/Strings.java:63 +msgid "InNetPool" +msgstr "" + +#: ../java/strings/Strings.java:64 +msgid "JobQueue" +msgstr "作业队列" + +#: ../java/strings/Strings.java:65 +msgid "NetworkDatabase" +msgstr "网络数据库" + +#: ../java/strings/Strings.java:66 +msgid "ntcp" +msgstr "NTCP" + +#: ../java/strings/Strings.java:69 +msgid "Stream" +msgstr "流" + +#: ../java/strings/Strings.java:70 +msgid "Throttle" +msgstr "门槛" + +#: ../java/strings/Strings.java:71 +msgid "Transport" +msgstr "传输" + +#: ../java/strings/Strings.java:73 +msgid "udp" +msgstr "UDP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +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_005fru_jsp.java:220 +#: ../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:235 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216 +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_005fru_jsp.java:224 +#: ../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:238 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220 +msgid "Enable" +msgstr "启用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241 +msgid "I2P Network Configuration" +msgstr "I2P 连网设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297 +msgid "Bandwidth limiter" +msgstr "带宽限制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299 +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 +msgid "KBps In" +msgstr "KBps 入站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317 +msgid "KBps Out" +msgstr "KBps 出站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +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 +msgid "NOTE" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342 +#, java-format +msgid "You have configured I2P to share only {0} KBps." +msgstr "您设置I2P仅共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345 +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 +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 +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 +#, java-format +msgid "You have configured I2P to share {0} KBps." +msgstr "您设置I2P共享 {0} KBps" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353 +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:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:324 +#: ../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 +msgid "Cancel" +msgstr "取消" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 +msgid "IP and Transport Configuration" +msgstr "IP 与传输设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 +msgid "The default settings will work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:367 +msgid "There is help below." +msgstr "页面下方有帮助信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 +msgid "UPnP Configuration" +msgstr "UPnP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:373 +msgid "Enable UPnP to open firewall ports" +msgstr "启用UPnP以打开防火墙端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +msgid "UPnP status" +msgstr "UPnP 统计" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377 +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:449 +msgid "Externally reachable hostname or IP address" +msgstr "公网可访问的本机域名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 +msgid "Use all auto-detect methods" +msgstr "使用全部自动探测方法" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "Disable UPnP IP address detection" +msgstr "禁用UPnP IP 地址探测" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +msgid "Ignore local interface IP address" +msgstr "忽略本地接口的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395 +msgid "Use SSU IP address detection only" +msgstr "仅使用SSU IP 地址探测" + +#: ../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:467 +msgid "Specify hostname or IP" +msgstr "指定主机名或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 +msgid "Select Interface" +msgstr "选择网络接口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +msgid "Hidden mode - do not publish IP" +msgstr "隐身模式 - 不发布IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421 +msgid "(prevents participating traffic)" +msgstr "(阻止共享流量)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:423 +msgid "Action when IP changes" +msgstr "IP改变后应" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:427 +msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity" +msgstr "笔记本模式 - IP变化后改变路由身份及UDP端口(拨号用户慎用)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429 +msgid "Experimental" +msgstr "试验性" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431 +msgid "UDP Configuration:" +msgstr "UPnP 设置:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "UDP port:" +msgstr "UDP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:447 +msgid "TCP Configuration" +msgstr "TCP 连接设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 +msgid "Use auto-detected IP address" +msgstr "使用自动检测得到的 IP 地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:487 +msgid "currently" +msgstr "目前" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "if we are not firewalled" +msgstr "如果没有受到防火墙阻挡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "总是使用自动探测到的IP地址(没有防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 +msgid "Disable inbound (Firewalled)" +msgstr "禁止入站连接(受防火墙限制)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 +msgid "Completely disable" +msgstr "完全禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +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:481 +msgid "Externally reachable TCP port" +msgstr "公网可访问的TCP端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Use the same port configured for UDP" +msgstr "使用与UDP相同的端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Specify Port" +msgstr "指定端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:329 +msgid "Note" +msgstr "注意" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:500 +msgid "Changing these settings will restart your router." +msgstr "修改这些设置将必须重启路由器。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:506 +msgid "Configuration Help" +msgstr "设置帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +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:510 +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:512 +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(Universal Plug and Play)或借助“SSU中介”进行UDP端口穿透,通过它们也可以中继数据。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +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:516 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "在某些防火墙下例如Symmetric,I2P可能无法有效利用NAT工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525 +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP与公网网关设备(IGD)通讯可以检测外部IP和映射端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527 +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:529 +msgid "No UPnP-compatible device present" +msgstr "没有发现UPnP兼容设备" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:531 +msgid "UPnP disabled on the device" +msgstr "设备上的UPnP支持已禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:533 +msgid "Software firewall interference with UPnP" +msgstr "软件防火墙阻止UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:535 +msgid "Bugs in the device's UPnP implementation" +msgstr "设备的UPnP支持有Bug" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "公网连接中存在多个防火墙/路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539 +msgid "UPnP device change, reset, or address change" +msgstr "UPnP设备改变、重置或地址迁移" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541 +msgid "Review the UPnP status here." +msgstr "在这里检查UPnP状态。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543 +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:545 +msgid "Hostnames entered above will be published in the network database." +msgstr "上面输入的主机名称将在网络数据库(NetDB)中发布。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "They are not private." +msgstr "他们并非私有地址。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1." +msgstr "此外,请勿输入如127.0.0.1或192.168.1.1等私有地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +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:553 +msgid "When in doubt, leave the settings at the defaults." +msgstr "如果对设置有疑问,请保留默认设置。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "Reachability Help" +msgstr "连通性帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560 +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:563 +msgid "If there is an error, the logs may also help diagnose the problem." +msgstr "如果存在错误,日志可以帮助您诊断问题。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "Your UDP port does not appear to be firewalled." +msgstr "您的UDP端口似乎一切正常。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +msgid "Your UDP port appears to be firewalled." +msgstr "您的UDP端口似乎因防火墙而连接受限。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 +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:575 +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port." +msgstr "然而,如果总是出现此提示,您应检查外部或内部防火墙是否打开了I2P端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "即使受到防火墙阻拦,I2P也能够正常工作,无需担心。受到防火墙阻隔时,路由器将通过“中介(Introducers)”中继入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "然而,如果您能打开防火墙端口,您才能得到的共享流量,更好的帮助I2P网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +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:583 +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:587 +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:591 +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "路由器被设置为禁止发布IP地址,因此并不需要入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +msgid "WARN - Firewalled and Fast" +msgstr "警告 - 快速节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "您设置I2P共享超过128KBps的带宽,但您的连接因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +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 "尽管在此种配置情况下I2P可以正常工作,但如果您的确能够分享超过128kps的带宽,打开防火墙端口它能工作的更好帮助网络中其他的人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +msgid "WARN - Firewalled and Floodfill" +msgstr "警告 - 种子节点,因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "您已将I2P设置为种子路由,但您的连接已因防火墙受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "为了种子路由能够更好的参与到I2P网络中,请您的防火墙中打开端口。" + +# 暂不翻译方便反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "警告 - 入站TCP开启,但因防火墙受限" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +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:609 +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连接,其他路由器节点将无法与您建立连接,造成网络受阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "请打开您的防火墙端口或禁用上面的入站TCP连接。" + +# 暂不翻译 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "警告 - 因防火墙受限,且UDP被禁用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +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:617 +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "您的TCP连接似乎因防火墙受阻,导致您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +msgid "Please open your firewall or enable UDP." +msgstr "请打开防火墙端口或启用UDP。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +msgid "ERR - Clock Skew" +msgstr "错误 - 系统时滞" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +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:625 +msgid "Correct your clock setting if this error persists." +msgstr "如果错误持续,请校对您的系统时间。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "ERR - Private TCP Address" +msgstr "错误 - 私有TCP地址" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +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:631 +msgid "Correct the address or disable inbound TCP above." +msgstr "正确设置IP地址或禁用上面的入站TCP连接。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - SymmetricNAT" +msgstr "错误 - SymmetricNAT" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "I2P检测到您受到Symmetic NAT的阻挡。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +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无法与此类防火墙很好的并存。您可能无法接收入站连接,这会障碍您连入I2P网络。" + +# 暂不翻译,方便问题反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "错误 - UDP端口已占用 - 在高级设置中设置 i2np.udp.internalPort=新端口 并重启程序" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +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:643 +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的端口,如果是,关闭此程序或设置I2P使用不同的端口。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +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:647 +msgid "However, a restart is always required after this error." +msgstr "然而,发生此错误后一般需要重启程序才能解决。" + +# 暂不翻译,方便错误反馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:649 +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:651 +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:653 +msgid "Therefore your router cannot accept inbound connections." +msgstr "因此您的路由器无法接收入站连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:655 +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:657 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "错误 - 客户程序管理器 I2CP 错误 - 请看日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:659 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "这通常为7654端口冲突所致,请查看日志确认原因。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:661 +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 +msgid "config advanced" +msgstr "高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242 +msgid "I2P Advanced Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299 +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 +msgid "Apply" +msgstr "应用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309 +msgid "Some changes may require a restart to take effect." +msgstr "某些设置需要程序重启后生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +msgid "config clients" +msgstr "升级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244 +msgid "I2P Client Configuration" +msgstr "I2P 客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:309 +msgid "Client Configuration" +msgstr "客户程序设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311 +msgid "The Java clients listed below are started by the router and run in the same JVM." +msgstr "下面列出的Java客户端随路由器启动并运行于同一JVM中。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:315 +msgid "To change other client options, edit the file" +msgstr "修改其他客户端设置请编辑文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:342 +msgid "All changes require restart to take effect." +msgstr "所有更改均需要程序重启才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334 +msgid "WebApp Configuration" +msgstr "WebApp 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336 +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 Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如 i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, i2ptunnel),甚至根本没有Web界面(例如 addressbook)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338 +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 "从webapps目录中删除相应的.war文件同样可以禁用Web程序;然而这些 .war 文件和Web程序在更新I2P后还会再次出现,所以推荐在这里通过设置的方法禁用不用的Web程序。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +msgid "config keyring" +msgstr "钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228 +msgid "I2P Keyring Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "路由的钥匙环被用来解密和加密赁集." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297 +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "钥匙环可以包含本地和远程的加密目标(Destination)." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307 +msgid "Manual Keyring Addition" +msgstr "手动添加钥匙环" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309 +msgid "Enter keys for encrypted remote destinations here." +msgstr "在此处添加远程加密目标的密钥。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312 +msgid "Keys for local destinations must be entered on the" +msgstr "输入本地目标的密钥请到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314 +msgid "I2PTunnel page" +msgstr "I2P 隧道页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316 +msgid "Dest. name, hash, or full key" +msgstr "目标(Dest.)名称, HASH, 或完整公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318 +msgid "Encryption Key" +msgstr "加密密钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +msgid "config logging" +msgstr "日志设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242 +msgid "I2P Logging Configuration" +msgstr "I2P 记录设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299 +msgid "Configure I2P Logging Options" +msgstr "设置 I2P 记录选项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301 +msgid "Logging filename" +msgstr "日志文件名称" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "(日志轮转时符号'@'将被替换)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307 +msgid "Log record format" +msgstr "日志记录格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311 +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 +msgid "Log date format" +msgstr "日志日期格式" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317 +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 +msgid "Max log file size" +msgstr "日志最大体积" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323 +msgid "Default log level" +msgstr "默认日志等级" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327 +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 +msgid "Log level overrides" +msgstr "等级外
    日志项目" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +msgid "config peers" +msgstr "节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228 +msgid "I2P Peer Configuration" +msgstr "I2P 节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304 +msgid "Manual Peer Controls" +msgstr "手动节点控制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306 +msgid "Router Hash" +msgstr "路由器Key(见NetDB)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310 +msgid "Manually Ban / Unban a Peer" +msgstr "手动封杀/解封某个节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312 +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 +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 "评分(Bonuse)可能为正或为负并影响节点是否评为快速和高容量节点。快速节点用于客户程序通道,高容量节点用于探索隧道。当前评分显示于" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326 +msgid "profiles page" +msgstr "节点信息页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342 +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 +msgid "Banned Peers" +msgstr "已封锁节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366 +msgid "Banned IPs" +msgstr "已封锁IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +msgid "config service" +msgstr "服务设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228 +msgid "I2P Service Configuration" +msgstr "I2P 服务设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284 +msgid "Shutdown the router" +msgstr "关闭路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286 +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 +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 +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 +msgid "This is useful in some situations - 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:302 +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:304 +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:314 +msgid "Systray integration" +msgstr "使用系统托盘" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316 +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:318 +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:320 +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:326 +msgid "Run on startup" +msgstr "启动时运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly." +msgstr "这里你可以通过下面的选项来设置开机后 I2P 是否启动 - I2P 将相应的安装或卸载I2P服务。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330 +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:340 +msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgstr "如果您目前已经以服务形式运行 I2P ,删除 I2P 服务将立刻关闭路由器。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +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:350 +msgid "Debugging" +msgstr "调试" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +msgid "Launch browser on router startup?" +msgstr "路由器启动时运行浏览器?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +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 "此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要I2P可以在路由启动时调用浏览器打开" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +msgid "config stats" +msgstr "统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229 +msgid "I2P Stats Configuration" +msgstr "I2P 统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300 +msgid "Configure I2P Stat Collection" +msgstr "设置 I2P 统计项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302 +msgid "Enable full stats?" +msgstr "启用完整统计?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309 +msgid "change requires restart to take effect" +msgstr "设置需要程序重启后才能生效。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311 +msgid "Stat file" +msgstr "统计文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315 +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 +msgid "toggle all" +msgstr "全部切换" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328 +msgid "Log" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330 +msgid "Graph" +msgstr "图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369 +msgid "Advanced filter" +msgstr "高级过滤器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +msgid "config tunnels" +msgstr "隧道设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241 +msgid "I2P Tunnel Configuration" +msgstr "I2P 隧道设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305 +msgid "The default settings work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "匿名性需要以性能为代价。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312 +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 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "导致高CPU占用和/或高上行流量。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318 +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 +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 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "对客户程序隧道的修改是临时的,将不予保存。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +msgid "To make permanent client tunnel changes see the" +msgstr "要永久性更改客户通道的设置参见" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +msgid "i2ptunnel page" +msgstr "I2P 隧道页面" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +msgid "config UI" +msgstr "界面设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241 +msgid "I2P UI Configuration" +msgstr "I2P 界面设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291 +msgid "Router Console Theme" +msgstr "路由控制台主题" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "抱歉,主题功能在InternetExplorer中已禁用。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311 +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的UserAgent;您需要设置浏览器(或过滤式代理)使用不同的UserAgent,才能访问路由控制台的主题功能。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315 +msgid "Router Console Language" +msgstr "路由控制台语言" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319 +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 +msgid "config update" +msgstr "升级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228 +msgid "I2P Update Configuration" +msgstr "I2P 更新设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:300 +msgid "Check for I2P and news updates" +msgstr "检查I2P软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302 +msgid "News & I2P Updates" +msgstr "软件及新闻更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:306 +msgid "Update In Progress" +msgstr "更新中" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:314 +msgid "News URL" +msgstr "新闻链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:318 +msgid "Refresh frequency" +msgstr "更新频率" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:322 +msgid "Update policy" +msgstr "升级策略" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326 +msgid "Update through the eepProxy?" +msgstr "通过I2P代理更新?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330 +msgid "eepProxy host" +msgstr "I2P代理主机" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +msgid "eepProxy port" +msgstr "I2P代理端口" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338 +msgid "Update URLs" +msgstr "更新链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342 +msgid "Trusted keys" +msgstr "可信公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346 +msgid "Update with unsigned development builds?" +msgstr "更新包括未签名的开发版?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350 +msgid "Unsigned Build URL" +msgstr "未签名软件链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354 +msgid "Save" +msgstr "保存" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +msgid "Page Not Found" +msgstr "页面未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243 +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 +msgid "Error 404" +msgstr "错误 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250 +msgid "not found" +msgstr "未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +msgid "graphs" +msgstr "图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228 +msgid "I2P Performance Graphs" +msgstr "I2P 性能图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +msgid "home" +msgstr "主页" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +msgid "job queue" +msgstr "作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227 +msgid "I2P Router Job Queue" +msgstr "I2P 路由器作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +msgid "logs" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227 +msgid "I2P Router Logs" +msgstr "I2P 路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229 +msgid "I2P Version & Running Environment" +msgstr "I2P 版本及运行环境" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231 +msgid "Please include this information in bug reports" +msgstr "报告问题时请包括以下信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:267 +msgid "Critical Logs" +msgstr "关键日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:271 +msgid "Router Logs" +msgstr "路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:277 +msgid "Service (Wrapper) Logs" +msgstr "服务(封装)日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +msgid "network database summary" +msgstr "I2P 网络数据库概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227 +msgid "I2P Network Database Summary" +msgstr "I2P 网络数据库概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109 +msgid "WebApp Not Found" +msgstr "Web程序(war)未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231 +msgid "Web Application Not Running" +msgstr "Web程序(.war)未运行" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233 +msgid "The requested web application is not running." +msgstr "您所访问的Web程序未启动。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235 +msgid "Please visit the config clients page to start it." +msgstr "请先在配置客户端页面中启动它。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +msgid "peer connections" +msgstr "节点连接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227 +msgid "I2P Network Peers" +msgstr "I2P 网络节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +msgid "peer profiles" +msgstr "节点信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227 +msgid "I2P Network Peer Profiles" +msgstr "I2P 网络节点信息" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105 +msgid "statistics" +msgstr "统计" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242 +msgid "I2P Router Statistics" +msgstr "I2P 路由器统计数据" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244 +#, java-format +msgid "Disable {0}s Refresh" +msgstr "停止 {0}秒 刷新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +msgid "tunnel summary" +msgstr "隧道概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227 +msgid "I2P Tunnel Summary" +msgstr "I2P 隧道概况" + +#~ msgid "This is useful in some situations" +#~ msgstr "重启在某些情况下有用" +#~ msgid "I2P will install (or remove) a service accordingly." +#~ msgstr "I2P将相应的将自身安装为服务(或卸载服务)。" +#~ msgid "skew" +#~ msgstr "时滞" +#~ msgid "Expl. + Client" +#~ msgstr "探测+客户" +#~ msgid "Part. from + to" +#~ msgstr "相邻共享节点" +#~ msgid "Depth" +#~ msgstr "深度" +#~ msgid "Addresses" +#~ msgstr "地址" +#~ msgid "view without" +#~ msgstr "查看不含" +#~ msgid "view with" +#~ msgstr "查看含" +#~ msgid "stats" +#~ msgstr "统计" +#~ msgid "View" +#~ msgstr "查看" +#~ msgid "Not Failing" +#~ msgstr "标准" +#~ msgid "" +#~ "If you want the router to restart itself after shutting down, you can " +#~ "choose one of the following. This is useful in some situations - 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. A graceful restart will take a few minutes (but your peers " +#~ "will appreciate your patience), while a hard restart does so " +#~ "immediately. After tearing down the router, it will wait 1 minute before " +#~ "starting back up again." +#~ msgstr "" +#~ "如果你想要路由器关闭后重新启动,可以选择下面的选项。重启在某些情况下有用 " +#~ "- 例如当修改了客户程序仅在启动时读取的设置比如路由器控制界面的密码,监听的" +#~ "接口。平滑重启可能会等待几分钟的时间 (但其他节点一定会感激你的耐心),硬重" +#~ "启可以立即完成。 路由关闭后将等待1分钟再重新启动。" +#~ msgid "" +#~ "On the windows platform, there is a small application to sit in the " +#~ "system tray, allowing you to view the router's status (later on, I2P " +#~ "client applications will be able to integrate their own functionality " +#~ "into the system tray as well). If you are on windows, you can either " +#~ "enable or disable that icon here." +#~ msgstr "" +#~ "windows 平台允许小程序进驻系统托盘,让你可以查看路由状态,(以后的 I2P 客户" +#~ "端程序也会将它们的功能集成到系统托盘里)。如果你使用Windows, 可以在这里开启" +#~ "或关闭这个托盘图标。" + From 4186894a39b4b6adf81b238f563978d88044e7bb Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:41:40 +0000 Subject: [PATCH 64/72] * build.xml: Add a debian-source target * Startup: Disable browser launch for debian daemon --- build.xml | 15 +++++++++++++++ .../src/net/i2p/router/startup/WorkingDir.java | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/build.xml b/build.xml index 39b598659..e724ce058 100644 --- a/build.xml +++ b/build.xml @@ -776,6 +776,7 @@
    + @@ -786,4 +787,18 @@ + + + + + + + + + + + + + + diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index b82817fec..545239777 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -48,6 +48,7 @@ public class WorkingDir { private final static String WORKING_DIR_DEFAULT_WINDOWS = "I2P"; private final static String WORKING_DIR_DEFAULT = ".i2p"; private final static String WORKING_DIR_DEFAULT_DAEMON = "i2p-config"; + /** we do a couple of things differently if this is the username */ private final static String DAEMON_USER = "i2psvc"; /** @@ -199,11 +200,15 @@ public class WorkingDir { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newFile), "UTF-8"))); out.println("# Modified by I2P User dir migration script"); String s = null; + boolean isDaemon = DAEMON_USER.equals(System.getProperty("user.name")); while ((s = DataHelper.readLine(in)) != null) { if (s.endsWith("=\"eepsite/jetty.xml\"")) { s = s.replace("=\"eepsite/jetty.xml\"", "=\"" + todir.getAbsolutePath() + File.separatorChar + "eepsite" + File.separatorChar + "jetty.xml\""); + } else if (isDaemon && s.equals("clientApp.4.startOnLoad=true")) { + // disable browser launch for daemon + s = "clientApp.4.startOnLoad=false"; } out.println(s); } From 6d60a6f8338cf3c53efd334d204c0f509ffbc376 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:42:42 +0000 Subject: [PATCH 65/72] - Don't store over client tunnels to pre-0.7.10 floodfills --- .../java/src/net/i2p/router/networkdb/kademlia/StoreJob.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java index b9e6912c4..690f37b87 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java @@ -442,6 +442,11 @@ class StoreJob extends JobImpl { } else { sent = msg; _state.addPending(to); + // now that almost all floodfills are at 0.7.10, + // just refuse to store unencrypted to older ones. + _state.replyTimeout(to); + getContext().jobQueue().addJob(new WaitJob(getContext())); + return; } SendSuccessJob onReply = new SendSuccessJob(getContext(), peer, outTunnel, sent.getMessageSize()); From 81664bc776ce5540d7ce0a3d4321a47fefd131a2 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:47:50 +0000 Subject: [PATCH 66/72] - Don't update unused lease fail stats --- .../i2p/router/message/OutboundClientMessageOneShotJob.java | 6 ++++-- .../networkdb/kademlia/KademliaNetworkDatabaseFacade.java | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index 6e64d2040..e82a5f5fb 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -977,7 +977,8 @@ public class OutboundClientMessageOneShotJob extends JobImpl { long dataMsgId = _cloveId; getContext().messageHistory().sendPayloadMessage(dataMsgId, true, sendTime); getContext().clientManager().messageDeliveryStatusUpdate(_from, _clientMessageId, true); - _lease.setNumSuccess(_lease.getNumSuccess()+1); + // unused + //_lease.setNumSuccess(_lease.getNumSuccess()+1); int size = _clientMessageSize; @@ -1022,7 +1023,8 @@ public class OutboundClientMessageOneShotJob extends JobImpl { _log.debug(OutboundClientMessageOneShotJob.this.getJobId() + ": Soft timeout through the lease " + _lease); - _lease.setNumFailure(_lease.getNumFailure()+1); + // unused + //_lease.setNumFailure(_lease.getNumFailure()+1); if (_key != null && _tags != null && _leaseSet != null) { SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_from.calculateHash()); if (skm != null) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index 1f0daa9e8..dc2bb3ac9 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -642,6 +642,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { // Iterate through the old failure / success count, copying over the old // values (if any tunnels overlap between leaseSets). no need to be // ueberthreadsafe fascists here, since these values are just heuristics + /****** unused if (rv != null) { for (int i = 0; i < rv.getLeaseCount(); i++) { Lease old = rv.getLease(i); @@ -655,6 +656,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { } } } + *******/ return rv; } From 0a93466999a12f76a37b42c1bf5bc0d9b9af6488 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:53:14 +0000 Subject: [PATCH 67/72] - Add basic DOS prevention for lookups - Move flood throttle check so we don't throttle ourselves --- .../src/net/i2p/router/RouterContext.java | 4 +- .../src/net/i2p/router/RouterDoSThrottle.java | 1 + .../net/i2p/router/RouterThrottleImpl.java | 1 + .../networkdb/kademlia/FloodThrottler.java | 3 + ...FloodfillDatabaseLookupMessageHandler.java | 30 ++++---- .../FloodfillNetworkDatabaseFacade.java | 28 +++++--- ...andleFloodfillDatabaseStoreMessageJob.java | 11 ++- .../networkdb/kademlia/LookupThrottler.java | 70 +++++++++++++++++++ 8 files changed, 123 insertions(+), 25 deletions(-) create mode 100644 router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java index 8f1c240c3..dfa9d7c21 100644 --- a/router/java/src/net/i2p/router/RouterContext.java +++ b/router/java/src/net/i2p/router/RouterContext.java @@ -134,8 +134,8 @@ public class RouterContext extends I2PAppContext { _shitlist = new Shitlist(this); _blocklist = new Blocklist(this); _messageValidator = new MessageValidator(this); - //_throttle = new RouterThrottleImpl(this); - _throttle = new RouterDoSThrottle(this); + _throttle = new RouterThrottleImpl(this); + //_throttle = new RouterDoSThrottle(this); _integrationCalc = new IntegrationCalculator(this); _speedCalc = new SpeedCalculator(this); _capacityCalc = new CapacityCalculator(this); diff --git a/router/java/src/net/i2p/router/RouterDoSThrottle.java b/router/java/src/net/i2p/router/RouterDoSThrottle.java index 79471627a..5f49206bb 100644 --- a/router/java/src/net/i2p/router/RouterDoSThrottle.java +++ b/router/java/src/net/i2p/router/RouterDoSThrottle.java @@ -6,6 +6,7 @@ import net.i2p.data.Hash; * Minor extention of the router throttle to handle some DoS events and * throttle accordingly. * + * @deprecated unused */ class RouterDoSThrottle extends RouterThrottleImpl { public RouterDoSThrottle(RouterContext context) { diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java index 750acb073..289f929a8 100644 --- a/router/java/src/net/i2p/router/RouterThrottleImpl.java +++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java @@ -72,6 +72,7 @@ class RouterThrottleImpl implements RouterThrottle { } } + /** @deprecated unused, function moved to netdb */ public boolean acceptNetDbLookupRequest(Hash key) { long lag = _context.jobQueue().getMaxLag(); if (lag > JOB_LAG_LIMIT) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java index 303e8fc0e..96b0f508d 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodThrottler.java @@ -7,6 +7,9 @@ import net.i2p.util.SimpleTimer; /** * Count how often we have recently flooded a key + * This offers basic DOS protection but is not a complete solution. + * + * @since 0.7.11 */ class FloodThrottler { private ObjectCounter counter; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java index 50e5b7f80..8ef121d06 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java @@ -23,12 +23,15 @@ import net.i2p.util.Log; */ public class FloodfillDatabaseLookupMessageHandler implements HandlerJobBuilder { private RouterContext _context; + private FloodfillNetworkDatabaseFacade _facade; private Log _log; - public FloodfillDatabaseLookupMessageHandler(RouterContext context) { + + public FloodfillDatabaseLookupMessageHandler(RouterContext context, FloodfillNetworkDatabaseFacade facade) { _context = context; + _facade = facade; _log = context.logManager().getLog(FloodfillDatabaseLookupMessageHandler.class); - _context.statManager().createRateStat("netDb.lookupsReceived", "How many netDb lookups have we received?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); - _context.statManager().createRateStat("netDb.lookupsDropped", "How many netDb lookups did we drop due to throttling?", "NetworkDatabase", new long[] { 5*60*1000l, 60*60*1000l, 24*60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsReceived", "How many netDb lookups have we received?", "NetworkDatabase", new long[] { 60*60*1000l }); + _context.statManager().createRateStat("netDb.lookupsDropped", "How many netDb lookups did we drop due to throttling?", "NetworkDatabase", new long[] { 60*60*1000l }); // following are for ../HDLMJ _context.statManager().createRateStat("netDb.lookupsHandled", "How many netDb lookups have we handled?", "NetworkDatabase", new long[] { 60*60*1000l }); _context.statManager().createRateStat("netDb.lookupsMatched", "How many netDb lookups did we have the data for?", "NetworkDatabase", new long[] { 60*60*1000l }); @@ -42,18 +45,19 @@ public class FloodfillDatabaseLookupMessageHandler implements HandlerJobBuilder public Job createJob(I2NPMessage receivedMessage, RouterIdentity from, Hash fromHash) { _context.statManager().addRateData("netDb.lookupsReceived", 1, 0); - if (true || _context.throttle().acceptNetDbLookupRequest(((DatabaseLookupMessage)receivedMessage).getSearchKey())) { - Job j = new HandleFloodfillDatabaseLookupMessageJob(_context, (DatabaseLookupMessage)receivedMessage, from, fromHash); - if (false) { - // might as well inline it, all the heavy lifting is queued up in later jobs, if necessary - j.runJob(); - return null; - } else { + DatabaseLookupMessage dlm = (DatabaseLookupMessage)receivedMessage; + if (!_facade.shouldThrottleLookup(dlm.getFrom(), dlm.getReplyTunnel())) { + Job j = new HandleFloodfillDatabaseLookupMessageJob(_context, dlm, from, fromHash); + //if (false) { + // // might as well inline it, all the heavy lifting is queued up in later jobs, if necessary + // j.runJob(); + // return null; + //} else { return j; - } + //} } else { - if (_log.shouldLog(Log.INFO)) - _log.info("Dropping lookup request as throttled"); + if (_log.shouldLog(Log.WARN)) + _log.warn("Dropping lookup request for " + dlm.getSearchKey() + " (throttled), reply was to: " + dlm.getFrom() + " tunnel: " + dlm.getReplyTunnel()); _context.statManager().addRateData("netDb.lookupsDropped", 1, 1); return null; } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index 09e59c12e..8993da433 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -12,6 +12,7 @@ import net.i2p.data.DataStructure; import net.i2p.data.Hash; import net.i2p.data.LeaseSet; import net.i2p.data.RouterInfo; +import net.i2p.data.TunnelId; import net.i2p.data.i2np.DatabaseLookupMessage; import net.i2p.data.i2np.DatabaseSearchReplyMessage; import net.i2p.data.i2np.DatabaseStoreMessage; @@ -38,6 +39,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad private static String _alwaysQuery; private final Set _verifiesInProgress; private FloodThrottler _floodThrottler; + private LookupThrottler _lookupThrottler; public FloodfillNetworkDatabaseFacade(RouterContext context) { super(context); @@ -63,11 +65,12 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad public void startup() { super.startup(); _context.jobQueue().addJob(new FloodfillMonitorJob(_context, this)); + _lookupThrottler = new LookupThrottler(); } @Override protected void createHandlers() { - _context.inNetMessagePool().registerHandlerJobBuilder(DatabaseLookupMessage.MESSAGE_TYPE, new FloodfillDatabaseLookupMessageHandler(_context)); + _context.inNetMessagePool().registerHandlerJobBuilder(DatabaseLookupMessage.MESSAGE_TYPE, new FloodfillDatabaseLookupMessageHandler(_context, this)); _context.inNetMessagePool().registerHandlerJobBuilder(DatabaseStoreMessage.MESSAGE_TYPE, new FloodfillDatabaseStoreMessageHandler(_context, this)); } @@ -103,6 +106,22 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad } } + /** + * Increments and tests. + * @since 0.7.11 + */ + boolean shouldThrottleFlood(Hash key) { + return _floodThrottler != null && _floodThrottler.shouldThrottle(key); + } + + /** + * Increments and tests. + * @since 0.7.11 + */ + boolean shouldThrottleLookup(Hash from, TunnelId id) { + return _lookupThrottler.shouldThrottle(from, id); + } + private static final int MAX_TO_FLOOD = 7; /** @@ -116,13 +135,6 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad key = ((LeaseSet)ds).getDestination().calculateHash(); else key = ((RouterInfo)ds).getIdentity().calculateHash(); - // DOS prevention - if (_floodThrottler != null && _floodThrottler.shouldThrottle(key)) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Too many recent stores, not flooding key: " + key); - _context.statManager().addRateData("netDb.floodThrottled", 1, 0); - return; - } Hash rkey = _context.routingKeyGenerator().getRoutingKey(key); FloodfillPeerSelector sel = (FloodfillPeerSelector)getPeerSelector(); List peers = sel.selectFloodfillParticipants(rkey, MAX_TO_FLOOD, getKBuckets()); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java index d57f3bf97..452d8a60b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -54,9 +54,9 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { String invalidMessage = null; boolean wasNew = false; RouterInfo prevNetDb = null; + Hash key = _message.getKey(); if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) { getContext().statManager().addRateData("netDb.storeLeaseSetHandled", 1, 0); - Hash key = _message.getKey(); if (_log.shouldLog(Log.INFO)) _log.info("Handling dbStore of leaseset " + _message); //_log.info("Handling dbStore of leasset " + key + " with expiration of " @@ -92,7 +92,6 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { } } else if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_ROUTERINFO) { getContext().statManager().addRateData("netDb.storeRouterInfoHandled", 1, 0); - Hash key = _message.getKey(); if (_log.shouldLog(Log.INFO)) _log.info("Handling dbStore of router " + key + " with publishDate of " + new Date(_message.getRouterInfo().getPublished())); @@ -163,6 +162,14 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { FloodfillNetworkDatabaseFacade.floodfillEnabled(getContext()) && _message.getReplyToken() > 0) { if (wasNew) { + // DOS prevention + // Note this does not throttle the ack above + if (_facade.shouldThrottleFlood(key)) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Too many recent stores, not flooding key: " + key); + getContext().statManager().addRateData("netDb.floodThrottled", 1, 0); + return; + } long floodBegin = System.currentTimeMillis(); if (_message.getValueType() == DatabaseStoreMessage.KEY_TYPE_LEASESET) _facade.flood(_message.getLeaseSet()); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java new file mode 100644 index 000000000..b4cef3621 --- /dev/null +++ b/router/java/src/net/i2p/router/networkdb/kademlia/LookupThrottler.java @@ -0,0 +1,70 @@ +package net.i2p.router.networkdb.kademlia; + +import net.i2p.data.Hash; +import net.i2p.data.TunnelId; +import net.i2p.util.ObjectCounter; +import net.i2p.util.SimpleScheduler; +import net.i2p.util.SimpleTimer; + +/** + * Count how often we have recently received a lookup request with + * the reply specified to go to a peer/TunnelId pair. + * This offers basic DOS protection but is not a complete solution. + * The reply peer/tunnel could be spoofed, for example. + * And a requestor could have up to 6 reply tunnels. + * + * @since 0.7.11 + */ +class LookupThrottler { + private ObjectCounter counter; + /** the id of this is -1 */ + private static final TunnelId DUMMY_ID = new TunnelId(); + /** this seems like plenty */ + private static final int MAX_LOOKUPS = 30; + private static final long CLEAN_TIME = 60*1000; + + LookupThrottler() { + this.counter = new ObjectCounter(); + SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME); + } + + /** + * increments before checking + * @param key non-null + * @param id null if for direct lookups + */ + boolean shouldThrottle(Hash key, TunnelId id) { + return this.counter.increment(new ReplyTunnel(key, id)) > MAX_LOOKUPS; + } + + private class Cleaner implements SimpleTimer.TimedEvent { + public void timeReached() { + LookupThrottler.this.counter.clear(); + } + } + + /** yes, we could have a two-level lookup, or just do h.tostring() + id.tostring() */ + private static class ReplyTunnel { + public Hash h; + public TunnelId id; + + ReplyTunnel(Hash h, TunnelId id) { + this.h = h; + if (id != null) + this.id = id; + else + this.id = DUMMY_ID; + } + + @Override + public boolean equals(Object obj) { + return this.h.equals(((ReplyTunnel)obj).h) && + this.id.equals(((ReplyTunnel)obj).id); + } + + @Override + public int hashCode() { + return this.h.hashCode() + this.id.hashCode(); + } + } +} From 63d368565277286e9b8fb0a0dd591dc0750f776a Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:55:16 +0000 Subject: [PATCH 68/72] * Jetty: Turn on checkAliases --- installer/resources/wrapper.config | 21 +++++++++++++-------- router/java/src/net/i2p/router/Router.java | 6 ++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/installer/resources/wrapper.config b/installer/resources/wrapper.config index 3fbe0375e..380f94bc6 100644 --- a/installer/resources/wrapper.config +++ b/installer/resources/wrapper.config @@ -57,18 +57,23 @@ wrapper.java.library.path.2=$INSTALL_PATH/lib # Numbers must be consecutive (except for stripquotes) wrapper.java.additional.1=-DloggerFilenameOverride=logs/log-router-@.txt wrapper.java.additional.2=-Dorg.mortbay.http.Version.paranoid=true -wrapper.java.additional.3=-Dorg.mortbay.util.FileResource.checkAliases=false -wrapper.java.additional.4=-Dorg.mortbay.xml.XmlParser.NotValidating=true -wrapper.java.additional.5=-Di2p.dir.base="$INSTALL_PATH" -wrapper.java.additional.5.stripquotes=TRUE +wrapper.java.additional.3=-Dorg.mortbay.xml.XmlParser.NotValidating=true +wrapper.java.additional.4=-Di2p.dir.base="$INSTALL_PATH" +wrapper.java.additional.4.stripquotes=TRUE +# Jetty says this is a security risk +# Uncommenting this won't help as the router forces it to true +# If you really need this, you have to set it in jetty.xml +# somehow - not sure exactly but here's a clue: +# org.mortbay.util.FileResource.setCheckAliases(false) +# wrapper.java.additional.5=-Dorg.mortbay.util.FileResource.checkAliases=false # PORTABLE installation: # uncomment the following -#wrapper.java.additional.6=-Di2p.dir.pid="$INSTALL_PATH" +#wrapper.java.additional.5=-Di2p.dir.pid="$INSTALL_PATH" +#wrapper.java.additional.5.stripquotes=TRUE +#wrapper.java.additional.6=-Di2p.dir.temp="$INSTALL_PATH" #wrapper.java.additional.6.stripquotes=TRUE -#wrapper.java.additional.7=-Di2p.dir.temp="$INSTALL_PATH" +#wrapper.java.additional.7=-Di2p.dir.config="$INSTALL_PATH" #wrapper.java.additional.7.stripquotes=TRUE -#wrapper.java.additional.8=-Di2p.dir.config="$INSTALL_PATH" -#wrapper.java.additional.8.stripquotes=TRUE # # Uncomment this for better performance. # If it doesn't work, server mode is not available in your JVM. diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 77a73f65a..b730d6d4a 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -105,6 +105,12 @@ public class Router { System.setProperty("user.timezone", "GMT"); // just in case, lets make it explicit... TimeZone.setDefault(TimeZone.getTimeZone("GMT")); + // https://www.kb.cert.org/vuls/id/402580 + // http://docs.codehaus.org/display/JETTY/SystemProperties + // Fixed in Jetty 5.1.15 but we are running 5.1.12 + // The default is true, unfortunately it was previously + // set to false in wrapper.config thru 0.7.10 so we must set it back here. + System.setProperty("Dorg.mortbay.util.FileResource.checkAliases", "true"); } public Router() { this(null, null); } From f86f2701ff22af2ee24263d542a3a20331d96764 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 29 Jan 2010 13:57:57 +0000 Subject: [PATCH 69/72] - Speed up some hashcode() and equals() - Cleanup and javadoc --- core/java/src/net/i2p/data/Address.java | 8 ++-- core/java/src/net/i2p/data/Certificate.java | 4 +- core/java/src/net/i2p/data/Destination.java | 6 +-- core/java/src/net/i2p/data/Lease.java | 20 ++++---- core/java/src/net/i2p/data/LeaseSet.java | 46 ++++++++++++------- core/java/src/net/i2p/data/Payload.java | 14 +++--- core/java/src/net/i2p/data/RouterAddress.java | 8 ++-- .../java/src/net/i2p/data/RouterIdentity.java | 6 +-- core/java/src/net/i2p/data/RouterInfo.java | 39 ++++++++-------- core/java/src/net/i2p/data/TunnelId.java | 6 +-- history.txt | 13 ++++++ .../src/net/i2p/router/RouterVersion.java | 2 +- .../router/startup/CreateRouterInfoJob.java | 3 +- .../networkdb/kademlia/RouterGenerator.java | 5 +- 14 files changed, 108 insertions(+), 72 deletions(-) diff --git a/core/java/src/net/i2p/data/Address.java b/core/java/src/net/i2p/data/Address.java index a34f773f3..fb87f988e 100644 --- a/core/java/src/net/i2p/data/Address.java +++ b/core/java/src/net/i2p/data/Address.java @@ -64,16 +64,16 @@ public class Address extends DataStructureImpl { @Override public int hashCode() { - return DataHelper.hashCode(getHostname()) - + DataHelper.hashCode(getDestination()); + return DataHelper.hashCode(_hostname) + + DataHelper.hashCode(_destination); } @Override public String toString() { StringBuilder buf = new StringBuilder(64); buf.append("[Address: "); - buf.append("\n\tHostname: ").append(getHostname()); - buf.append("\n\tDestination: ").append(getDestination()); + buf.append("\n\tHostname: ").append(_hostname); + buf.append("\n\tDestination: ").append(_destination); buf.append("]"); return buf.toString(); } diff --git a/core/java/src/net/i2p/data/Certificate.java b/core/java/src/net/i2p/data/Certificate.java index f20f8322b..9518baab4 100644 --- a/core/java/src/net/i2p/data/Certificate.java +++ b/core/java/src/net/i2p/data/Certificate.java @@ -140,11 +140,11 @@ public class Certificate extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof Certificate)) return false; Certificate cert = (Certificate) object; - return getCertificateType() == cert.getCertificateType() && DataHelper.eq(getPayload(), cert.getPayload()); + return _type == cert.getCertificateType() && DataHelper.eq(_payload, cert.getPayload()); } @Override public int hashCode() { - return getCertificateType() + DataHelper.hashCode(getPayload()); + return _type + DataHelper.hashCode(_payload); } @Override public String toString() { diff --git a/core/java/src/net/i2p/data/Destination.java b/core/java/src/net/i2p/data/Destination.java index bebfde69e..2e01271e6 100644 --- a/core/java/src/net/i2p/data/Destination.java +++ b/core/java/src/net/i2p/data/Destination.java @@ -129,9 +129,9 @@ public class Destination extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof Destination)) return false; Destination dst = (Destination) object; - return DataHelper.eq(getCertificate(), dst.getCertificate()) - && DataHelper.eq(getSigningPublicKey(), dst.getSigningPublicKey()) - && DataHelper.eq(getPublicKey(), dst.getPublicKey()); + return DataHelper.eq(_certificate, dst.getCertificate()) + && DataHelper.eq(_signingKey, dst.getSigningPublicKey()) + && DataHelper.eq(_publicKey, dst.getPublicKey()); } /** the public key has enough randomness in it to use it by itself for speed */ diff --git a/core/java/src/net/i2p/data/Lease.java b/core/java/src/net/i2p/data/Lease.java index 7a5bde743..850763983 100644 --- a/core/java/src/net/i2p/data/Lease.java +++ b/core/java/src/net/i2p/data/Lease.java @@ -77,11 +77,13 @@ public class Lease extends DataStructureImpl { * Transient attribute of the lease, used to note how many times messages sent * to the destination through the current lease were successful. * + * @deprecated unused */ public int getNumSuccess() { return _numSuccess; } + /** @deprecated unused */ public void setNumSuccess(int num) { _numSuccess = num; } @@ -90,11 +92,13 @@ public class Lease extends DataStructureImpl { * Transient attribute of the lease, used to note how many times messages sent * to the destination through the current lease failed. * + * @deprecated unused */ public int getNumFailure() { return _numFailure; } + /** @deprecated unused */ public void setNumFailure(int num) { _numFailure = num; } @@ -131,25 +135,25 @@ public class Lease extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof Lease)) return false; Lease lse = (Lease) object; - return DataHelper.eq(getEndDate(), lse.getEndDate()) - && DataHelper.eq(getTunnelId(), lse.getTunnelId()) - && DataHelper.eq(getGateway(), lse.getGateway()); + return DataHelper.eq(_end, lse.getEndDate()) + && DataHelper.eq(_tunnelId, lse.getTunnelId()) + && DataHelper.eq(_gateway, lse.getGateway()); } @Override public int hashCode() { - return DataHelper.hashCode(getEndDate()) + DataHelper.hashCode(getGateway()) - + DataHelper.hashCode(getTunnelId()); + return DataHelper.hashCode(_end) + DataHelper.hashCode(_gateway) + + DataHelper.hashCode(_tunnelId); } @Override public String toString() { StringBuilder buf = new StringBuilder(128); buf.append("[Lease: "); - buf.append("\n\tEnd Date: ").append(getEndDate()); - buf.append("\n\tGateway: ").append(getGateway()); - buf.append("\n\tTunnelId: ").append(getTunnelId()); + buf.append("\n\tEnd Date: ").append(_end); + buf.append("\n\tGateway: ").append(_gateway); + buf.append("\n\tTunnelId: ").append(_tunnelId); buf.append("]"); return buf.toString(); } diff --git a/core/java/src/net/i2p/data/LeaseSet.java b/core/java/src/net/i2p/data/LeaseSet.java index 4a683c257..4598a27ff 100644 --- a/core/java/src/net/i2p/data/LeaseSet.java +++ b/core/java/src/net/i2p/data/LeaseSet.java @@ -46,6 +46,13 @@ import net.i2p.util.RandomSource; * writeBytes() will output the original encrypted * leases and the original leaseset signature. * + * Revocation (zero leases) isn't used anywhere. In addition: + * - A revoked leaseset has an EarliestLeaseDate of -1, so it will + * never be stored successfully. + * - Revocation of an encrypted leaseset will explode. + * - So having an included signature at all is pointless? + * + * * @author jrandom */ public class LeaseSet extends DataStructureImpl { @@ -54,7 +61,7 @@ public class LeaseSet extends DataStructureImpl { private PublicKey _encryptionKey; private SigningPublicKey _signingKey; // Keep leases in the order received, or else signature verification will fail! - private List _leases; + private List _leases; private Signature _signature; private volatile Hash _currentRoutingKey; private volatile byte[] _routingKeyGenMod; @@ -62,7 +69,7 @@ public class LeaseSet extends DataStructureImpl { // Store these since isCurrent() and getEarliestLeaseDate() are called frequently private long _firstExpiration; private long _lastExpiration; - private List _decryptedLeases; + private List _decryptedLeases; private boolean _decrypted; private boolean _checked; @@ -75,7 +82,7 @@ public class LeaseSet extends DataStructureImpl { setSigningKey(null); setSignature(null); setRoutingKey(null); - _leases = new ArrayList(); + _leases = new ArrayList(MAX_LEASES); _routingKeyGenMod = null; _receivedAsPublished = false; _firstExpiration = Long.MAX_VALUE; @@ -100,6 +107,7 @@ public class LeaseSet extends DataStructureImpl { _encryptionKey = encryptionKey; } + /** @deprecated unused */ public SigningPublicKey getSigningKey() { return _signingKey; } @@ -130,6 +138,10 @@ public class LeaseSet extends DataStructureImpl { _lastExpiration = expire; } + /** + * @return 0-6 + * A LeaseSet with no leases is revoked. + */ public int getLeaseCount() { if (isEncrypted()) return _leases.size() - 1; @@ -208,6 +220,7 @@ public class LeaseSet extends DataStructureImpl { /** * Verify that the signature matches the lease set's destination's signing public key. + * OR the included revocation key. * * @return true only if the signature matches */ @@ -216,17 +229,18 @@ public class LeaseSet extends DataStructureImpl { if (getDestination() == null) return false; byte data[] = getBytes(); if (data == null) return false; - boolean signedByDest = DSAEngine.getInstance().verifySignature(getSignature(), data, - getDestination().getSigningPublicKey()); + boolean signedByDest = DSAEngine.getInstance().verifySignature(_signature, data, + _destination.getSigningPublicKey()); boolean signedByRevoker = false; if (!signedByDest) { - signedByRevoker = DSAEngine.getInstance().verifySignature(getSignature(), data, _signingKey); + signedByRevoker = DSAEngine.getInstance().verifySignature(_signature, data, _signingKey); } return signedByDest || signedByRevoker; } /** * Verify that the signature matches the lease set's destination's signing public key. + * OR the specified revocation key. * * @return true only if the signature matches */ @@ -235,11 +249,11 @@ public class LeaseSet extends DataStructureImpl { if (getDestination() == null) return false; byte data[] = getBytes(); if (data == null) return false; - boolean signedByDest = DSAEngine.getInstance().verifySignature(getSignature(), data, - getDestination().getSigningPublicKey()); + boolean signedByDest = DSAEngine.getInstance().verifySignature(_signature, data, + _destination.getSigningPublicKey()); boolean signedByRevoker = false; if (!signedByDest) { - signedByRevoker = DSAEngine.getInstance().verifySignature(getSignature(), data, signingKey); + signedByRevoker = DSAEngine.getInstance().verifySignature(_signature, data, signingKey); } return signedByDest || signedByRevoker; } @@ -339,9 +353,9 @@ public class LeaseSet extends DataStructureImpl { LeaseSet ls = (LeaseSet) object; return DataHelper.eq(getEncryptionKey(), ls.getEncryptionKey()) && //DataHelper.eq(getVersion(), ls.getVersion()) && - DataHelper.eq(_leases, ls._leases) && DataHelper.eq(getSignature(), ls.getSignature()) - && DataHelper.eq(getSigningKey(), ls.getSigningKey()) - && DataHelper.eq(getDestination(), ls.getDestination()); + DataHelper.eq(_leases, ls._leases) && DataHelper.eq(_signature, ls.getSignature()) + && DataHelper.eq(_signingKey, ls.getSigningKey()) + && DataHelper.eq(_destination, ls.getDestination()); } @@ -357,11 +371,11 @@ public class LeaseSet extends DataStructureImpl { public String toString() { StringBuilder buf = new StringBuilder(128); buf.append("[LeaseSet: "); - buf.append("\n\tDestination: ").append(getDestination()); - buf.append("\n\tEncryptionKey: ").append(getEncryptionKey()); - buf.append("\n\tSigningKey: ").append(getSigningKey()); + buf.append("\n\tDestination: ").append(_destination); + buf.append("\n\tEncryptionKey: ").append(_encryptionKey); + buf.append("\n\tSigningKey: ").append(_signingKey); //buf.append("\n\tVersion: ").append(getVersion()); - buf.append("\n\tSignature: ").append(getSignature()); + buf.append("\n\tSignature: ").append(_signature); buf.append("\n\tLeases: #").append(getLeaseCount()); for (int i = 0; i < getLeaseCount(); i++) buf.append("\n\t\tLease (").append(i).append("): ").append(getLease(i)); diff --git a/core/java/src/net/i2p/data/Payload.java b/core/java/src/net/i2p/data/Payload.java index 5f3af7c16..a16a64418 100644 --- a/core/java/src/net/i2p/data/Payload.java +++ b/core/java/src/net/i2p/data/Payload.java @@ -96,13 +96,13 @@ public class Payload extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof Payload)) return false; Payload p = (Payload) object; - return DataHelper.eq(getUnencryptedData(), p.getUnencryptedData()) - && DataHelper.eq(getEncryptedData(), p.getEncryptedData()); + return DataHelper.eq(_unencryptedData, p.getUnencryptedData()) + && DataHelper.eq(_encryptedData, p.getEncryptedData()); } @Override public int hashCode() { - return DataHelper.hashCode(getUnencryptedData()); + return DataHelper.hashCode(_unencryptedData); } @Override @@ -110,11 +110,11 @@ public class Payload extends DataStructureImpl { if (true) return "[Payload]"; StringBuilder buf = new StringBuilder(128); buf.append("[Payload: "); - if (getUnencryptedData() != null) - buf.append("\n\tData: ").append(DataHelper.toString(getUnencryptedData(), 16)); + if (_unencryptedData != null) + buf.append("\n\tData: ").append(DataHelper.toString(_unencryptedData, 16)); else - buf.append("\n\tData: *encrypted* = [").append(DataHelper.toString(getEncryptedData(), 16)).append("]"); + buf.append("\n\tData: *encrypted* = [").append(DataHelper.toString(_encryptedData, 16)).append("]"); buf.append("]"); return buf.toString(); } -} \ No newline at end of file +} diff --git a/core/java/src/net/i2p/data/RouterAddress.java b/core/java/src/net/i2p/data/RouterAddress.java index 0f03d9d34..4d49d67a7 100644 --- a/core/java/src/net/i2p/data/RouterAddress.java +++ b/core/java/src/net/i2p/data/RouterAddress.java @@ -122,15 +122,15 @@ public class RouterAddress extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof RouterAddress)) return false; RouterAddress addr = (RouterAddress) object; - return DataHelper.eq(getCost(), addr.getCost()) && DataHelper.eq(getExpiration(), addr.getExpiration()) - && DataHelper.eq(getOptions(), addr.getOptions()) - && DataHelper.eq(getTransportStyle(), addr.getTransportStyle()); + return DataHelper.eq(_cost, addr.getCost()) && DataHelper.eq(_expiration, addr.getExpiration()) + && DataHelper.eq(_options, addr.getOptions()) + && DataHelper.eq(_transportStyle, addr.getTransportStyle()); } /** the style should be sufficient, for speed */ @Override public int hashCode() { - return DataHelper.hashCode(getTransportStyle()); + return DataHelper.hashCode(_transportStyle); } @Override diff --git a/core/java/src/net/i2p/data/RouterIdentity.java b/core/java/src/net/i2p/data/RouterIdentity.java index 94f4760c1..095b54f44 100644 --- a/core/java/src/net/i2p/data/RouterIdentity.java +++ b/core/java/src/net/i2p/data/RouterIdentity.java @@ -96,9 +96,9 @@ public class RouterIdentity extends DataStructureImpl { public boolean equals(Object object) { if ((object == null) || !(object instanceof RouterIdentity)) return false; RouterIdentity ident = (RouterIdentity) object; - return DataHelper.eq(getCertificate(), ident.getCertificate()) - && DataHelper.eq(getSigningPublicKey(), ident.getSigningPublicKey()) - && DataHelper.eq(getPublicKey(), ident.getPublicKey()); + return DataHelper.eq(_certificate, ident.getCertificate()) + && DataHelper.eq(_signingKey, ident.getSigningPublicKey()) + && DataHelper.eq(_publicKey, ident.getPublicKey()); } /** the public key has enough randomness in it to use it by itself for speed */ diff --git a/core/java/src/net/i2p/data/RouterInfo.java b/core/java/src/net/i2p/data/RouterInfo.java index 523fc45dc..3f4caa711 100644 --- a/core/java/src/net/i2p/data/RouterInfo.java +++ b/core/java/src/net/i2p/data/RouterInfo.java @@ -37,8 +37,8 @@ public class RouterInfo extends DataStructureImpl { private final static Log _log = new Log(RouterInfo.class); private RouterIdentity _identity; private volatile long _published; - private final Set _addresses; - private final Set _peers; + private final Set _addresses; + private final Set _peers; private /* FIXME final FIXME */ Properties _options; private volatile Signature _signature; private volatile Hash _currentRoutingKey; @@ -61,8 +61,8 @@ public class RouterInfo extends DataStructureImpl { public RouterInfo() { setIdentity(null); setPublished(0); - _addresses = new HashSet(); - _peers = new HashSet(); + _addresses = new HashSet(2); + _peers = new HashSet(0); _options = new OrderedProperties(); setSignature(null); _validated = false; @@ -132,7 +132,7 @@ public class RouterInfo extends DataStructureImpl { * router can be contacted. * */ - public Set getAddresses() { + public Set getAddresses() { synchronized (_addresses) { return new HashSet(_addresses); } @@ -143,7 +143,7 @@ public class RouterInfo extends DataStructureImpl { * can be contacted. * */ - public void setAddresses(Set addresses) { + public void setAddresses(Set addresses) { synchronized (_addresses) { _addresses.clear(); if (addresses != null) _addresses.addAll(addresses); @@ -152,20 +152,22 @@ public class RouterInfo extends DataStructureImpl { } /** - * Retrieve a set of SHA-256 hashes of RouterIdentities from rotuers + * Retrieve a set of SHA-256 hashes of RouterIdentities from routers * this router can be reached through. * + * @deprecated Implemented here but unused elsewhere */ - public Set getPeers() { + public Set getPeers() { return _peers; } /** - * Specify a set of SHA-256 hashes of RouterIdentities from rotuers + * Specify a set of SHA-256 hashes of RouterIdentities from routers * this router can be reached through. * + * @deprecated Implemented here but unused elsewhere */ - public void setPeers(Set peers) { + public void setPeers(Set peers) { synchronized (_peers) { _peers.clear(); if (peers != null) _peers.addAll(peers); @@ -277,6 +279,7 @@ public class RouterInfo extends DataStructureImpl { // answer: they're always empty... they're a placeholder for one particular // method of trusted links, which isn't implemented in the router // at the moment, and may not be later. + // fixme to reduce objects - if (_peers == null) write 0 DataHelper.writeLong(out, 1, _peers.size()); List peers = DataHelper.sortStructures(_peers); for (Iterator iter = peers.iterator(); iter.hasNext();) { @@ -401,7 +404,7 @@ public class RouterInfo extends DataStructureImpl { RoutingKeyGenerator gen = RoutingKeyGenerator.getInstance(); if ((gen.getModData() == null) || (_routingKeyGenMod == null) || (!DataHelper.eq(gen.getModData(), _routingKeyGenMod))) { - setRoutingKey(gen.getRoutingKey(getIdentity().getHash())); + setRoutingKey(gen.getRoutingKey(_identity.getHash())); _routingKeyGenMod = gen.getModData(); } return _currentRoutingKey; @@ -412,7 +415,7 @@ public class RouterInfo extends DataStructureImpl { } public boolean validateRoutingKey() { - Hash identKey = getIdentity().getHash(); + Hash identKey = _identity.getHash(); Hash rk = RoutingKeyGenerator.getInstance().getRoutingKey(identKey); if (rk.equals(getRoutingKey())) return true; @@ -430,7 +433,7 @@ public class RouterInfo extends DataStructureImpl { */ public boolean isCurrent(long maxAgeMs) { long earliestExpire = Clock.getInstance().now() - maxAgeMs; - if (getPublished() < earliestExpire) + if (_published < earliestExpire) return false; return true; @@ -550,7 +553,7 @@ public class RouterInfo extends DataStructureImpl { RouterInfo info = (RouterInfo) object; return DataHelper.eq(_identity, info.getIdentity()) && DataHelper.eq(_signature, info.getSignature()) - && DataHelper.eq(getPublished(), info.getPublished()) + && DataHelper.eq(_published, info.getPublished()) && DataHelper.eq(_addresses, info.getAddresses()) && DataHelper.eq(_options, info.getOptions()) && DataHelper.eq(_peers, info.getPeers()); @@ -559,7 +562,7 @@ public class RouterInfo extends DataStructureImpl { @Override public int hashCode() { if (!_hashCodeInitialized) { - _hashCode = DataHelper.hashCode(_identity) + (int) getPublished(); + _hashCode = DataHelper.hashCode(_identity) + (int) _published; _hashCodeInitialized = true; } return _hashCode; @@ -570,9 +573,9 @@ public class RouterInfo extends DataStructureImpl { if (_stringified != null) return _stringified; StringBuilder buf = new StringBuilder(5*1024); buf.append("[RouterInfo: "); - buf.append("\n\tIdentity: ").append(getIdentity()); - buf.append("\n\tSignature: ").append(getSignature()); - buf.append("\n\tPublished on: ").append(new Date(getPublished())); + buf.append("\n\tIdentity: ").append(_identity); + buf.append("\n\tSignature: ").append(_signature); + buf.append("\n\tPublished on: ").append(new Date(_published)); Set addresses = _addresses; // getAddresses() buf.append("\n\tAddresses: #: ").append(addresses.size()); for (Iterator iter = addresses.iterator(); iter.hasNext();) { diff --git a/core/java/src/net/i2p/data/TunnelId.java b/core/java/src/net/i2p/data/TunnelId.java index c692d70c8..a8360fae1 100644 --- a/core/java/src/net/i2p/data/TunnelId.java +++ b/core/java/src/net/i2p/data/TunnelId.java @@ -83,14 +83,14 @@ public class TunnelId extends DataStructureImpl { public boolean equals(Object obj) { if ( (obj == null) || !(obj instanceof TunnelId)) return false; - return getTunnelId() == ((TunnelId)obj).getTunnelId(); + return _tunnelId == ((TunnelId)obj).getTunnelId(); } @Override public int hashCode() { - return (int)getTunnelId(); + return (int)_tunnelId; } @Override - public String toString() { return String.valueOf(getTunnelId()); } + public String toString() { return String.valueOf(_tunnelId); } } diff --git a/history.txt b/history.txt index 3dedc9645..a8d1aaf8a 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,16 @@ +2010-01-29 zzz + * build.xml: Add a debian-source target + * Data structures: + - Speed up some hashcode() and equals() + - Cleanup and javadoc + * Jetty: Turn on checkAliases + * NetDb: + - Add basic DOS prevention for lookups + - Move flood throttle check so we don't throttle ourselves + - Don't store over client tunnels to pre-0.7.10 floodfills + - Don't update unused lease fail stats + * Startup: Disable browser launch for debian daemon + 2010-01-28 welterde * enhance support for multiple RouterAddresses' of the same style in RouterInfo diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fb40e5644..687f8db2f 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 = ""; diff --git a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java index 979cefa78..5fbce84cd 100644 --- a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java +++ b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java @@ -56,7 +56,8 @@ public class CreateRouterInfoJob extends JobImpl { stats.setProperty(RouterInfo.PROP_NETWORK_ID, Router.NETWORK_ID+""); getContext().router().addCapabilities(info); info.setOptions(stats); - info.setPeers(new HashSet()); + // not necessary, in constructor + //info.setPeers(new HashSet()); info.setPublished(getCurrentPublishDate(getContext())); RouterIdentity ident = new RouterIdentity(); Certificate cert = getContext().router().createCertificate(); diff --git a/router/java/test/net/i2p/router/networkdb/kademlia/RouterGenerator.java b/router/java/test/net/i2p/router/networkdb/kademlia/RouterGenerator.java index b50168a3d..468ec4e05 100644 --- a/router/java/test/net/i2p/router/networkdb/kademlia/RouterGenerator.java +++ b/router/java/test/net/i2p/router/networkdb/kademlia/RouterGenerator.java @@ -92,8 +92,9 @@ public class RouterGenerator { RouterInfo info = new RouterInfo(); try { info.setAddresses(createAddresses(num)); - info.setOptions(new Properties()); - info.setPeers(new HashSet()); + // not necessary, in constructor + //info.setOptions(new Properties()); + //info.setPeers(new HashSet()); info.setPublished(Clock.getInstance().now()); RouterIdentity ident = new RouterIdentity(); BigInteger bv = new BigInteger(""+num); From 390981e10ca1be32a6556d4c6f7b6482549cf6ba Mon Sep 17 00:00:00 2001 From: sponge Date: Sat, 30 Jan 2010 05:26:30 +0000 Subject: [PATCH 70/72] Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream. Fix setkeys bug in DoCMDS, forgot to create the object before calling t's methods, which threw an NPE. --- apps/BOB/nbproject/private/private.xml | 4 ---- apps/BOB/src/net/i2p/BOB/DoCMDS.java | 1 + apps/BOB/src/net/i2p/BOB/TCPtoI2P.java | 10 ++++++++-- history.txt | 5 +++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/BOB/nbproject/private/private.xml b/apps/BOB/nbproject/private/private.xml index 4f83e8d30..c1f155a78 100644 --- a/apps/BOB/nbproject/private/private.xml +++ b/apps/BOB/nbproject/private/private.xml @@ -1,8 +1,4 @@ - - file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java - file:/usblv/NetBeansProjects/i2p.i2p/apps/BOB/src/net/i2p/BOB/MUXlisten.java - diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index dcb0a195d..2a149522b 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -691,6 +691,7 @@ public class DoCMDS implements Runnable { try { prikey = new ByteArrayOutputStream(); prikey.write(net.i2p.data.Base64.decode(Arg)); + d = new Destination(); d.fromBase64(Arg); } catch (Exception ex) { Arg = ""; diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java index a4a851c54..a537d942f 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java +++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java @@ -146,8 +146,14 @@ public class TCPtoI2P implements Runnable { input = line.toLowerCase(); Destination dest = null; if (input.endsWith(".i2p")) { - dest = I2PTunnel.destFromName(input); - line = dest.toBase64(); + try { + dest = I2PTunnel.destFromName(input); + line = dest.toBase64(); + } catch (NullPointerException npe) { + // Could not find the destination!? + Emsg("Can't find destination: " + input, out); + return; + } } dest = new Destination(); dest.fromBase64(line); diff --git a/history.txt b/history.txt index a8d1aaf8a..311a8c7c1 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2010-01-30 sponge + * Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream. + * Fix setkeys bug in DoCMDS, forgot to create the object before calling + it's methods, which threw an NPE. + 2010-01-29 zzz * build.xml: Add a debian-source target * Data structures: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 687f8db2f..8c54ff98c 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 = ""; From ed443fe0d648c1b02fb5ba6e0434465fee510808 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 31 Jan 2010 05:06:50 +0000 Subject: [PATCH 71/72] jetty 5.1.15 --- apps/i2psnark/jetty-i2psnark.xml | 17 +++++++++++ apps/jetty/build.xml | 28 +++++++++---------- build.xml | 3 +- history.txt | 4 +++ installer/resources/jetty.xml | 2 +- .../src/net/i2p/router/RouterVersion.java | 2 +- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/apps/i2psnark/jetty-i2psnark.xml b/apps/i2psnark/jetty-i2psnark.xml index 0d4c56112..b5d6d1ef8 100644 --- a/apps/i2psnark/jetty-i2psnark.xml +++ b/apps/i2psnark/jetty-i2psnark.xml @@ -58,6 +58,23 @@ webapps/i2psnark.war + + + + + /themes + ./docs/themes + + + + FALSE + + + + + + + diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index a334e11b9..133376d13 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -1,10 +1,10 @@ - - - - + + + + @@ -32,7 +32,6 @@ - @@ -47,12 +46,9 @@ - - - - + @@ -63,15 +59,16 @@ - + + - + - + @@ -81,7 +78,8 @@ - + + @@ -128,9 +126,9 @@ - + - + diff --git a/build.xml b/build.xml index e724ce058..d9f833f9e 100644 --- a/build.xml +++ b/build.xml @@ -255,7 +255,8 @@
    - + + diff --git a/history.txt b/history.txt index 311a8c7c1..ec3c07048 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2010-01-31 zzz + * i2psnark standalone: Fix CSS + * Jetty: Update to 5.1.15 to get ResourceHandler fix + 2010-01-30 sponge * Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream. * Fix setkeys bug in DoCMDS, forgot to create the object before calling diff --git a/installer/resources/jetty.xml b/installer/resources/jetty.xml index 9ff09e0bb..2f7f6791f 100644 --- a/installer/resources/jetty.xml +++ b/installer/resources/jetty.xml @@ -17,7 +17,7 @@ - + diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 8c54ff98c..e72c467bc 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 = ""; From bfd1306a566605c212e37bcb2237ce9ec5f3c177 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 31 Jan 2010 20:26:57 +0000 Subject: [PATCH 72/72] fix for missing tgz build error --- apps/jetty/build.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index 133376d13..ed1f4a60e 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -42,7 +42,12 @@ - + + + + + +