propagate from branch 'i2p.i2p.zzz.test4' (head 7b50b6c3d48da68078a86a53e55e2c18f55685e8)

to branch 'i2p.i2p' (head ebce577e19b70c281daacc5277f98e9bb2bb9630)
This commit is contained in:
zzz
2011-03-08 13:31:57 +00:00
183 changed files with 30058 additions and 11421 deletions

47
.tx/config Normal file
View File

@ -0,0 +1,47 @@
[I2P.i2ptunnel]
source_file = apps/i2ptunnel/locale/messages_en.po
source_lang = en
trans.de = apps/i2ptunnel/locale/messages_de.po
trans.nl = apps/i2ptunnel/locale/messages_nl.po
trans.ru = apps/i2ptunnel/locale/messages_ru.po
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
[I2P.routerconsole]
source_file = apps/routerconsole/locale/messages_en.po
source_lang = en
trans.de = apps/routerconsole/locale/messages_de.po
trans.es = apps/routerconsole/locale/messages_es.po
trans.fr = apps/routerconsole/locale/messages_fr.po
trans.nl = apps/routerconsole/locale/messages_nl.po
trans.ru = apps/routerconsole/locale/messages_ru.po
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
[I2P.susidns]
source_file = apps/susidns/locale/messages_en.po
source_lang = en
trans.de = apps/susidns/locale/messages_de.po
trans.nl = apps/susidns/locale/messages_nl.po
trans.ru = apps/susidns/locale/messages_ru.po
trans.zh_CN = apps/susidns/locale/messages_zh.po
[I2P.i2psnark]
source_file = apps/i2psnark/locale/messages_en.po
source_lang = en
trans.de = apps/i2psnark/locale/messages_de.po
trans.es = apps/i2psnark/locale/messages_es.po
trans.fr = apps/i2psnark/locale/messages_fr.po
trans.nl = apps/i2psnark/locale/messages_nl.po
trans.pt = apps/i2psnark/locale/messages_pt.po
trans.ru = apps/i2psnark/locale/messages_ru.po
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
[I2P.desktopgui]
source_file = apps/desktopgui/locale/messages_en.po
source_lang = en
trans.nl = apps/desktopgui/locale/messages_nl.po
trans.ru = apps/desktopgui/locale/messages_ru.po
trans.zh_CN = apps/desktopgui/locale/messages_zh.po
[main]
host = http://www.transifex.net

View File

@ -120,6 +120,7 @@ public class BOB {
public final static String PROP_CONFIG_LOCATION = "BOB.config";
public final static String PROP_BOB_PORT = "BOB.port";
public final static String PROP_BOB_HOST = "BOB.host";
public final static String PROP_CFG_VER = "BOB.CFG.VER";
private static NamedDB database;
private static Properties props = new Properties();
private static AtomicBoolean spin = new AtomicBoolean(true);
@ -209,30 +210,41 @@ public class BOB {
// Global router and client API configurations that are missing are set to defaults here.
if (!props.containsKey(I2PClient.PROP_TCP_HOST)) {
props.setProperty(I2PClient.PROP_TCP_HOST, "localhost");
save = true;
}
if (!props.containsKey(I2PClient.PROP_TCP_PORT)) {
props.setProperty(I2PClient.PROP_TCP_PORT, "7654");
}
if (!props.containsKey(I2PClient.PROP_RELIABILITY)) {
props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
save = true;
}
if (!props.containsKey(PROP_BOB_PORT)) {
props.setProperty(PROP_BOB_PORT, "2827"); // 0xB0B
save = true;
}
if (!props.containsKey("inbound.length")) {
props.setProperty("inbound.length", "1");
save = true;
}
if (!props.containsKey("outbound.length")) {
props.setProperty("outbound.length", "1");
save = true;
}
if (!props.containsKey("inbound.lengthVariance")) {
props.setProperty("inbound.lengthVariance", "0");
save = true;
}
if (!props.containsKey("outbound.lengthVariance")) {
props.setProperty("outbound.lengthVariance", "0");
save = true;
}
if (!props.containsKey(PROP_BOB_HOST)) {
props.setProperty(PROP_BOB_HOST, "localhost");
save = true;
}
// PROP_RELIABILITY_NONE, PROP_RELIABILITY_BEST_EFFORT, PROP_RELIABILITY_GUARANTEED
if (!props.containsKey(PROP_CFG_VER)) {
props.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE);
props.setProperty(PROP_CFG_VER,"1");
save = true;
}
if (save) {
File cfg = new File(configLocation);

View File

@ -107,7 +107,7 @@ public class DoCMDS implements Runnable {
private static final String C_visit = "visit";
private static final String C_zap = "zap";
/* all the coomands available, plus description */
/* all the commands available, plus description */
private static final String C_ALL[][] = {
{C_help, C_help + " <command> * Get help on a command."},
{C_clear, C_clear + " * Clear the current nickname out of the list."},
@ -962,7 +962,7 @@ public class DoCMDS implements Runnable {
} catch (Exception e) {
break die;
}
// Finally say OK.
// Finally say OK.
out.println("OK Nickname set to " + Arg);
}
@ -1472,7 +1472,7 @@ public class DoCMDS implements Runnable {
} // die
out.print("ERROR A really bad error just happened, ");
} // quit
// Say goodbye.
// Say goodbye.
out.println("OK Bye!");

View File

@ -38,6 +38,7 @@
<target name="compile" depends="init, depend">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -47,27 +48,52 @@
</javac>
</target>
<target name="jar" depends="compile">
<!-- unused for now, as we oddly ship addressbook as a .war -->
<target name="jar" depends="compile, changes">
<jar basedir="${build}" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="addressbook.Daemon"/>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes}" />
</manifest>
</jar>
</target>
<target name="war" depends="compile" unless="war.uptodate">
<target name="war" depends="compile, changes, warUpToDate" unless="war.uptodate">
<mkdir dir="${dist}/tmp"/>
<mkdir dir="${dist}/tmp/WEB-INF"/>
<mkdir dir="${dist}/tmp/WEB-INF/classes"/>
<copy todir="${dist}/tmp/WEB-INF/classes">
<fileset dir="${build}"/>
</copy>
<war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}"/>
<war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}">
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</war>
<delete dir="${dist}/tmp"/>
</target>
<uptodate property="war.uptodate" targetfile="${dist}/${war}">
<srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
</uptodate>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="${dist}/${war}">
<srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
</uptodate>
</target>
<target name="changes">
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
</project>

View File

@ -24,6 +24,7 @@
<target name="compile" depends="init">
<javac debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
srcdir="${src}" destdir="${build}">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -45,10 +46,27 @@
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar basedir="${build}" destfile="${dist}/${jar}">
<manifest>
<attribute name="Main-Class" value="net.i2p.desktopgui.Main"/>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
@ -78,6 +96,10 @@
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
</target>
<target name="dist" depends="jar" />

View File

@ -19,6 +19,14 @@ then
POUPDATE=1
fi
# on windows, one must specify the path of commnad find
# since windows has its own retarded version of find.
if which find|grep -q -i windows ; then
export PATH=.:/bin:/usr/local/bin:$PATH
fi
# Fast mode - update ondemond
# set LG2 to the language you need in envrionment varibales to enable this
# add ../java/ so the refs will work in the po file
JPATHS="src"
for i in locale/messages_*.po
@ -27,13 +35,17 @@ do
LG=${i#locale/messages_}
LG=${LG%.po}
# skip, if specified
if [ $LG2 ]; then
[ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only.
fi
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
find $JPATHS -name *.java -newer $i > $TMPFILE
fi
echo $LG
if [ -s build/net/i2p/desktopgui/messages_$LG.class -a \
build/net/i2p/desktopgui/messages_$LG.class -nt $i -a \
! -s $TMPFILE ]
@ -80,15 +92,19 @@ do
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
if [ "$LG" != "en" ]
then
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build
msgfmt --java --statistics -r $CLASS -l $LG -d build $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
# convert to class files in build
msgfmt --java --statistics -r $CLASS -l $LG -d build $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
fi
done
rm -f $TMPFILE
# todo: return failure

View File

@ -0,0 +1,55 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-20 11:53+0000\n"
"PO-Revision-Date: 2011-02-26 19:46-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "ابدأ I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "جاري تشغيل I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "جاري البدأ"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr " تشغيل متصفح I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "اعدادات"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "اعادة تشغيل"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "توقيف I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "اعدادات الأيقونة"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "هل ترغب في تفعيل الأيقونة؟"

View File

@ -0,0 +1,55 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr ""
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr ""
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr ""
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr ""
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr ""

View File

@ -1,3 +1,23 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: http://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-02-20 11:53+0000\n"
"PO-Revision-Date: 2011-02-20 12:15+0000\n"
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
"Language-Team: Dutch <>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "I2P starten"
@ -10,20 +30,26 @@ msgstr "I2P is aan het starten!"
msgid "Starting"
msgstr "Bezig met starten"
#: src/net/i2p/desktopgui/InternalTrayManager.java:25
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Start I2P Browser"
#: src/net/i2p/desktopgui/InternalTrayManager.java:49
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Configureer desktopgui"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "I2P herstarten"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "I2P stoppen"
#~ msgid "Browser not found"
#~ msgstr "Browser niet gevonden"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Systeemvak icoon configuratie"
#~ msgid "The default browser for your system was not found."
#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden."
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Systeemvak icoon inschakelen?"

View File

@ -0,0 +1,56 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the desktopgui package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-19 17:26+0000\n"
"PO-Revision-Date: 2011-02-23 10:23+0500\n"
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "Запустить I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P запускается!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Запускается"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Запустить I2P браузер"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Настроить desktopgui"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "Перезапустить I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "Остановить I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Настройка иконки в трее"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Отображать ли иконку в трее?"

View File

@ -0,0 +1,50 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-02-16 17:10+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "启动 I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "正在启动 I2P !"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "正在启动"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "正在启动I2P浏览器"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "界面设置"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "重启 I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "停止 I2P"
#. Translate interface
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:26
msgid "Should tray icon be enabled?"
msgstr "显示托盘图标。"
#~ msgid "Browser not found"
#~ msgstr "Browser niet gevonden"
#~ msgid "The default browser for your system was not found."
#~ msgstr "De standaard webbrowser voor je systeem werd niet gevonden."

View File

@ -6,6 +6,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.SwingWorker;
import net.i2p.desktopgui.gui.DesktopguiConfigurationFrame;
import net.i2p.desktopgui.router.RouterManager;
import net.i2p.desktopgui.util.BrowseException;
@ -46,6 +47,23 @@ public class InternalTrayManager extends TrayManager {
}.execute();
}
});
MenuItem desktopguiConfigurationLauncher = new MenuItem(_("Configure desktopgui"));
desktopguiConfigurationLauncher.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new SwingWorker<Object, Object>() {
@Override
protected Object doInBackground() throws Exception {
new DesktopguiConfigurationFrame().setVisible(true);
return null;
}
}.execute();
}
});
MenuItem restartItem = new MenuItem(_("Restart I2P"));
restartItem.addActionListener(new ActionListener() {
@ -85,6 +103,8 @@ public class InternalTrayManager extends TrayManager {
popup.add(browserLauncher);
popup.addSeparator();
popup.add(desktopguiConfigurationLauncher);
popup.addSeparator();
popup.add(restartItem);
popup.add(stopItem);

View File

@ -55,19 +55,15 @@ public class Main {
* Main method launching the application.
*/
public static void beginStartup(String[] args) {
boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue();
if(wasHeadless) {
System.setProperty("java.awt.headless", "false");
}
boolean headless_check = true;
try {
// X permissions error is a java.lang.InternalError (a Throwable)
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
headless_check = ge.isHeadlessInstance();
} catch (Throwable t) {}
if (wasHeadless)
System.setProperty("java.awt.headless", "true");
if (headless_check) {
String headless = System.getProperty("java.awt.headless");
boolean isHeadless = Boolean.parseBoolean(headless);
if(isHeadless) {
log.warn("Headless environment: not starting desktopgui!");
return;
}
}
catch(Exception e) {
return;
}
try {

View File

@ -0,0 +1,132 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ConfigurationFrame.java
*
* Created on Feb 16, 2011, 8:03:14 AM
*/
package net.i2p.desktopgui.gui;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.i2p.desktopgui.i18n.DesktopguiTranslator;
import net.i2p.desktopgui.router.RouterManager;
/**
*
* @author mathias
*/
public class DesktopguiConfigurationFrame extends javax.swing.JFrame {
/** Creates new form ConfigurationFrame */
public DesktopguiConfigurationFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
desktopguiEnabled = new javax.swing.JCheckBox();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(_("Tray icon configuration"));
desktopguiEnabled.setSelected(true);
desktopguiEnabled.setText(_("Should tray icon be enabled?"));
desktopguiEnabled.setActionCommand("shouldDesktopguiBeEnabled");
okButton.setText("OK");
okButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
okButtonMouseReleased(evt);
}
});
cancelButton.setText("Cancel");
cancelButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
cancelButtonMouseReleased(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(desktopguiEnabled)
.addGroup(layout.createSequentialGroup()
.addComponent(okButton)
.addGap(18, 18, 18)
.addComponent(cancelButton)))
.addContainerGap(237, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(desktopguiEnabled)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(okButton)
.addComponent(cancelButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cancelButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cancelButtonMouseReleased
System.out.println("Cancelling configuration change.");
this.dispose();
}//GEN-LAST:event_cancelButtonMouseReleased
private void okButtonMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_okButtonMouseReleased
configureDesktopgui();
}//GEN-LAST:event_okButtonMouseReleased
protected static String _(String s) {
return DesktopguiTranslator._(s);
}
private void configureDesktopgui() {
String property = "desktopgui.enabled";
String value;
if(!desktopguiEnabled.isSelected()) {
value = "false";
System.out.println("Disabling desktopgui");
}
else {
value = "true";
System.out.println("Enabling desktopgui");
}
try {
RouterManager.getRouterContext().setProperty(property, value);
} catch (Exception ex) {
Logger.getLogger(DesktopguiConfigurationFrame.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Applying desktopgui configuration!");
this.dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cancelButton;
private javax.swing.JCheckBox desktopguiEnabled;
private javax.swing.JButton okButton;
// End of variables declaration//GEN-END:variables
}

View File

@ -1,17 +0,0 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

View File

@ -30,18 +30,41 @@
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="builddep, compile">
<target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value=".." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class">
<manifest>
<attribute name="Main-Class" value="org.klomp.snark.Snark" />
<attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/i2psnark.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class" />
</uptodate>
</target>
<!-- Ideally we would include
- only include the servlet, everything else is in the jar.
- However, the wrapper.config classpath in existing installs
@ -49,25 +72,36 @@
- So we must continue to duplicate everything in the war.
<classes dir="./build/obj" includes="**/I2PSnarkServlet*.class" />
-->
<target name="war" depends="jar, bundle">
<target name="war" depends="jar, bundle, warUpToDate" unless="war.uptodate" >
<war destfile="../i2psnark.war" webxml="../web.xml" basedir="../" includes="_icons/*" >
<!-- include only the web stuff, as of 0.7.12 the router will add i2psnark.jar to the classpath for the war -->
<classes dir="./build/obj" includes="**/web/*.class" />
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes}" />
</manifest>
</war>
</target>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="../i2psnark.war" >
<srcfiles dir= "." includes="build/obj/org/klomp/snark/web/*.class ../_icons/* ../web.xml" />
</uptodate>
</target>
<target name="bundle" depends="compile">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="false" >
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="false" >
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="false" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
</target>
@ -81,9 +115,8 @@
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="true" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
</target>

View File

@ -1,26 +0,0 @@
@echo off
set Callfrom=%cd%
set Paras=%1
rem before calling make sure you have msys and mingw 's "bin" path
rem in your current searching path
rem type "set path" to check
if not exist ..\locale\*.only goto updateALL
rem put a messages_xx.only(eg messages_zh.only) into locale folder
rem this script will only touch the po file(eg zh) you specified, leaving other po files untact.
for %%i in (..\locale\*.only) do set PO=%%~ni
echo [Notice] Yu choose to Ony update the choosen file: %PO%.po
for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po-
call sh --login %cd%\bmsg.sh
for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po
goto end
:updateALL
call sh --login %cd%\bmsg.sh
:end
echo End of Message Bundling

View File

@ -18,6 +18,14 @@ then
POUPDATE=1
fi
# on windows, one must specify the path of commnad find
# since windows has its own retarded version of find.
if which find|grep -q -i windows ; then
export PATH=.:/bin:/usr/local/bin:$PATH
fi
# Fast mode - update ondemond
# set LG2 to the language you need in envrionment varibales to enable this
# add ../java/ so the refs will work in the po file
JPATHS="../java/src"
for i in ../locale/messages_*.po
@ -26,6 +34,11 @@ do
LG=${i#../locale/messages_}
LG=${LG%.po}
# skip, if specified
if [ $LG2 ]; then
[ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only.
fi
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
@ -70,15 +83,19 @@ do
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
if [ "$LG" != "en" ]
then
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
fi
done
rm -f $TMPFILE
# todo: return failure

View File

@ -134,7 +134,7 @@ public class I2PSnarkUtil {
}
/**
* @param KBps
* @param limit KBps
*/
public void setMaxUpBW(int limit) {
_maxUpBW = limit;

View File

@ -57,7 +57,7 @@ class MagnetState {
}
/**
* @param call this for a new magnet when you have the size
* Call this for a new magnet when you have the size
* @throws IllegalArgumentException
*/
public void initialize(int size) {
@ -77,7 +77,7 @@ class MagnetState {
}
/**
* @param Call this for a new magnet when the download is complete.
* Call this for a new magnet when the download is complete.
* @throws IllegalArgumentException
*/
public void setMetaInfo(MetaInfo meta) {
@ -191,14 +191,21 @@ class MagnetState {
*/
public MetaInfo buildMetaInfo() throws Exception {
// top map has nothing in it but the info map (no announce)
Map<String, Object> map = new HashMap();
Map<String, BEValue> map = new HashMap();
InputStream is = new ByteArrayInputStream(metainfoBytes);
BDecoder dec = new BDecoder(is);
BEValue bev = dec.bdecodeMap();
map.put("info", bev);
MetaInfo newmeta = new MetaInfo(map);
if (!DataHelper.eq(newmeta.getInfoHash(), infohash))
if (!DataHelper.eq(newmeta.getInfoHash(), infohash)) {
// Disaster. Start over. ExtensionHandler will catch
// the IOE and disconnect the peer, hopefully we will
// find a new peer.
// TODO: Count fails and give up eventually
have = new BitField(totalChunks);
requested = new BitField(totalChunks);
throw new IOException("info hash mismatch");
}
return newmeta;
}
}

View File

@ -20,6 +20,7 @@
package org.klomp.snark;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
@ -34,6 +35,7 @@ import java.util.Map;
import net.i2p.I2PAppContext;
import net.i2p.crypto.SHA1;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.util.Log;
import org.klomp.snark.bencode.BDecoder;
@ -82,6 +84,12 @@ public class MetaInfo
this.piece_hashes = piece_hashes;
this.length = length;
// TODO if we add a parameter for other keys
//if (other != null) {
// otherInfo = new HashMap(2);
// otherInfo.putAll(other);
//}
this.info_hash = calculateInfoHash();
//infoMap = null;
}
@ -101,10 +109,14 @@ public class MetaInfo
* Creates a new MetaInfo from the given BDecoder. The BDecoder
* must have a complete dictionary describing the torrent.
*/
public MetaInfo(BDecoder be) throws IOException
private MetaInfo(BDecoder be) throws IOException
{
// Note that evaluation order matters here...
this(be.bdecodeMap().getMap());
byte[] origInfohash = be.get_special_map_digest();
// shouldn't ever happen
if (!DataHelper.eq(origInfohash, info_hash))
throw new InvalidBEncodingException("Infohash mismatch, please report");
}
/**
@ -116,11 +128,11 @@ public class MetaInfo
* WILL throw a InvalidBEncodingException if the given map does not
* contain a valid info dictionary.
*/
public MetaInfo(Map m) throws InvalidBEncodingException
public MetaInfo(Map<String, BEValue> m) throws InvalidBEncodingException
{
if (_log.shouldLog(Log.DEBUG))
_log.debug("Creating a metaInfo: " + m, new Exception("source"));
BEValue val = (BEValue)m.get("announce");
BEValue val = m.get("announce");
// Disabled check, we can get info from a magnet now
if (val == null) {
//throw new InvalidBEncodingException("Missing announce string");
@ -129,34 +141,37 @@ public class MetaInfo
this.announce = val.getString();
}
val = (BEValue)m.get("info");
val = m.get("info");
if (val == null)
throw new InvalidBEncodingException("Missing info map");
Map info = val.getMap();
Map<String, BEValue> info = val.getMap();
infoMap = Collections.unmodifiableMap(info);
val = (BEValue)info.get("name");
val = info.get("name");
if (val == null)
throw new InvalidBEncodingException("Missing name string");
name = val.getString();
// We could silently replace the '/', but that messes up the info hash, so just throw instead.
if (name.indexOf('/') >= 0)
throw new InvalidBEncodingException("Invalid name containing '/' " + name);
val = (BEValue)info.get("name.utf-8");
val = info.get("name.utf-8");
if (val != null)
name_utf8 = val.getString();
else
name_utf8 = null;
val = (BEValue)info.get("piece length");
val = info.get("piece length");
if (val == null)
throw new InvalidBEncodingException("Missing piece length number");
piece_length = val.getInt();
val = (BEValue)info.get("pieces");
val = info.get("pieces");
if (val == null)
throw new InvalidBEncodingException("Missing piece bytes");
piece_hashes = val.getBytes();
val = (BEValue)info.get("length");
val = info.get("length");
if (val != null)
{
// Single file case.
@ -168,7 +183,7 @@ public class MetaInfo
else
{
// Multi file case.
val = (BEValue)info.get("files");
val = info.get("files");
if (val == null)
throw new InvalidBEncodingException
("Missing length number and/or files list");
@ -189,8 +204,14 @@ public class MetaInfo
if (val == null)
throw new InvalidBEncodingException("Missing length number");
long len = val.getLong();
if (len < 0)
throw new InvalidBEncodingException("Negative file length");
m_lengths.add(Long.valueOf(len));
// check for overflowing the long
long oldTotal = l;
l += len;
if (l < oldTotal)
throw new InvalidBEncodingException("Huge total length");
val = (BEValue)desc.get("path");
if (val == null)
@ -202,8 +223,19 @@ public class MetaInfo
List<String> file = new ArrayList(path_length);
Iterator<BEValue> it = path_list.iterator();
while (it.hasNext())
file.add(it.next().getString());
while (it.hasNext()) {
String s = it.next().getString();
// We could throw an IBEE, but just silently replace instead.
if (s.indexOf('/') >= 0)
s = s.replace("/", "_");
file.add(s);
}
// quick dup check - case sensitive, etc. - Storage does a better job
for (int j = 0; j < i; j++) {
if (file.equals(m_files.get(j)))
throw new InvalidBEncodingException("Duplicate file path " + DataHelper.toString(file));
}
m_files.add(Collections.unmodifiableList(file));
@ -229,6 +261,28 @@ public class MetaInfo
info_hash = calculateInfoHash();
}
/**
* Efficiently returns the name and the 20 byte SHA1 hash of the info dictionary in a torrent file
* Caller must close stream.
*
* @param infoHashOut 20-byte out parameter
* @since 0.8.5
*/
public static String getNameAndInfoHash(InputStream in, byte[] infoHashOut) throws IOException {
BDecoder bd = new BDecoder(in);
Map<String, BEValue> m = bd.bdecodeMap().getMap();
BEValue ibev = m.get("info");
if (ibev == null)
throw new InvalidBEncodingException("Missing info map");
Map<String, BEValue> i = ibev.getMap();
BEValue rvbev = i.get("name");
if (rvbev == null)
throw new InvalidBEncodingException("Missing name");
byte[] h = bd.get_special_map_digest();
System.arraycopy(h, 0, infoHashOut, 0, 20);
return rvbev.getString();
}
/**
* Returns the string representing the URL of the tracker for this torrent.
* @return may be null!
@ -318,11 +372,13 @@ public class MetaInfo
*/
public boolean checkPiece(int piece, byte[] bs, int off, int length)
{
if (true)
//if (true)
return fast_checkPiece(piece, bs, off, length);
else
return orig_checkPiece(piece, bs, off, length);
//else
// return orig_checkPiece(piece, bs, off, length);
}
/****
private boolean orig_checkPiece(int piece, byte[] bs, int off, int length) {
// Check digest
MessageDigest sha1;
@ -342,6 +398,7 @@ public class MetaInfo
return false;
return true;
}
****/
private boolean fast_checkPiece(int piece, byte[] bs, int off, int length) {
SHA1 sha1 = new SHA1();
@ -365,7 +422,7 @@ public class MetaInfo
@Override
public String toString()
{
return "MetaInfo[info_hash='" + hexencode(info_hash)
return "MetaInfo[info_hash='" + I2PSnarkUtil.toHex(info_hash)
+ "', announce='" + announce
+ "', name='" + name
+ "', files=" + files
@ -375,23 +432,6 @@ public class MetaInfo
+ "']";
}
/**
* Encode a byte array as a hex encoded string.
*/
private static String hexencode(byte[] bs)
{
StringBuilder sb = new StringBuilder(bs.length*2);
for (int i = 0; i < bs.length; i++)
{
int c = bs[i] & 0xFF;
if (c < 16)
sb.append('0');
sb.append(Integer.toHexString(c));
}
return sb.toString();
}
/**
* Creates a copy of this MetaInfo that shares everything except the
* announce URL.
@ -427,7 +467,8 @@ public class MetaInfo
/** @return an unmodifiable view of the Map */
private Map<String, BEValue> createInfoMap()
{
// if we loaded this metainfo from a file, we have the map
// If we loaded this metainfo from a file, we have the map, and we must use it
// or else we will lose any non-standard keys and corrupt the infohash.
if (infoMap != null)
return Collections.unmodifiableMap(infoMap);
// otherwise we must create it
@ -453,27 +494,29 @@ public class MetaInfo
}
info.put("files", l);
}
// TODO if we add the ability for other keys in the first constructor
//if (otherInfo != null)
// info.putAll(otherInfo);
infoMap = info;
return Collections.unmodifiableMap(infoMap);
}
private byte[] calculateInfoHash()
{
Map info = createInfoMap();
StringBuilder buf = new StringBuilder(128);
buf.append("info: ");
for (Iterator iter = info.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry)iter.next();
String key = (String)entry.getKey();
Object val = entry.getValue();
buf.append(key).append('=');
if (val instanceof byte[])
buf.append(Base64.encode((byte[])val, true));
else
Map<String, BEValue> info = createInfoMap();
if (_log.shouldLog(Log.DEBUG)) {
StringBuilder buf = new StringBuilder(128);
buf.append("info: ");
for (Map.Entry<String, BEValue> entry : info.entrySet()) {
String key = entry.getKey();
Object val = entry.getValue();
buf.append(key).append('=');
buf.append(val.toString());
}
if (_log.shouldLog(Log.DEBUG))
}
_log.debug(buf.toString());
}
byte[] infoBytes = BEncoder.bencode(info);
//_log.debug("info bencoded: [" + Base64.encode(infoBytes, true) + "]");
try
@ -481,7 +524,7 @@ public class MetaInfo
MessageDigest digest = MessageDigest.getInstance("SHA");
byte hash[] = digest.digest(infoBytes);
if (_log.shouldLog(Log.DEBUG))
_log.debug("info hash: [" + net.i2p.data.Base64.encode(hash) + "]");
_log.debug("info hash: " + I2PSnarkUtil.toHex(hash));
return hash;
}
catch(NoSuchAlgorithmException nsa)
@ -490,5 +533,23 @@ public class MetaInfo
}
}
/** @since 0.8.5 */
public static void main(String[] args) {
if (args.length <= 0) {
System.err.println("Usage: MetaInfo files...");
return;
}
for (int i = 0; i < args.length; i++) {
InputStream in = null;
try {
in = new FileInputStream(args[i]);
MetaInfo meta = new MetaInfo(in);
System.out.println(args[i] + " InfoHash: " + I2PSnarkUtil.toHex(meta.getInfoHash()));
} catch (IOException ioe) {
System.err.println("Error in file " + args[i] + ": " + ioe);
} finally {
try { if (in != null) in.close(); } catch (IOException ioe) {}
}
}
}
}

View File

@ -783,6 +783,8 @@ public class PeerCoordinator implements PeerListener
/**
* Returns a byte array containing the requested piece or null of
* the piece is unknown.
*
* @throws RuntimeException on IOE getting the data
*/
public byte[] gotRequest(Peer peer, int piece, int off, int len)
{
@ -798,8 +800,11 @@ public class PeerCoordinator implements PeerListener
catch (IOException ioe)
{
snark.stopTorrent();
_log.error("Error reading the storage for " + metainfo.getName(), ioe);
throw new RuntimeException("B0rked");
String msg = "Error reading the storage (piece " + piece + ") for " + metainfo.getName() + ": " + ioe;
_log.error(msg, ioe);
SnarkManager.instance().addMessage(msg);
SnarkManager.instance().addMessage("Fatal storage error: Stopping torrent " + metainfo.getName());
throw new RuntimeException(msg, ioe);
}
}
@ -829,6 +834,8 @@ public class PeerCoordinator implements PeerListener
* Returns false if the piece is no good (according to the hash).
* In that case the peer that supplied the piece should probably be
* blacklisted.
*
* @throws RuntimeException on IOE saving the piece
*/
public boolean gotPiece(Peer peer, int piece, byte[] bs)
{
@ -872,8 +879,11 @@ public class PeerCoordinator implements PeerListener
catch (IOException ioe)
{
snark.stopTorrent();
_log.error("Error writing storage for " + metainfo.getName(), ioe);
throw new RuntimeException("B0rked");
String msg = "Error writing storage (piece " + piece + ") for " + metainfo.getName() + ": " + ioe;
_log.error(msg, ioe);
SnarkManager.instance().addMessage(msg);
SnarkManager.instance().addMessage("Fatal storage error: Stopping torrent " + metainfo.getName());
throw new RuntimeException(msg, ioe);
}
wantedPieces.remove(p);
}

View File

@ -40,8 +40,6 @@ import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.data.Destination;
import net.i2p.util.I2PThread;
import org.klomp.snark.bencode.BDecoder;
/**
* Main Snark program startup class.
*
@ -254,6 +252,7 @@ public class Snark
private boolean stopped;
private byte[] id;
private byte[] infoHash;
private String additionalTrackerURL;
private final I2PSnarkUtil _util;
private final PeerCoordinatorSet _peerCoordinatorSet;
private String trackerProblems;
@ -359,7 +358,7 @@ public class Snark
in = new FileInputStream(torrentFile);
}
}
meta = new MetaInfo(new BDecoder(in));
meta = new MetaInfo(in);
infoHash = meta.getInfoHash();
}
catch(IOException ioe)
@ -453,9 +452,10 @@ public class Snark
*
* @param torrent a fake name for now (not a file name)
* @param ih 20-byte info hash
* @param trackerURL may be null
* @since 0.8.4
*/
public Snark(I2PSnarkUtil util, String torrent, byte[] ih,
public Snark(I2PSnarkUtil util, String torrent, byte[] ih, String trackerURL,
CompleteListener complistener, PeerCoordinatorSet peerCoordinatorSet,
ConnectionAcceptor connectionAcceptor, boolean start, String rootDir)
{
@ -465,6 +465,7 @@ public class Snark
acceptor = connectionAcceptor;
this.torrent = torrent;
this.infoHash = ih;
this.additionalTrackerURL = trackerURL;
this.rootDataDir = rootDir;
stopped = true;
id = generateID();
@ -535,7 +536,7 @@ public class Snark
acceptor = new ConnectionAcceptor(_util, serversocket, new PeerAcceptor(coordinator));
}
// TODO pass saved closest DHT nodes to the tracker? or direct to the coordinator?
trackerclient = new TrackerClient(_util, meta, coordinator, this);
trackerclient = new TrackerClient(_util, meta, additionalTrackerURL, coordinator, this);
}
stopped = false;
@ -564,11 +565,13 @@ public class Snark
fatal("Could not reopen storage", ioe);
}
}
TrackerClient newClient = new TrackerClient(_util, meta, coordinator, this);
TrackerClient newClient = new TrackerClient(_util, meta, additionalTrackerURL, coordinator, this);
if (!trackerclient.halted())
trackerclient.halt();
trackerclient = newClient;
trackerclient.start();
} else {
debug("NOT starting TrackerClient???", NOTICE);
}
}
/**
@ -584,7 +587,7 @@ public class Snark
pc.halt();
Storage st = storage;
if (st != null) {
boolean changed = storage.changed;
boolean changed = storage.isChanged();
try {
storage.close();
} catch (IOException ioe) {
@ -825,6 +828,14 @@ public class Snark
return true;
}
/**
* @return trackerURL string from magnet-mode constructor, may be null
* @since 0.8.4
*/
public String getTrackerURL() {
return additionalTrackerURL;
}
/**
* Sets debug, ip and torrent variables then creates a Snark
* instance. Calls usage(), which terminates the program, if
@ -1000,7 +1011,7 @@ public class Snark
//if (debug >= INFO && t != null)
// t.printStackTrace();
stopTorrent();
throw new RuntimeException(s + (t == null ? "" : ": " + t));
throw new RuntimeException(s, t);
}
/**
@ -1098,7 +1109,7 @@ public class Snark
allChecked = true;
checking = false;
if (storage.changed && completeListener != null)
if (storage.isChanged() && completeListener != null)
completeListener.updateStatus(this);
}

View File

@ -572,6 +572,9 @@ public class SnarkManager implements Snark.CompleteListener {
}
try {
// This is somewhat wasteful as this metainfo is thrown away,
// the real one is created in the Snark constructor.
// TODO: Make a Snark constructor where we pass the MetaInfo in as a parameter.
MetaInfo info = new MetaInfo(fis);
try {
fis.close();
@ -595,7 +598,7 @@ public class SnarkManager implements Snark.CompleteListener {
// addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName()));
} else {
//addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers before starting the torrent.", info.getName()));
addMessage(_("Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent.", info.getName()));
dontAutoStart = true;
}
}
@ -622,6 +625,7 @@ public class SnarkManager implements Snark.CompleteListener {
return;
} catch (OutOfMemoryError oom) {
addMessage(_("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage());
return;
} finally {
if (fis != null) try { fis.close(); } catch (IOException ioe) {}
}
@ -643,11 +647,15 @@ public class SnarkManager implements Snark.CompleteListener {
*
* @param name hex or b32 name from the magnet link
* @param ih 20 byte info hash
* @param trackerURL may be null
* @param updateStatus should we add this magnet to the config file,
* to save it across restarts, in case we don't get
* the metadata before shutdown?
* @throws RuntimeException via Snark.fatal()
* @since 0.8.4
*/
public void addMagnet(String name, byte[] ih, boolean updateStatus) {
Snark torrent = new Snark(_util, name, ih, this,
public void addMagnet(String name, byte[] ih, String trackerURL, boolean updateStatus) {
Snark torrent = new Snark(_util, name, ih, trackerURL, this,
_peerCoordinatorSet, _connectionAcceptor,
false, getDataDir().getPath());
@ -1151,6 +1159,10 @@ public class SnarkManager implements Snark.CompleteListener {
saveTorrentStatus(meta, storage.getBitField(), null); // no file priorities
String name = (new File(getDataDir(), storage.getBaseName() + ".torrent")).getAbsolutePath();
try {
// put the announce URL in the file
String announce = snark.getTrackerURL();
if (announce != null)
meta = meta.reannounce(announce);
synchronized (_snarks) {
locked_writeMetaInfo(meta, name);
// put it in the list under the new name
@ -1183,9 +1195,9 @@ public class SnarkManager implements Snark.CompleteListener {
String b64 = k.substring(PROP_META_MAGNET_PREFIX.length());
b64 = b64.replace('$', '=');
byte[] ih = Base64.decode(b64);
// ignore value
// ignore value - TODO put tracker URL in value
if (ih != null && ih.length == 20)
addMagnet("Magnet: " + I2PSnarkUtil.toHex(ih), ih, false);
addMagnet("Magnet: " + I2PSnarkUtil.toHex(ih), ih, null, false);
// else remove from config?
}
}

View File

@ -53,10 +53,10 @@ public class Storage
private int needed; // Number of pieces needed
private boolean _probablyComplete; // use this to decide whether to open files RO
// XXX - Not always set correctly
int piece_size;
int pieces;
boolean changed;
private final int piece_size;
private final int pieces;
private final long total_length;
private boolean changed;
/** The default piece size. */
private static final int MIN_PIECE_SIZE = 256*1024;
@ -81,6 +81,9 @@ public class Storage
needed = metainfo.getPieces();
_probablyComplete = false;
bitfield = new BitField(needed);
piece_size = metainfo.getPieceLength(0);
pieces = needed;
total_length = metainfo.getTotalLength();
}
/**
@ -108,17 +111,17 @@ public class Storage
lengthsList.add(Long.valueOf(length));
}
piece_size = MIN_PIECE_SIZE;
pieces = (int) ((total - 1)/piece_size) + 1;
while (pieces > MAX_PIECES && piece_size < MAX_PIECE_SIZE)
int pc_size = MIN_PIECE_SIZE;
int pcs = (int) ((total - 1)/pc_size) + 1;
while (pcs > MAX_PIECES && pc_size < MAX_PIECE_SIZE)
{
piece_size = piece_size*2;
pieces = (int) ((total - 1)/piece_size) +1;
pc_size *= 2;
pcs = (int) ((total - 1)/pc_size) +1;
}
piece_size = pc_size;
pieces = pcs;
total_length = total;
// Note that piece_hashes and the bitfield will be filled after
// the MetaInfo is created.
byte[] piece_hashes = new byte[20*pieces];
bitfield = new BitField(pieces);
needed = 0;
@ -142,69 +145,26 @@ public class Storage
lengthsList = null;
}
// Note that the piece_hashes are not correctly setup yet.
byte[] piece_hashes = fast_digestCreate();
metainfo = new MetaInfo(announce, baseFile.getName(), null, files,
lengthsList, piece_size, piece_hashes, total);
}
// Creates piece hashes for a new storage.
// This does NOT create the files, just the hashes
public void create() throws IOException
{
// if (true) {
fast_digestCreate();
// } else {
// orig_digestCreate();
// }
}
/*
private void orig_digestCreate() throws IOException {
// Calculate piece_hashes
MessageDigest digest = null;
try
{
digest = MessageDigest.getInstance("SHA");
}
catch(NoSuchAlgorithmException nsa)
{
throw new InternalError(nsa.toString());
}
byte[] piece_hashes = metainfo.getPieceHashes();
byte[] piece = new byte[piece_size];
for (int i = 0; i < pieces; i++)
{
int length = getUncheckedPiece(i, piece);
digest.update(piece, 0, length);
byte[] hash = digest.digest();
for (int j = 0; j < 20; j++)
piece_hashes[20 * i + j] = hash[j];
bitfield.set(i);
if (listener != null)
listener.storageChecked(this, i, true);
}
if (listener != null)
listener.storageAllChecked(this);
// Reannounce to force recalculating the info_hash.
metainfo = metainfo.reannounce(metainfo.getAnnounce());
}
*/
/** FIXME we can run out of fd's doing this,
/**
* Creates piece hashes for a new storage.
* This does NOT create the files, just the hashes.
* Also sets all the bitfield bits.
*
* FIXME we can run out of fd's doing this,
* maybe some sort of global close-RAF-right-away flag
* would do the trick */
private void fast_digestCreate() throws IOException {
* would do the trick
*/
private byte[] fast_digestCreate() throws IOException {
// Calculate piece_hashes
SHA1 digest = new SHA1();
byte[] piece_hashes = metainfo.getPieceHashes();
byte[] piece_hashes = new byte[20 * pieces];
byte[] piece = new byte[piece_size];
for (int i = 0; i < pieces; i++)
@ -212,14 +172,10 @@ public class Storage
int length = getUncheckedPiece(i, piece);
digest.update(piece, 0, length);
byte[] hash = digest.digest();
for (int j = 0; j < 20; j++)
piece_hashes[20 * i + j] = hash[j];
System.arraycopy(hash, 0, piece_hashes, 20 * i, 20);
bitfield.set(i);
}
// Reannounce to force recalculating the info_hash.
metainfo = metainfo.reannounce(metainfo.getAnnounce());
return piece_hashes;
}
private void getFiles(File base) throws IOException
@ -294,6 +250,14 @@ public class Storage
return needed == 0;
}
/**
* Has the storage changed since instantiation?
* @since 0.8.5
*/
public boolean isChanged() {
return changed;
}
/**
* @param file canonical path (non-directory)
* @return number of bytes remaining; -1 if unknown file
@ -315,14 +279,13 @@ public class Storage
if (f != null && canonical.equals(file)) {
if (complete())
return 0;
int psz = metainfo.getPieceLength(0);
int psz = piece_size;
long start = bytes;
long end = start + lengths[i];
int pc = (int) (bytes / psz);
long rv = 0;
if (!bitfield.get(pc))
rv = Math.min(psz - (start % psz), lengths[i]);
int pieces = metainfo.getPieces();
for (int j = pc + 1; (((long)j) * psz) < end && j < pieces; j++) {
if (!bitfield.get(j)) {
if (((long)(j+1))*psz < end)
@ -418,7 +381,7 @@ public class Storage
int file = 0;
long pcEnd = -1;
long fileEnd = lengths[0] - 1;
int psz = metainfo.getPieceLength(0);
int psz = piece_size;
for (int i = 0; i < rv.length; i++) {
pcEnd += psz;
int pri = priorities[file];
@ -469,7 +432,7 @@ public class Storage
File base = new SecureFile(rootDir, filterName(metainfo.getName()));
boolean useSavedBitField = savedTime > 0 && savedBitField != null;
List files = metainfo.getFiles();
List<List<String>> files = metainfo.getFiles();
if (files == null)
{
// Create base as file.
@ -500,7 +463,7 @@ public class Storage
if (!base.mkdir() && !base.isDirectory())
throw new IOException("Could not create directory " + base);
List ls = metainfo.getLengths();
List<Long> ls = metainfo.getLengths();
int size = files.size();
long total = 0;
lengths = new long[size];
@ -511,8 +474,28 @@ public class Storage
RAFfile = new File[size];
for (int i = 0; i < size; i++)
{
File f = createFileFromNames(base, (List)files.get(i));
lengths[i] = ((Long)ls.get(i)).longValue();
List<String> path = files.get(i);
File f = createFileFromNames(base, path);
// dup file name check after filtering
for (int j = 0; j < i; j++) {
if (f.equals(RAFfile[j])) {
// Rename and start the check over again
// Copy path since metainfo list is unmodifiable
path = new ArrayList(path);
int last = path.size() - 1;
String lastPath = path.get(last);
int dot = lastPath.lastIndexOf('.');
// foo.mp3 -> foo_.mp3; foo -> _foo
if (dot >= 0)
lastPath = lastPath.substring(0, dot) + '_' + lastPath.substring(dot);
else
lastPath = '_' + lastPath;
path.set(last, lastPath);
f = createFileFromNames(base, path);
j = 0;
}
}
lengths[i] = ls.get(i).longValue();
RAFlock[i] = new Object();
RAFfile[i] = f;
total += lengths[i];
@ -551,36 +534,19 @@ public class Storage
}
/**
* Reopen the file descriptors for a restart
* Do existence check but no length check or data reverification
* Doesn't really reopen the file descriptors for a restart.
* Just does an existence check but no length check or data reverification
*
* @param rootDir ignored
* @throws IOE on fail
*/
public void reopen(String rootDir) throws IOException
{
File base = new File(rootDir, filterName(metainfo.getName()));
List files = metainfo.getFiles();
if (files == null)
{
// Reopen base as file.
_util.debug("Reopening file: " + base, Snark.NOTICE);
if (!base.exists())
throw new IOException("Could not reopen file " + base);
}
else
{
// Reopen base as dir.
_util.debug("Reopening directory: " + base, Snark.NOTICE);
if (!base.isDirectory())
throw new IOException("Could not reopen directory " + base);
int size = files.size();
for (int i = 0; i < size; i++)
{
File f = getFileFromNames(base, (List)files.get(i));
if (!f.exists())
throw new IOException("Could not reopen file " + f);
}
if (RAFfile == null)
throw new IOException("Storage not checked yet");
for (int i = 0; i < RAFfile.length; i++) {
if (!RAFfile[i].exists())
throw new IOException("File does not exist: " + RAFfile[i]);
}
}
@ -609,13 +575,18 @@ public class Storage
return rv;
}
private File createFileFromNames(File base, List names) throws IOException
/**
* Note that filtering each path element individually may lead to
* things going in the wrong place if there are duplicates
* in intermediate path elements after filtering.
*/
private static File createFileFromNames(File base, List<String> names) throws IOException
{
File f = null;
Iterator it = names.iterator();
Iterator<String> it = names.iterator();
while (it.hasNext())
{
String name = filterName((String)it.next());
String name = filterName(it.next());
if (it.hasNext())
{
// Another dir in the hierarchy.
@ -635,12 +606,12 @@ public class Storage
return f;
}
public static File getFileFromNames(File base, List names)
public static File getFileFromNames(File base, List<String> names)
{
Iterator it = names.iterator();
Iterator<String> it = names.iterator();
while (it.hasNext())
{
String name = filterName((String)it.next());
String name = filterName(it.next());
base = new File(base, name);
}
return base;
@ -690,7 +661,10 @@ public class Storage
} catch (IOException ioe) {}
}
} else {
_util.debug("File '" + names[i] + "' exists, but has wrong length - repairing corruption", Snark.ERROR);
String msg = "File '" + names[i] + "' exists, but has wrong length (expected " +
lengths[i] + " but found " + length + ") - repairing corruption";
SnarkManager.instance().addMessage(msg);
_util.debug(msg, Snark.ERROR);
changed = true;
_probablyComplete = false; // to force RW
synchronized(RAFlock[i]) {
@ -706,8 +680,7 @@ public class Storage
// Check which pieces match and which don't
if (resume)
{
pieces = metainfo.getPieces();
byte[] piece = new byte[metainfo.getPieceLength(0)];
byte[] piece = new byte[piece_size];
int file = 0;
long fileEnd = lengths[0];
long pieceEnd = 0;
@ -775,7 +748,7 @@ public class Storage
// the whole file?
if (listener != null)
listener.storageCreateFile(this, names[nr], lengths[nr]);
final int ZEROBLOCKSIZE = metainfo.getPieceLength(0);
final int ZEROBLOCKSIZE = piece_size;
byte[] zeros;
try {
zeros = new byte[ZEROBLOCKSIZE];
@ -868,7 +841,7 @@ public class Storage
}
// Early typecast, avoid possibly overflowing a temp integer
long start = (long) piece * (long) metainfo.getPieceLength(0);
long start = (long) piece * (long) piece_size;
int i = 0;
long raflen = lengths[i];
while (start > raflen)
@ -935,10 +908,24 @@ public class Storage
return true;
}
/**
* This is a dup of MetaInfo.getPieceLength() but we need it
* before the MetaInfo is created in our second constructor.
* @since 0.8.5
*/
private int getPieceLength(int piece) {
if (piece >= 0 && piece < pieces -1)
return piece_size;
else if (piece == pieces -1)
return (int)(total_length - ((long)piece * piece_size));
else
throw new IndexOutOfBoundsException("no piece: " + piece);
}
private int getUncheckedPiece(int piece, byte[] bs)
throws IOException
{
return getUncheckedPiece(piece, bs, 0, metainfo.getPieceLength(piece));
return getUncheckedPiece(piece, bs, 0, getPieceLength(piece));
}
private int getUncheckedPiece(int piece, byte[] bs, int off, int length)
@ -947,7 +934,7 @@ public class Storage
// XXX - copy/paste code from putPiece().
// Early typecast, avoid possibly overflowing a temp integer
long start = ((long) piece * (long) metainfo.getPieceLength(0)) + off;
long start = ((long) piece * (long) piece_size) + off;
int i = 0;
long raflen = lengths[i];

View File

@ -65,6 +65,7 @@ public class TrackerClient extends I2PAppThread
private I2PSnarkUtil _util;
private final MetaInfo meta;
private final String additionalTrackerURL;
private final PeerCoordinator coordinator;
private final Snark snark;
private final int port;
@ -76,8 +77,10 @@ public class TrackerClient extends I2PAppThread
/**
* @param meta null if in magnet mode
* @param additionalTrackerURL may be null, from the ?tr= param in magnet mode, otherwise ignored
*/
public TrackerClient(I2PSnarkUtil util, MetaInfo meta, PeerCoordinator coordinator, Snark snark)
public TrackerClient(I2PSnarkUtil util, MetaInfo meta, String additionalTrackerURL,
PeerCoordinator coordinator, Snark snark)
{
super();
// Set unique name.
@ -85,13 +88,11 @@ public class TrackerClient extends I2PAppThread
setName("TrackerClient " + id.substring(id.length() - 12));
_util = util;
this.meta = meta;
this.additionalTrackerURL = additionalTrackerURL;
this.coordinator = coordinator;
this.snark = snark;
this.port = 6881; //(port == -1) ? 9 : port;
stop = false;
started = false;
}
@Override
@ -138,17 +139,21 @@ public class TrackerClient extends I2PAppThread
// todo: check for b32 matches as well
trackers = new ArrayList(2);
String primary = null;
if (meta != null) {
if (meta != null)
primary = meta.getAnnounce();
else if (additionalTrackerURL != null)
primary = additionalTrackerURL;
if (primary != null) {
if (isValidAnnounce(primary)) {
trackers.add(new Tracker(meta.getAnnounce(), true));
trackers.add(new Tracker(primary, true));
_log.debug("Announce: [" + primary + "] infoHash: " + infoHash);
} else {
_log.warn("Skipping invalid or non-i2p announce: " + primary);
}
}
if (primary == null)
} else {
_log.warn("No primary announce");
primary = "";
}
List tlist = _util.getOpenTrackers();
if (tlist != null) {
for (int i = 0; i < tlist.size(); i++) {
@ -180,10 +185,12 @@ public class TrackerClient extends I2PAppThread
}
if (trackers.isEmpty()) {
// FIXME really need to get this message to the gui
stop = true;
_log.error("No valid trackers for infoHash: " + infoHash);
// FIXME translate
SnarkManager.instance().addMessage("No valid trackers for " + this.snark.getBaseName() + " - enable opentrackers?");
_log.error("No valid trackers for " + this.snark.getBaseName());
// FIXME keep going if DHT enabled
this.snark.stopTorrent();
return;
}

View File

@ -60,22 +60,30 @@ public class BDecoder
private int indicator = 0;
// Used for ugly hack to get SHA hash over the metainfo info map
private String special_map = "info";
private final String special_map = "info";
private boolean in_special_map = false;
private final MessageDigest sha_digest;
/** creation deferred until we encounter the special map, to make processing of announce replies more efficient */
private MessageDigest sha_digest;
// Ugly hack. Return the SHA has over bytes that make up the special map.
/**
* Ugly hack. Return the SHA has over bytes that make up the special map.
* @return null if there was no special map
*/
public byte[] get_special_map_digest()
{
if (sha_digest == null)
return null;
byte[] result = sha_digest.digest();
return result;
}
/****
// Ugly hack. Name defaults to "info".
public void set_special_map_name(String name)
{
special_map = name;
}
****/
/**
* Initalizes a new BDecoder. Nothing is read from the given
@ -84,15 +92,6 @@ public class BDecoder
public BDecoder(InputStream in)
{
this.in = in;
// XXX - Used for ugly hack.
try
{
sha_digest = MessageDigest.getInstance("SHA");
}
catch(NoSuchAlgorithmException nsa)
{
throw new InternalError(nsa.toString());
}
}
/**
@ -112,6 +111,24 @@ public class BDecoder
return new BDecoder(in).bdecode();
}
/**
* Used for SHA1 hack
* @since 0.8.5
*/
private void createDigest() {
if (sha_digest == null) {
try {
sha_digest = MessageDigest.getInstance("SHA");
} catch(NoSuchAlgorithmException nsa) {
throw new InternalError(nsa.toString());
}
} else {
// there are two info maps, but not one inside the other,
// the resulting hash will be incorrect
// throw something? - no, the check in the MetaInfo constructor will catch it.
}
}
/**
* Returns what the next bencoded object will be on the stream or -1
* when the end of stream has been reached. Can return something
@ -294,9 +311,13 @@ public class BDecoder
String key = bdecode().getString();
// XXX ugly hack
boolean special = special_map.equals(key);
if (special)
// This will not screw up if an info map contains an info map,
// but it will if there are two info maps (not one inside the other)
boolean special = (!in_special_map) && special_map.equals(key);
if (special) {
createDigest();
in_special_map = true;
}
BEValue value = bdecode();
result.put(key, value);

View File

@ -54,7 +54,7 @@ public interface DHT {
* Non-blocking.
*
* @param ih the Info Hash (torrent)
* @param peer the peer's Hash
* @param peerHash the peer's Hash
*/
public void announce(byte[] ih, byte[] peerHash);

View File

@ -65,7 +65,8 @@ public class I2PSnarkServlet extends Default {
public static final String PROP_CONFIG_FILE = "i2psnark.configFile";
/** BEP 9 */
private static final String MAGNET = "magnet:?xt=urn:btih:";
private static final String MAGNET = "magnet:";
private static final String MAGNET_FULL = MAGNET + "?xt=urn:btih:";
/** http://sponge.i2p/files/maggotspec.txt */
private static final String MAGGOT = "maggot://";
@ -347,11 +348,12 @@ public class I2PSnarkServlet extends Default {
out.write("</th>\n<th align=\"center\">");
// Opera and text-mode browsers: no &thinsp; and no input type=image values submitted
// Using a unique name fixes Opera, except for the buttons with js confirms, see below
String ua = req.getHeader("User-Agent");
boolean isDegraded = ua != null && (ua.startsWith("Lynx") ||
boolean isDegraded = ua != null && (ua.startsWith("Lynx") || ua.startsWith("w3m") ||
ua.startsWith("ELinks") || ua.startsWith("Dillo"));
boolean noThinsp = isDegraded || ua.startsWith("Opera");
boolean noThinsp = isDegraded || (ua != null && ua.startsWith("Opera"));
if (_manager.util().connected()) {
if (isDegraded)
out.write("<a href=\"/i2psnark/?action=StopAll&amp;nonce=" + _nonce + "\"><img title=\"");
@ -641,7 +643,6 @@ public class I2PSnarkServlet extends Default {
// This may take a long time to check the storage, but since it already exists,
// it shouldn't be THAT bad, so keep it in this thread.
Storage s = new Storage(_manager.util(), baseFile, announceURL, null);
s.create();
s.close(); // close the files... maybe need a way to pass this Storage to addTorrent rather than starting over
MetaInfo info = s.getMetaInfo();
File torrentFile = new File(_manager.getDataDir(), s.getBaseName() + ".torrent");
@ -856,20 +857,53 @@ public class I2PSnarkServlet extends Default {
out.write("<td class=\"center " + rowClass + "\">");
out.write(statusString + "</td>\n\t");
// (i) icon column
out.write("<td class=\"" + rowClass + "\">");
if (isValid && meta.getAnnounce() != null) {
// Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file.
//StringBuilder buf = new StringBuilder(128);
//buf.append("<a href=\"").append(snark.getBaseName())
// .append("/\" title=\"").append(_("Torrent details"))
// .append("\"><img alt=\"").append(_("Info")).append("\" border=\"0\" src=\"")
// .append(_imgPath).append("details.png\"></a>");
//out.write(buf.toString());
// Link to tracker details page
String trackerLink = getTrackerLink(meta.getAnnounce(), snark.getInfoHash());
if (trackerLink != null)
out.write(trackerLink);
}
// File type icon column
out.write("</td>\n<td class=\"" + rowClass + "\">");
if (isValid) {
// Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file.
StringBuilder buf = new StringBuilder(128);
buf.append("<a href=\"").append(snark.getBaseName())
.append("/\" title=\"").append(_("Torrent details"))
.append("\"><img alt=\"").append(_("Info")).append("\" border=\"0\" src=\"")
.append(_imgPath).append("details.png\"></a>");
out.write(buf.toString());
.append("\">");
out.write(buf.toString());
}
String icon;
if (isMultiFile)
icon = "folder";
else if (isValid)
icon = toIcon(meta.getName());
else
icon = "magnet";
if (isValid) {
out.write(toImg(icon, _("Info")));
out.write("</a>");
} else {
out.write(toImg(icon));
}
out.write("</td>\n<td class=\"" + rowClass + "\">");
StringBuilder buf = null;
// Torrent name column
out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">");
if (remaining == 0 || isMultiFile) {
buf = new StringBuilder(128);
StringBuilder buf = new StringBuilder(128);
buf.append("<a href=\"").append(snark.getBaseName());
if (isMultiFile)
buf.append('/');
@ -881,22 +915,6 @@ public class I2PSnarkServlet extends Default {
buf.append("\">");
out.write(buf.toString());
}
String icon;
if (isMultiFile)
icon = "folder";
else if (isValid)
icon = toIcon(meta.getName());
else
icon = "magnet";
if (remaining == 0 || isMultiFile) {
out.write(toImg(icon, _("Open")));
out.write("</a>");
} else {
out.write(toImg(icon));
}
out.write("</td><td class=\"snarkTorrentName " + rowClass + "\">");
if (remaining == 0 || isMultiFile)
out.write(buf.toString());
out.write(filename);
if (remaining == 0 || isMultiFile)
out.write("</a>");
@ -942,7 +960,8 @@ public class I2PSnarkServlet extends Default {
if (isDegraded)
out.write("</a>");
} else {
if (isDegraded)
// This works in Opera but it's displayed a little differently, so use noThinsp here too so all 3 icons are consistent
if (noThinsp)
out.write("<a href=\"/i2psnark/?action=Start_" + b64 + "&amp;nonce=" + _nonce + "\"><img title=\"");
else
out.write("<input type=\"image\" name=\"action_Start_" + b64 + "\" value=\"foo\" title=\"");
@ -954,7 +973,8 @@ public class I2PSnarkServlet extends Default {
out.write("</a>");
if (isValid) {
if (isDegraded)
// Doesnt work with Opera so use noThinsp instead of isDegraded
if (noThinsp)
out.write("<a href=\"/i2psnark/?action=Remove_" + b64 + "&amp;nonce=" + _nonce + "\"><img title=\"");
else
out.write("<input type=\"image\" name=\"action\" value=\"Remove_" + b64 + "\" title=\"");
@ -972,7 +992,8 @@ public class I2PSnarkServlet extends Default {
out.write("</a>");
}
if (isDegraded)
// Doesnt work with Opera so use noThinsp instead of isDegraded
if (noThinsp)
out.write("<a href=\"/i2psnark/?action=Delete_" + b64 + "&amp;nonce=" + _nonce + "\"><img title=\"");
else
out.write("<input type=\"image\" name=\"action_Delete_" + b64 + "\" value=\"foo\" title=\"");
@ -1168,7 +1189,7 @@ public class I2PSnarkServlet extends Default {
out.write(_("From URL"));
out.write(":<td><input type=\"text\" name=\"newURL\" size=\"85\" value=\"" + newURL + "\"");
out.write("title=\"");
out.write(_("Torrent file must originate from an I2P-based tracker"));
out.write(_("Enter the torrent file download URL (I2P only), magnet link, or maggot link"));
out.write("\"> \n");
// not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>");
@ -1216,7 +1237,8 @@ public class I2PSnarkServlet extends Default {
out.write("</option>\n");
// todo remember this one with _lastAnnounceURL also
out.write("<option value=\"none\">");
out.write(_("Open trackers and DHT only"));
//out.write(_("Open trackers and DHT only"));
out.write(_("Open trackers only"));
out.write("</option>\n");
Map trackers = _manager.getTrackers();
for (Iterator iter = trackers.entrySet().iterator(); iter.hasNext(); ) {
@ -1405,13 +1427,22 @@ public class I2PSnarkServlet extends Default {
private void addMagnet(String url) {
String ihash;
String name;
String trackerURL = null;
if (url.startsWith(MAGNET)) {
ihash = url.substring(MAGNET.length()).trim();
int amp = ihash.indexOf('&');
if (amp >= 0)
ihash = ihash.substring(0, amp);
// magnet:?xt=urn:btih:0691e40aae02e552cfcb57af1dca56214680c0c5&tr=http://tracker2.postman.i2p/announce.php
String xt = getParam("xt", url);
if (xt == null || !xt.startsWith("urn:btih:")) {
_manager.addMessage(_("Invalid magnet URL {0}", url));
return;
}
ihash = xt.substring("urn:btih:".length());
trackerURL = getParam("tr", url);
name = "Magnet " + ihash;
String dn = getParam("dn", url);
if (dn != null)
name += " (" + Storage.filterName(dn) + ')';
} else if (url.startsWith(MAGGOT)) {
// maggot://0691e40aae02e552cfcb57af1dca56214680c0c5:0b557bbdf8718e95d352fbe994dec3a383e2ede7
ihash = url.substring(MAGGOT.length()).trim();
int col = ihash.indexOf(':');
if (col >= 0)
@ -1438,7 +1469,27 @@ public class I2PSnarkServlet extends Default {
_manager.addMessage(_("Invalid info hash in magnet URL {0}", url));
return;
}
_manager.addMagnet(name, ih, true);
_manager.addMagnet(name, ih, trackerURL, true);
}
private static String getParam(String key, String uri) {
int idx = uri.indexOf('?' + key + '=');
if (idx >= 0) {
idx += key.length() + 2;
} else {
idx = uri.indexOf('&' + key + '=');
if (idx >= 0)
idx += key.length() + 2;
}
if (idx < 0 || idx > uri.length())
return null;
String rv = uri.substring(idx);
idx = rv.indexOf('&');
if (idx >= 0)
rv = rv.substring(0, idx);
else
rv = rv.trim();
return rv;
}
/** copied from ConfigTunnelsHelper */
@ -1643,8 +1694,8 @@ public class I2PSnarkServlet extends Default {
String hex = I2PSnarkUtil.toHex(snark.getInfoHash());
buf.append("<br>").append(toImg("magnet", _("Magnet link"))).append(" <a href=\"")
.append(MAGNET).append(hex).append("\">")
.append(MAGNET).append(hex).append("</a>");
.append(MAGNET_FULL).append(hex).append("\">")
.append(MAGNET_FULL).append(hex).append("</a>");
// We don't have the hash of the torrent file
//buf.append("<br>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
// .append(MAGGOT).append(hex).append(':').append(hex).append("</a>");
@ -1831,7 +1882,8 @@ public class I2PSnarkServlet extends Default {
mime = "";
if (mime.equals("text/html"))
icon = "html";
else if (mime.equals("text/plain") || plc.endsWith(".nfo"))
else if (mime.equals("text/plain") || plc.endsWith(".nfo") ||
mime.equals("application/rtf"))
icon = "page";
else if (mime.equals("application/java-archive") || plc.endsWith(".war") ||
plc.endsWith(".deb"))
@ -1915,16 +1967,15 @@ private static class FetchAndAdd implements Runnable {
FileInputStream in = null;
try {
in = new FileInputStream(file);
// we do not retain this MetaInfo object, hopefully it will go away quickly
MetaInfo info = new MetaInfo(in);
byte[] fileInfoHash = new byte[20];
String name = MetaInfo.getNameAndInfoHash(in, fileInfoHash);
try { in.close(); } catch (IOException ioe) {}
Snark snark = _manager.getTorrentByInfoHash(info.getInfoHash());
Snark snark = _manager.getTorrentByInfoHash(fileInfoHash);
if (snark != null) {
_manager.addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName()));
return;
}
String name = info.getName();
name = Storage.filterName(name);
name = name + ".torrent";
File torrentFile = new File(_manager.getDataDir(), name);

View File

@ -0,0 +1,912 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2psnark package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
"PO-Revision-Date: 2011-03-03 17:18-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:307
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr "تم تغببر مجموع حد الرفع الى {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:309
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr "اقل حد الرفع الى {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:321
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr "حولت سرعة الرفع الى {0}KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:323
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "اقل سرعة رفع هي{0}KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:335
#, java-format
msgid "Startup delay changed to {0}"
msgstr "تغير تأخير البداية الى {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:386
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr "سيتم تفعيل التغيير بعد اعادة التشغيل"
#: ../java/src/org/klomp/snark/SnarkManager.java:393
msgid "Disconnecting old I2CP destination"
msgstr "فك الاتصال"
#: ../java/src/org/klomp/snark/SnarkManager.java:397
#, java-format
msgid "I2CP settings changed to {0}"
msgstr " تغيرت الاعدادات الى {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:402
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "فشل في الاتصال بالاعدادات الجديدة، سيتم الرجوع الى الاعدادات القديمة"
#: ../java/src/org/klomp/snark/SnarkManager.java:406
msgid "Unable to reconnect with the old settings!"
msgstr "فشل في اعادة الاتصال بالاعدادات القديمة!"
#: ../java/src/org/klomp/snark/SnarkManager.java:408
msgid "Reconnected on the new I2CP destination"
msgstr "اتصال بوجهة جديدة"
#: ../java/src/org/klomp/snark/SnarkManager.java:418
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr "اعادة التشغيل \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:429
msgid "Enabled autostart"
msgstr "تشغيل عند البداية"
#: ../java/src/org/klomp/snark/SnarkManager.java:431
msgid "Disabled autostart"
msgstr "الغاء التشغيل عند البداية"
#: ../java/src/org/klomp/snark/SnarkManager.java:437
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr "تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
#: ../java/src/org/klomp/snark/SnarkManager.java:439
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr "الغاء تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
#: ../java/src/org/klomp/snark/SnarkManager.java:447
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr "تغيير open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
#: ../java/src/org/klomp/snark/SnarkManager.java:454
#, java-format
msgid "{0} theme loaded, return to main i2psnark page to view."
msgstr "{0} تم تحميل التيمة ارجع الى صفحة للمشاهدة i2psnark."
#: ../java/src/org/klomp/snark/SnarkManager.java:461
msgid "Configuration unchanged."
msgstr "لم تتغير الاعدادات"
#: ../java/src/org/klomp/snark/SnarkManager.java:471
#, java-format
msgid "Unable to save the config to {0}"
msgstr "فشل في حفظ الاعدادات {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:536
msgid "Connecting to I2P"
msgstr "جاري الاتصال بشبكة I2P"
#: ../java/src/org/klomp/snark/SnarkManager.java:539
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr "فشل في الاتصال ب I2P - تخقق من اعدادات I2CP !"
#: ../java/src/org/klomp/snark/SnarkManager.java:548
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr "خطأ: فشل في اضافة التورنت {0}"
#. catch this here so we don't try do delete it below
#: ../java/src/org/klomp/snark/SnarkManager.java:570
#, java-format
msgid "Cannot open \"{0}\""
msgstr "فشل في فتح \"{0}\""
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
#: ../java/src/org/klomp/snark/SnarkManager.java:586
#: ../java/src/org/klomp/snark/SnarkManager.java:661
#: ../java/src/org/klomp/snark/SnarkManager.java:716
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
#, java-format
msgid "Torrent with this info hash is already running: {0}"
msgstr "تورنت بهذه المعلومات مشغل: {0}"
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:593
#, java-format
msgid ""
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
"only."
msgstr ""
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, java-format
msgid ""
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
"enabled before starting this torrent."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:619
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr "تورنت في \"{0}\"غير صحيح"
#: ../java/src/org/klomp/snark/SnarkManager.java:624
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
#, java-format
msgid "ERROR - Out of memory, cannot create torrent from {0}"
msgstr "خطأ - لا توجد ذاكرة كافية، لا يمكن انشاء تورنت {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:635
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr "تم اضافة وتشغيل التورنت: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:637
#, java-format
msgid "Torrent added: \"{0}\""
msgstr "تمت اضافة: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:672
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#, java-format
msgid "Fetching {0}"
msgstr "يحمل {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:675
#, java-format
msgid ""
"We have no saved peers and no other torrents are running. Fetch of {0} will "
"not succeed until you start another torrent."
msgstr "لا يوجد تورنت مشغل . تحميل {0} لن يتم حتى تشغيل تورنت جديد."
#: ../java/src/org/klomp/snark/SnarkManager.java:679
#, java-format
msgid "Adding {0}"
msgstr "اضافة {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:726
#: ../java/src/org/klomp/snark/SnarkManager.java:749
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
#, java-format
msgid "Failed to copy torrent file to {0}"
msgstr "فشل في نسخ التورنت الى {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:972
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr "ملفات كثيرة في \"{0}\" ({1}) تم حذف"
#: ../java/src/org/klomp/snark/SnarkManager.java:974
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr "ملف التورنت \"{0}\" لا يمكنه الانتهاء ب \".torrent\", سيتم حذفه!"
#: ../java/src/org/klomp/snark/SnarkManager.java:976
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr "ﻻ أجزاء في \"{0}\", حذف!"
#: ../java/src/org/klomp/snark/SnarkManager.java:978
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:980
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "الأجزاء كبيرة في \"{0}\" ({1}B), حذف."
#: ../java/src/org/klomp/snark/SnarkManager.java:981
#, java-format
msgid "Limit is {0}B"
msgstr "حدود {0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:989
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr "تورنت أكبر من {0}B غير مدعومة سيحذف \"{1}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr "خطأ: ﻻيمكن حذف التورنت {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr "تورنت متوقف: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr "تورنت محذوف: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
#, java-format
msgid "Adding torrents in {0}"
msgstr "اضف تورنت في {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
#, java-format
msgid "Download finished: {0}"
msgstr "انتهى التحميل: {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
#, java-format
msgid "Metainfo received for {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
#, java-format
msgid "Starting up torrent {0}"
msgstr "بداية التورنت {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
msgid "Unable to connect to I2P!"
msgstr "فشل في اضافة I2P!"
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
#, java-format
msgid "Unable to add {0}"
msgstr "فشل في اضافة {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "I2PSnark - برنامج مشاركة ملفات التورنت المجهول"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
msgid "Torrents"
msgstr "تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
msgid "I2PSnark"
msgstr "I2PSnark برنامج تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225
msgid "Refresh page"
msgstr "أنعش الصفحة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
msgid "Forum"
msgstr "منتدى"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
msgid "Status"
msgstr "الحالة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292
msgid "Hide Peers"
msgstr "اخفاء النظائر"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299
msgid "Show Peers"
msgstr "أظهر النظائر"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
msgid "Torrent"
msgstr "تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
msgid "Estimated time remaining"
msgstr "تقدير للوقت الباقي"
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
msgid "ETA"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
msgid "Downloaded"
msgstr "محمل"
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
msgid "RX"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324
msgid "Uploaded"
msgstr "رفع"
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
msgid "TX"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
msgid "Down Rate"
msgstr "معدل التحميل"
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
msgid "Rate"
msgstr "معدل"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
msgid "Up Rate"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
msgid "Stop all torrents and the I2P tunnel"
msgstr "توقيف جمبع التورنت و النفق I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
msgid "Stop All"
msgstr "توقيف الجمبع"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
msgid "Start all torrents and the I2P tunnel"
msgstr "شغل جمبع التورنت و النفق I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
msgid "Start All"
msgstr "شغل الجمبع"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
msgid "No torrents loaded."
msgstr "لم يحمل تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
msgid "Totals"
msgstr "مجموع"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "1 تورنت"
msgstr[1] "{0} تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "{0} مستخدم متصل"
msgstr[1] "{0} مستخدمون متصلون"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
#, java-format
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
#, java-format
msgid "Magnet deleted: {0}"
msgstr "تم حذف ملف مغناطيس: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "تم خذف ملف التورنت: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
#, java-format
msgid "Data file deleted: {0}"
msgstr "خذف ملف البيانات: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "فشل في حذف الملف: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
#, java-format
msgid "Data dir deleted: {0}"
msgstr "حذف مجلد المعطيات: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
msgid "Error creating torrent - you must select a tracker"
msgstr "فشل في انشاء تورنت - عليك اختيار tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#, java-format
msgid "Torrent created for \"{0}\""
msgstr "تم انشاء تورنت لـ \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting \"{0}\""
msgstr ""
"العديد من trackers يطلبون تسجيل التورنت قبل مشاركتها، قم بذلك قبل البداية {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr "فشل في انشاء تورنت لـ \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr "لا يمكن انشاء تورنت لبيانات غير موجودة: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
msgid "Error creating torrent - you must enter a file or directory"
msgstr "فشل في انشاء تورنت - عليك اختيار ملف أو مجلد"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr "توقيف جميع التورنت و قفل النفق I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
msgid "I2P tunnel closed."
msgstr "تم قفل النفق"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
msgid "Opening the I2P tunnel and starting all torrents."
msgstr "فتح النفق واطلاق جميع التورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814
msgid "Tracker Error"
msgstr "Tracker خطأ"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "{0} نظير"
msgstr[1] "{0} نظير"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
msgid "Seeding"
msgstr "بشارك"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
msgid "Complete"
msgstr "اكتمل"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
msgid "OK"
msgstr "موافق"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
msgid "Stalled"
msgstr "متوقف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "No Peers"
msgstr "لا بوجد نظائر"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
msgid "Stopped"
msgstr "متوقف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
msgid "Torrent details"
msgstr "تفاصيل التورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
msgid "Info"
msgstr "معلومات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "View files"
msgstr "أظهر الملفات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915
msgid "Open file"
msgstr "فتح ملف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957
msgid "Stop the torrent"
msgstr "قف التورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
msgid "Stop"
msgstr "قف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
msgid "Start the torrent"
msgstr "ابدأ التورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
msgid "Start"
msgstr "ابدأ"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "حذف التورنت من القائمة، حذف ملف .torrent"
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format
msgid ""
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
"data will not be deleted) ?"
msgstr ""
"هل أنت متأكد من حذف الملف \\''{0}.تورنت\\'' (سيتم خذف ايضا الملفات التي تم "
"تحميلها) ?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
msgid "Remove"
msgstr "حذف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "خذف ملف التورنت و الملفات المرتبطة به"
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
#, java-format
msgid ""
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
"data?"
msgstr "هل أنت متأكد من حذف التورنت \\''{0}\\'' وجمبع البيانات المحملة؟"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
msgid "Delete"
msgstr "حذف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
msgid "Unknown"
msgstr "غير معروف"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
msgid "Seed"
msgstr "شارك"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "غير مهم (النظير لا يحتوي على اجزاء نحتاجها)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
msgid "Uninterested (We have no pieces the peer needs)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "مشكلة (لا يمكن الحصول على اجزاء الملف من النظائر)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
#, java-format
msgid "Details at {0} tracker"
msgstr "تفاصيل حول {0} tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
msgid "Add Torrent"
msgstr "أضف تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
msgid "From URL"
msgstr "من عنوان"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
msgid ""
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr "ادخل عنوان التورنت لتحميله (فقط على شبكة i2p)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
msgid "Add torrent"
msgstr "أضف تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
#, java-format
msgid "You can also copy .torrent files to: {0}."
msgstr "يمكن ايضا .نقل ملفات تورنت الى: {0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
msgid "Removing a .torrent will cause it to stop."
msgstr "سيتم القاف التورنت عند حذف الملف torrent."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
msgid "Create Torrent"
msgstr "أنشئ تورنت"
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
msgid "Data to seed"
msgstr "البيانات المشاركة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
msgid "File or directory to seed (must be within the specified path)"
msgstr "الملف او المجلد الذي ترغب في مشاركته "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
msgid "Tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Select a tracker"
msgstr "اختر tracker"
#. out.write(_("Open trackers and DHT only"));
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Open trackers only"
msgstr "trackers المفتوحة فقط"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
msgid "or"
msgstr "أو"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
msgid "Specify custom tracker announce URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
msgid "Create torrent"
msgstr "أنشئ تورنت"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
msgid "Configuration"
msgstr "اعدادات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "Data directory"
msgstr "مجلد البيانات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
msgid "Edit i2psnark.config and restart to change"
msgstr "حرر i2psnark.config وأعد التشغيل"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
msgid "Auto start"
msgstr "ابدأ عند البداية"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
msgid "If checked, automatically start torrents that are added"
msgstr "اذا تم تفعيل، يقوم بتشغيل التورنت تلقائيا عند اضافته"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
msgid "Theme"
msgstr "تيمة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
msgid "Startup delay"
msgstr "تأخر البداية"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
msgid "minutes"
msgstr "دقائق"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
msgid "Total uploader limit"
msgstr "اقصى حد للرفع"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
msgid "peers"
msgstr "النظائر"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
msgid "Up bandwidth limit"
msgstr "اقصى حد لسرعة الاتصال"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
msgid "Half available bandwidth recommended."
msgstr "ينصح باستعمال نصف سرعة الشبكة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
msgid "View or change router bandwidth"
msgstr "أظهر أو غير سرعة الموجه"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
msgid "Use open trackers also"
msgstr "استعمال open trackers ايضا"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
msgid ""
"If checked, announce torrents to open trackers as well as the tracker listed "
"in the torrent file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
msgid "Open tracker announce URLs"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
msgid "Inbound Settings"
msgstr "اعدادت الاتصال الداخلي"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
msgid "Outbound Settings"
msgstr "اعدادت الاتصال الخارجي"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
msgid "I2CP host"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
msgid "I2CP port"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
msgid "I2CP options"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
msgid "Save configuration"
msgstr "حفظ الاعدادات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Invalid magnet URL {0}"
msgstr "غنوان مغناطيس غير صحيح {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
#, java-format
msgid "Invalid info hash in magnet URL {0}"
msgstr ""
#. * dummies for translation
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "1 قفزة"
msgstr[1] "{0} قفزات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "1 نفق"
msgstr[1] "{0} أنفاق"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
msgid "Completion"
msgstr "انتهاء"
#. else unknown
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
msgid "Size"
msgstr "الحجم"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
msgid "Files"
msgstr "الملفات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
msgid "Pieces"
msgstr "القطع"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
msgid "Piece size"
msgstr "حجم القطعة"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
msgid "Magnet link"
msgstr "وصلة مغناطيس"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
msgid "Directory"
msgstr "المجلد"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
msgid "Priority"
msgstr "الأولوية"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
msgid "Up to higher level directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
msgid "Torrent not found?"
msgstr "تورنت غير موجود؟"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
msgid "File not found in torrent?"
msgstr "الملف غير موجود في التورنت؟"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
msgid "complete"
msgstr "اكتمل"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
msgid "bytes remaining"
msgstr "البايت المتبقية"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
msgid "Open"
msgstr "فتح"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
msgid "High"
msgstr "عالي"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
msgid "Normal"
msgstr "عادي"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
msgid "Skip"
msgstr "تجاوز"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
msgid "Save priorities"
msgstr "حفظ الأولويات"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
#, java-format
msgid "Torrent fetched from {0}"
msgstr "تم تحميل الملف من {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
#, java-format
msgid "Torrent already running: {0}"
msgstr "تورنت مفعل: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "تورنت في قائمة الانتظار: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "تورنت غير صحيح {0} "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "لم يتم تحميل التورنت من {0}"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,909 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2psnark package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:307
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:309
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:321
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:323
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:335
#, java-format
msgid "Startup delay changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:386
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:393
msgid "Disconnecting old I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:397
#, java-format
msgid "I2CP settings changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:402
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:406
msgid "Unable to reconnect with the old settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:408
msgid "Reconnected on the new I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:418
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:429
msgid "Enabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:431
msgid "Disabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:437
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:439
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:447
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:454
#, java-format
msgid "{0} theme loaded, return to main i2psnark page to view."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:461
msgid "Configuration unchanged."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:471
#, java-format
msgid "Unable to save the config to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:536
msgid "Connecting to I2P"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:539
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:548
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr ""
#. catch this here so we don't try do delete it below
#: ../java/src/org/klomp/snark/SnarkManager.java:570
#, java-format
msgid "Cannot open \"{0}\""
msgstr ""
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
#: ../java/src/org/klomp/snark/SnarkManager.java:586
#: ../java/src/org/klomp/snark/SnarkManager.java:661
#: ../java/src/org/klomp/snark/SnarkManager.java:716
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
#, java-format
msgid "Torrent with this info hash is already running: {0}"
msgstr ""
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:593
#, java-format
msgid ""
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
"only."
msgstr ""
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, java-format
msgid ""
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
"enabled before starting this torrent."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:619
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:624
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
#, java-format
msgid "ERROR - Out of memory, cannot create torrent from {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:635
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:637
#, java-format
msgid "Torrent added: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:672
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#, java-format
msgid "Fetching {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:675
#, java-format
msgid ""
"We have no saved peers and no other torrents are running. Fetch of {0} will "
"not succeed until you start another torrent."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:679
#, java-format
msgid "Adding {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:726
#: ../java/src/org/klomp/snark/SnarkManager.java:749
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
#, java-format
msgid "Failed to copy torrent file to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:972
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:974
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:976
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:978
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:980
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:981
#, java-format
msgid "Limit is {0}B"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:989
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
#, java-format
msgid "Adding torrents in {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
#, java-format
msgid "Download finished: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
#, java-format
msgid "Metainfo received for {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
#, java-format
msgid "Starting up torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
msgid "Unable to connect to I2P!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
#, java-format
msgid "Unable to add {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
msgid "Torrents"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
msgid "I2PSnark"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225
msgid "Refresh page"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
msgid "Forum"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
msgid "Status"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292
msgid "Hide Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299
msgid "Show Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
msgid "Torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
msgid "Estimated time remaining"
msgstr ""
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
msgid "ETA"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
msgid "Downloaded"
msgstr ""
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
msgid "RX"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324
msgid "Uploaded"
msgstr ""
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
msgid "TX"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
msgid "Down Rate"
msgstr ""
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
msgid "Rate"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
msgid "Up Rate"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
msgid "Stop all torrents and the I2P tunnel"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
msgid "Stop All"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
msgid "Start all torrents and the I2P tunnel"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
msgid "Start All"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
msgid "No torrents loaded."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
msgid "Totals"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
#, java-format
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
#, java-format
msgid "Magnet deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
#, java-format
msgid "Torrent file deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
#, java-format
msgid "Data file deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
#, java-format
msgid "Data dir deleted: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
msgid "Error creating torrent - you must select a tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#, java-format
msgid "Torrent created for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
msgid "Error creating torrent - you must enter a file or directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
msgid "I2P tunnel closed."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
msgid "Opening the I2P tunnel and starting all torrents."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814
msgid "Tracker Error"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
msgid "Seeding"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
msgid "Complete"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
msgid "OK"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
msgid "Stalled"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "No Peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
msgid "Stopped"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
msgid "Torrent details"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
msgid "Info"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "View files"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915
msgid "Open file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957
msgid "Stop the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
msgid "Stop"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
msgid "Start the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
msgid "Start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr ""
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format
msgid ""
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
"data will not be deleted) ?"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
msgid "Remove"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
msgid "Delete the .torrent file and the associated data file(s)"
msgstr ""
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
#, java-format
msgid ""
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
"data?"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
msgid "Delete"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
msgid "Unknown"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
msgid "Seed"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "Uninteresting (The peer has no pieces we need)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
msgid "Uninterested (We have no pieces the peer needs)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
#, java-format
msgid "Details at {0} tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
msgid "Add Torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
msgid "From URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
msgid ""
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
msgid "Add torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
#, java-format
msgid "You can also copy .torrent files to: {0}."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
msgid "Removing a .torrent will cause it to stop."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
msgid "Create Torrent"
msgstr ""
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
msgid "Data to seed"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
msgid "File or directory to seed (must be within the specified path)"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
msgid "Tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Select a tracker"
msgstr ""
#. out.write(_("Open trackers and DHT only"));
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Open trackers only"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
msgid "or"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
msgid "Specify custom tracker announce URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
msgid "Create torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
msgid "Configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "Data directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
msgid "Edit i2psnark.config and restart to change"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
msgid "Auto start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
msgid "If checked, automatically start torrents that are added"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
msgid "Theme"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
msgid "Startup delay"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
msgid "minutes"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
msgid "Total uploader limit"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
msgid "peers"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
msgid "Up bandwidth limit"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
msgid "Half available bandwidth recommended."
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
msgid "View or change router bandwidth"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
msgid "Use open trackers also"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
msgid ""
"If checked, announce torrents to open trackers as well as the tracker listed "
"in the torrent file"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
msgid "Open tracker announce URLs"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
msgid "Inbound Settings"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
msgid "Outbound Settings"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
msgid "I2CP host"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
msgid "I2CP port"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
msgid "I2CP options"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
msgid "Save configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Invalid magnet URL {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
#, java-format
msgid "Invalid info hash in magnet URL {0}"
msgstr ""
#. * dummies for translation
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] ""
msgstr[1] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
msgid "Completion"
msgstr ""
#. else unknown
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
msgid "Size"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
msgid "Files"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
msgid "Pieces"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
msgid "Piece size"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
msgid "Magnet link"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
msgid "Directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
msgid "Priority"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
msgid "Up to higher level directory"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
msgid "Torrent not found?"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
msgid "File not found in torrent?"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
msgid "complete"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
msgid "bytes remaining"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
msgid "Open"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
msgid "High"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
msgid "Normal"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
msgid "Skip"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
msgid "Save priorities"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
#, java-format
msgid "Torrent fetched from {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
#, java-format
msgid "Torrent already running: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
#, java-format
msgid "Torrent at {0} was not valid"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +0,0 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

View File

@ -28,6 +28,7 @@
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
@ -36,27 +37,47 @@
<!-- TODO: Move the web classes from the jar to the war - they are not part of the API
- This will require sponge to rewrite some seedless stuff that uses it.
-->
<target name="jar" depends="builddep, compile">
<target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.j}" outputproperty="workspace.changes.j.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/i2ptunnel.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.i2ptunnel.I2PTunnel" />
<attribute name="Class-Path" value="i2p.jar mstreaming.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/i2ptunnel.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" />
</uptodate>
</target>
<target name="bundle" depends="compile, precompilejsp">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="false" >
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="false" >
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="false" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
</target>
@ -70,19 +91,40 @@
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="true" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
</target>
<target name="war" depends="precompilejsp, bundle">
<target name="war" depends="precompilejsp, bundle, warUpToDate" unless="war.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="../jsp" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.w}" outputproperty="workspace.changes.w.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<war destfile="build/i2ptunnel.war" webxml="../jsp/web-out.xml"
basedir="../jsp/" excludes="web.xml, web-fragment.xml, web-out.xml, **/*.java, *.jsp">
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.w.tr}" />
</manifest>
</war>
</target>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="build/i2ptunnel.war" >
<srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, **/*.java, *.jsp" />
</uptodate>
</target>
<target name="precompilejsp" depends="jar" unless="precompilejsp.uptodate">
<delete dir="../jsp/WEB-INF/" />
<delete file="../jsp/web-fragment.xml" />
@ -110,6 +152,7 @@
<arg value="../jsp/" />
</java>
<javac debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="../jsp/WEB-INF/classes/" srcdir="../jsp/WEB-INF/classes" includes="**/*.java">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -141,6 +184,55 @@
splitindex="true"
windowtitle="I2PTunnel" />
</target>
<target name="compileTest">
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<!-- We need the ant runtime, as it includes junit -->
<javac srcdir="./src:./test" debug="true" source="1.5" target="1.5"
includeAntRuntime="true"
deprecation="on" destdir="./build/obj" >
<compilerarg line="${javac.compilerargs}" />
<classpath>
<pathelement location="../../../core/java/build/i2p.jar" />
<pathelement location="../../ministreaming/java/build/mstreaming.jar" />
</classpath>
</javac>
</target>
<target name="test" depends="clean, compileTest">
<junit printsummary="on" fork="yes">
<classpath>
<pathelement path="${classpath}" />
<pathelement location="./build/obj" />
<pathelement location="../../../core/java/build/i2p.jar" />
</classpath>
<batchtest>
<fileset dir="./test/">
<include name="**/*Test.java" />
</fileset>
</batchtest>
<formatter type="xml"/>
</junit>
<mkdir dir="../../../reports/" />
<mkdir dir="../../../reports/i2ptunnel/" />
<mkdir dir="../../../reports/i2ptunnel/junit/" />
<delete>
<fileset dir="../../../reports/i2ptunnel/junit">
<include name="TEST-*.xml"/>
</fileset>
</delete>
<copy todir="../../../reports/i2ptunnel/junit">
<fileset dir=".">
<include name="TEST-*.xml"/>
</fileset>
</copy>
<delete>
<fileset dir=".">
<include name="TEST-*.xml"/>
</fileset>
</delete>
</target>
<target name="clean">
<delete dir="./build" />
<delete dir="../jsp/WEB-INF/" />

View File

@ -1,26 +0,0 @@
@echo off
set Callfrom=%cd%
set Paras=%1
rem before calling make sure you have msys and mingw 's "bin" path
rem in your current searching path
rem type "set path" to check
if not exist ..\locale\*.only goto updateALL
rem put a messages_xx.only(eg messages_zh.only) into locale folder
rem this script will only touch the po file(eg zh) you specified, leaving other po files untact.
for %%i in (..\locale\*.only) do set PO=%%~ni
echo [Notice] Yu choose to Ony update the choosen file: %PO%.po
for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po-
call sh --login %cd%\bmsg.sh
for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po
goto end
:updateALL
call sh --login %cd%\bmsg.sh
:end
echo End of Message Bundling

View File

@ -18,6 +18,14 @@ then
POUPDATE=1
fi
# on windows, one must specify the path of commnad find
# since windows has its own retarded version of find.
if which find|grep -q -i windows ; then
export PATH=.:/bin:/usr/local/bin:$PATH
fi
# Fast mode - update ondemond
# set LG2 to the language you need in envrionment varibales to enable this
# add ../java/ so the refs will work in the po file
JPATHS="../java/src ../jsp/WEB-INF"
for i in ../locale/messages_*.po
@ -26,6 +34,11 @@ do
LG=${i#../locale/messages_}
LG=${LG%.po}
# skip, if specified
if [ $LG2 ]; then
[ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only.
fi
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
@ -72,15 +85,19 @@ do
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
if [ "$LG" != "en" ]
then
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
fi
done
rm -f $TMPFILE
# todo: return failure

View File

@ -169,6 +169,9 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R
// Use this rather than BufferedReader because we can't have readahead,
// since we are passing the stream on to I2PTunnelRunner
line = DataHelper.readLine(in);
if(line == null) {
break;
}
line = line.trim();
if (_log.shouldLog(Log.DEBUG))
_log.debug(getPrefix(requestId) + "Line=[" + line + "]");

View File

@ -10,7 +10,11 @@ import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.zip.GZIPOutputStream;
@ -49,7 +53,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
"Connection: close\r\n"+
"Proxy-Connection: close\r\n"+
"\r\n"+
"<html><head><title>503 Service Unavailable<title></head>\n"+
"<html><head><title>503 Service Unavailable</title></head>\n"+
"<body><h2>503 Service Unavailable</h2>\n" +
"<p>This I2P eepsite is unavailable. It may be down or undergoing maintenance.</p>\n" +
"</body></html>")
@ -94,23 +98,24 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
InputStream in = socket.getInputStream();
StringBuilder command = new StringBuilder(128);
Properties headers = readHeaders(in, command,
Map<String, List<String>> headers = readHeaders(in, command,
CLIENT_SKIPHEADERS, getTunnel().getContext());
headers.setProperty(HASH_HEADER, socket.getPeerDestination().calculateHash().toBase64());
headers.setProperty(DEST32_HEADER, Base32.encode(socket.getPeerDestination().calculateHash().getData()) + ".b32.i2p" );
headers.setProperty(DEST64_HEADER, socket.getPeerDestination().toBase64());
addEntry(headers, HASH_HEADER, socket.getPeerDestination().calculateHash().toBase64());
addEntry(headers, DEST32_HEADER, Base32.encode(socket.getPeerDestination().calculateHash().getData()) + ".b32.i2p");
addEntry(headers, DEST64_HEADER, socket.getPeerDestination().toBase64());
if ( (_spoofHost != null) && (_spoofHost.trim().length() > 0) )
headers.setProperty("Host", _spoofHost);
headers.setProperty("Connection", "close");
setEntry(headers, "Host", _spoofHost);
setEntry(headers, "Connection", "close");
// we keep the enc sent by the browser before clobbering it, since it may have
// been x-i2p-gzip
String enc = headers.getProperty("Accept-encoding");
String altEnc = headers.getProperty("X-Accept-encoding");
String enc = getEntryOrNull(headers, "Accept-encoding");
String altEnc = getEntryOrNull(headers, "X-Accept-encoding");
// according to rfc2616 s14.3, this *should* force identity, even if
// "identity;q=1, *;q=0" didn't.
headers.setProperty("Accept-encoding", "");
setEntry(headers, "Accept-encoding", "");
String modifiedHeader = formatHeaders(headers, command);
//String modifiedHeader = getModifiedHeader(socket);
@ -234,7 +239,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
//Change headers to protect server identity
StringBuilder command = new StringBuilder(128);
Properties headers = readHeaders(serverin, command,
Map<String, List<String>> headers = readHeaders(serverin, command,
SERVER_SKIPHEADERS, _ctx);
String modifiedHeaders = formatHeaders(headers, command);
compressedOut.write(modifiedHeaders.getBytes());
@ -360,13 +365,14 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
}
}
private static String formatHeaders(Properties headers, StringBuilder command) {
protected static String formatHeaders(Map<String, List<String>> headers, StringBuilder command) {
StringBuilder buf = new StringBuilder(command.length() + headers.size() * 64);
buf.append(command.toString().trim()).append("\r\n");
for (Iterator iter = headers.keySet().iterator(); iter.hasNext(); ) {
for (Iterator<String> iter = headers.keySet().iterator(); iter.hasNext(); ) {
String name = (String)iter.next();
String val = headers.getProperty(name);
buf.append(name.trim()).append(": ").append(val.trim()).append("\r\n");
for(String val: headers.get(name)) {
buf.append(name.trim()).append(": ").append(val.trim()).append("\r\n");
}
}
buf.append("\r\n");
return buf.toString();
@ -375,8 +381,45 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
/** ridiculously long, just to prevent OOM DOS @since 0.7.13 */
private static final int MAX_HEADERS = 60;
private static Properties readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException {
Properties headers = new Properties();
/**
* Add an entry to the multimap.
*/
private static void addEntry(Map<String, List<String>> headers, String key, String value) {
List<String> entry = headers.get(key);
if(entry == null) {
headers.put(key, entry = new ArrayList<String>());
}
entry.add(value);
}
/**
* Remove the other matching entries and set this entry as the only one.
*/
private static void setEntry(Map<String, List<String>> headers, String key, String value) {
List<String> entry = headers.get(key);
if(entry == null) {
headers.put(key, entry = new ArrayList<String>());
}
entry.clear();
entry.add(value);
}
/**
* Get the first matching entry in the multimap
* @return the first matching entry or null
*/
private static String getEntryOrNull(Map<String, List<String>> headers, String key) {
List<String> entries = headers.get(key);
if(entries == null || entries.size() < 1) {
return null;
}
else {
return entries.get(0);
}
}
protected static Map<String, List<String>> readHeaders(InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx) throws IOException {
HashMap<String, List<String>> headers = new HashMap<String, List<String>>();
StringBuilder buf = new StringBuilder(128);
boolean ok = DataHelper.readLine(in, command);
@ -438,7 +481,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
continue;
}
headers.setProperty(name, value);
addEntry(headers, name, value);
//if (_log.shouldLog(Log.DEBUG))
// _log.debug("Read the header [" + name + "] = [" + value + "]");
}

View File

@ -210,7 +210,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
*
*/
public void startRunning() {
Thread t = new I2PAppThread(this, "Server " + remoteHost + ':' + remotePort, true);
// prevent JVM exit when running outside the router
boolean isDaemon = getTunnel().getContext().isRouterContext();
Thread t = new I2PAppThread(this, "Server " + remoteHost + ':' + remotePort, isDaemon);
t.start();
}

View File

@ -115,7 +115,7 @@ public class EditBean extends IndexBean {
if (tun != null)
return "true".equalsIgnoreCase(tun.getSharedClient());
else
return true;
return false;
}
public boolean shouldDelay(int tunnel) {

View File

@ -0,0 +1,61 @@
package net.i2p.i2ptunnel;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.util.Map;
import java.util.List;
import junit.framework.TestCase;
public class I2PTunnelHTTPServerTest extends TestCase {
public InputStream fillInputStream(String headers) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(baos));
bw.write(headers);
bw.flush();
byte[] bytes = baos.toByteArray();
return new ByteArrayInputStream(bytes);
}
public void testSimpleHeader() throws IOException {
String headerString = "GET /blah HTTP/1.1\r\n";
headerString += "BLAH: something\r\n";
headerString += "\r\n";
InputStream in = fillInputStream(headerString);
Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], null);
assertEquals(headers.size(), 1); //One header
}
public void testDuplicateHeader() throws IOException {
String headerString = "GET /something HTTP/1.1\r\n";
headerString += "someHeader: blabla bla bloooo\r\n";
headerString += "someHeader: oh my, duplication!\r\n";
headerString += "\r\n";
InputStream in = fillInputStream(headerString);
Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], null);
assertEquals(headers.size(), 1);
assertEquals(headers.get("someHeader").size(), 2);
}
public void testDuplicateHeadersFormat() throws IOException {
String headerString = "GET /something HTTP/1.1\r\n";
headerString += "abc: def\r\n";
headerString += "abc: blaaah\r\n";
headerString += "manamana: toe toe toedoedoe\r\n";
headerString += "\r\n";
InputStream in = fillInputStream(headerString);
StringBuilder builder = new StringBuilder(128);
Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, builder, new String[0], null);
String result = I2PTunnelHTTPServer.formatHeaders(headers, builder);
int first = result.indexOf("abc");
assertTrue(first >= 0);
int second = result.indexOf("abc", first);
assertTrue(second >= 0);
}
}

View File

@ -400,7 +400,7 @@
<label for="localDestination" accesskey="L">
<%=intl._("Local destination")%>(<span class="accessKey">L</span>):
</label>
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
<span class="comment"><%=intl._("(if known)")%></span>
</div>
@ -465,7 +465,7 @@
<label><%=intl._("Jump URL List")%>:</label>
</div>
<div id="hostField" class="rowItem">
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="jumpList" title="List of helper URLs to offer when a host is not found in your addressbook" wrap="off"><%=editBean.getJumpList(curTunnel)%></textarea>
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="jumpList" title="List of helper URLs to offer when a host is not found in your addressbook" wrap="off" spellcheck="false"><%=editBean.getJumpList(curTunnel)%></textarea>
</div>
<div class="subdivider">
<hr />

View File

@ -186,7 +186,7 @@
<label for="localDestination" accesskey="L">
<%=intl._("Local destination")%>(<span class="accessKey">L</span>):
</label>
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
<textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>
<% if (!"".equals(editBean.getDestinationBase64(curTunnel))) { %>
<a href="/susidns/addressbook.jsp?book=private&hostname=<%=editBean.getTunnelName(curTunnel)%>&destination=<%=editBean.getDestinationBase64(curTunnel)%>#add"><%=intl._("Add to local addressbook")%></a>
<% } %>
@ -334,7 +334,7 @@
<label for="encrypt" accesskey="e">
<%=intl._("Encryption Key")%>:
</label>
<textarea rows="1" style="height: 3em;" cols="44" id="portField" name="encryptKey" title="Encrypt Key" wrap="off"><%=editBean.getEncryptKey(curTunnel)%></textarea>
<textarea rows="1" style="height: 3em;" cols="44" id="portField" name="encryptKey" title="Encrypt Key" wrap="off" spellcheck="false"><%=editBean.getEncryptKey(curTunnel)%></textarea>
</div>
<div id="portField" class="rowItem">
<label for="force" accesskey="c">
@ -365,7 +365,7 @@
<label for="accessList" accesskey="s">
<%=intl._("Access List")%>:
</label>
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="accessList" title="Access List" wrap="off"><%=editBean.getAccessList(curTunnel)%></textarea>
<textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="accessList" title="Access List" wrap="off" spellcheck="false"><%=editBean.getAccessList(curTunnel)%></textarea>
</div>
<div class="subdivider">
@ -374,7 +374,7 @@
<div class="rowItem">
<div id="optionsField" class="rowItem">
<label><%=intl._("Inbound connection limits (0 to disable)")%><br><%=intl._("Per client")%>:</label>
<label><%=intl._("Inbound connection limits (0=unlimited)")%><br><%=intl._("Per client")%>:</label>
</div>
<div id="portField" class="rowItem">
<label><%=intl._("Per minute")%>:</label>
@ -405,7 +405,7 @@
</div>
<div class="rowItem">
<div id="optionsField" class="rowItem">
<label><%=intl._("Max concurrent connections (0 to disable)")%>:</label>
<label><%=intl._("Max concurrent connections (0=unlimited)")%>:</label>
</div>
<div id="portField" class="rowItem">
<input type="text" id="port" name="maxStreams" value="<%=editBean.getMaxStreams(curTunnel)%>" class="freetext" />

View File

@ -0,0 +1,783 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2ptunnel package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-03-03 17:02-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr "داخلي"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "تم اعادة تحميل تغيرات الاعدادات"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "ابدأ النفق"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "توقيف النفق"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "تم حفظ تغيرات الاعدادات"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "فشل في حفظ الاعدادات"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "نفق جديد"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "مستخدم عادي"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "HTTP client"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "IRC برنامج"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "خادم عادي"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "HTTP خادم"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS 4/4a/5 بروكسي"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "SOCKS IRC بروكسي دردشة"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "اتصال/SSL/HTTPS بروكسي"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "IRC خادم"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "منفذ غير محدد"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr "I2P لوحة تحكم الأنفاق- حرر اعدادات النفق"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
msgid "Edit proxy settings"
msgstr "حرر اعدادات بروكسي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
msgid "New proxy settings"
msgstr "اعدادات بروكسي جديدة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
msgid "Name"
msgstr "اسم "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
msgid "Type"
msgstr "نوع"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
msgid "Description"
msgstr "وصف"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
msgid "Target"
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:162
msgid "Access Point"
msgstr "نفطة الوصول"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
msgid "required"
msgstr "مطلوب"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
msgid "Reachable by"
msgstr "متصل ب"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr "بروكسي خارجي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr "وجهة النفق"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
msgid "name or destination"
msgstr "اسم او اتجاه"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr "b32 غير منصوح باستعماله"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr "المستخدمين المشاركين"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr ""
"(شارك النفق مع باقي المستخدمين و irc/httpclients؟ التغيير بحاجة الى اعادة "
"التشغيل)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
msgid "Auto Start"
msgstr "بدأ تلقائي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
msgid "(Check the Box for 'YES')"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Advanced networking options"
msgstr "اعدادات متقدمة للشبكة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr ""
"(ملحوظة: عندما يشارك البروكسي الأنفاق، تطبق هذه الخيارات على جميع المشاركين)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
msgid "Tunnel Options"
msgstr "اعدادات النفق"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
msgid "Length"
msgstr "طول"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
msgid "0 hop tunnel (low anonymity, low latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
msgid "1 hop tunnel (medium anonymity, medium latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
msgid "2 hop tunnel (high anonymity, high latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "3 hop tunnel (very high anonymity, poor performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
msgid "hop tunnel (very poor performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
msgid "Variance"
msgstr "فرق"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
msgid "+/- 0-2 hop variance (not recommended)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
msgid "hop variance"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
msgid "Count"
msgstr "عد"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
msgid "tunnels"
msgstr "أنفاق"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "Backup Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
msgid "backup tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
msgid "Profile"
msgstr "بروفايل"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
msgid "interactive connection"
msgstr "اتصال تفاعلي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
msgid "bulk connection (downloads/websites/BT)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr "تأخر الاتصال"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
msgid "Router I2CP Address"
msgstr " I2CP عنوان"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
msgid "Host"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../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:479
msgid "Reduce tunnel quantity when idle"
msgstr "قلل قدر الأنفاق عند الانتظار"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
#: ../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/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
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:485
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:489
msgid "Idle minutes"
msgstr "دقائق الانتظار"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr "قفل النفق عند الانتظار"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr "مفتاح جديد عند الفتح"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Disable"
msgstr "ألغي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr "عطل النفق حتى الحاجة اليه"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr "مفتاح خاص"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
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:220
msgid "Local destination"
msgstr "وجهة محلية"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr "(اذا كان معروف)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
msgid "Username"
msgstr "اسم مستخدم"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
msgid "Password"
msgstr "كلمة السر"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr "اعدادات البروكسي الخارجي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
msgid "Custom options"
msgstr "خيارات خاصة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
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:514
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
msgid "Cancel"
msgstr "الغاء"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
msgid "Delete"
msgstr "خذف"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
msgid "Save"
msgstr "حفظ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
msgid "I2P Tunnel Manager - Edit Server Tunnel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
msgid "Edit server settings"
msgstr "حرر اعدادات الخادم"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
msgid "New server settings"
msgstr "اعدادت خادم جديد"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr "اسم موقع جديد"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr "(دعه فارغا من أجل البروكسي الخارجي)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr "ملف مفتاح الخاص"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr "أضف الى دفتر العناوين"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr "مفتاح التشفير"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr "أنشئ مفتاح جديد"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr "أنشئ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "(Tunnel must be stopped first)"
msgstr "(يجب ايقاف النفق)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr "قائمة بيضاء"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr "قائمة سوداء"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr "حد الاتصال الداخلي (0=unlimited)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr "لكل مستخدم"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr "لكل دقيقة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr "لكل ساعة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr "لكل يوم"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr "المجموع"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr "لاشئ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr "تقدير"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr "مخبئ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr "امضاء من"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr "غير"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
msgid "I2P Tunnel Manager - List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
msgid "Status Messages"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
msgid "Refresh"
msgstr "أنعش"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
msgid "Stop All"
msgstr "أوقف الجمبع"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
msgid "Start All"
msgstr "ابدأ الجميع"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
msgid "Restart All"
msgstr "أعد تشغيل الجمبع"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
msgid "Reload Config"
msgstr "أعد تحميل الاعدادات"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
msgid "I2P Server Tunnels"
msgstr "نفق الخادم I2P "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
msgid "Points at"
msgstr "متجه الى"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
msgid "Preview"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
msgid "Status"
msgstr "الحالة"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
msgid "Base32 Address"
msgstr "Base32 عنوان"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
msgid "No Preview"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
msgid "Starting..."
msgstr "يبدأ..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
msgid "Stop"
msgstr "أوقف"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
msgid "Running"
msgstr "يشتغل"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
msgid "Stopped"
msgstr "متوقف"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
msgid "Start"
msgstr "أبدأ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
msgid "New server tunnel"
msgstr "نفق جديد للخادم"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
msgid "Standard"
msgstr "عادي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
msgid "Create"
msgstr "أنشئ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
msgid "I2P Client Tunnels"
msgstr "نفق المستخدمين"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
msgid "Interface"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
msgid "Standby"
msgstr "انتظر"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
msgid "Outproxy"
msgstr "بروكسي خارجي"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
msgid "Destination"
msgstr "اتجاه"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
msgid "none"
msgstr "ﻻشيء"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
msgid "New client tunnel"
msgstr "نفق مستخدم جديد"

View File

@ -8,94 +8,118 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-04 17:23+0000\n"
"PO-Revision-Date: 2010-12-19 04:36+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"POT-Creation-Date: 2011-02-27 16:03+0000\n"
"PO-Revision-Date: 2011-02-27 17:38+0100\n"
"Last-Translator: \n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: German\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:475
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>."
msgstr "Um das Ziel in Ihrer Host-Datenbank zu besuchen, klicken Sie <a href=\"{0}\">hier</a>, und um das Ziel aus der kollidierenden Adresshelfer-Anfrage zu besuchen, <a href=\"{1}\">hier</a>!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:932
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
msgstr "Durch Klicken auf einen der untenstehenden Links bekommen Sie einen Adresshelfer von einem \"Sprung\"-Service:"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr "intern"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
msgstr "Ungültige Formulareingabe - wahrscheinlich haben Sie den \"Zurück\"-Knopf Ihres Browsers betätigt. Bitte neuladen!"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "Einstellungen für alle Tunnel neugeladen"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "Starte Tunnel ..."
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "Beende Tunnel ..."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "Änderungen der Einstellungen gespeichert"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "Einstellungen nicht gespeichert"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "Neuer Tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "Standardklient"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "HTTP-Klient"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "IRC-Klient"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "Standardserver"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "HTTP-Server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS-4/4a/5-Proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "SOCKS-IRC-Proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "CONNECT/SSL/HTTPS-Proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "IRC-Server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Streamr-Klient"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Streamr-Server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "HTTP Bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr "Host nicht gesetzt"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "Port nicht gesetzt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr "I2P-Tunnel-Manager - Kliententunnel bearbeiten"
@ -120,14 +144,14 @@ msgstr "Name"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
msgid "Type"
msgstr "Typ"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
msgid "Description"
msgstr "Beschreibung"
@ -138,357 +162,340 @@ msgstr "Ziel"
#: ../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
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162
msgid "Access Point"
msgstr "Zugriffspunkt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../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:172
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
msgid "required"
msgstr "benötigt"
#: ../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
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
msgid "Reachable by"
msgstr "Erreichbar von"
#: ../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 "Lokal (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 "Überall (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-Hosts (Bitte geben Sie ihre LAN-Adressen an!)"
#: ../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 "Anderen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr "Ausgehende Proxies"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr "Ziel des Tunnels"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
msgid "name or destination"
msgstr "Name oder Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:217
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr "B32-Adressen nicht empfohlen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr "versch. Klienten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
msgid "(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)"
msgstr "(Soll dieser Tunnel mit anderen Klienten und IRC/HTTP-Klienten geteilt werden? Änderungen benötigen Neustart des Klientenproxys)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:231
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
msgid "Auto Start"
msgstr "Automatischer Start"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
msgid "(Check the Box for 'YES')"
msgstr "(Aktiviere das Kästchen für 'ja')"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:237
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Advanced networking options"
msgstr "Erweiterte Netzwerkoptionen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid "(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)"
msgstr "(HINWEIS: Ist dieser Proxy konfiguriert, Tunnel mit anderen Klienten zu teilen, so gelten diese Optionen für alle Klienten des Proxys!)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:241
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
msgid "Tunnel Options"
msgstr "Tunneloptionen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
msgid "Length"
msgstr "Länge"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:269
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
msgid "0 hop tunnel (low anonymity, low latency)"
msgstr "0-Hop-Tunnel (geringe Anonymität, geringe Latenz)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:254
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
msgid "1 hop tunnel (medium anonymity, medium latency)"
msgstr "1-Hop-Tunnel (mittlere Anonymität, mittlere Latenz)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:258
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:277
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
msgid "2 hop tunnel (high anonymity, high latency)"
msgstr "2-Hop-Tunnel (hohe Anonymität, hohe Latenz)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:262
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "3 hop tunnel (very high anonymity, poor performance)"
msgstr "3-Hop-Tunnel (sehr hohe Anonymität, geringe Leistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:271
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:290
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
msgid "hop tunnel (very poor performance)"
msgstr "Hop-Tunnel (sehr geringe Leistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
msgid "Variance"
msgstr "Varianz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:283
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:302
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr "0-Hop-Varianz (keine zufällige Längenveränderung, konsistente Leistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:287
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:306
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
msgid "+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr "+ 0-1 Hop Varianz (mittlere zufällige Verlängerung, verringert die Leistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:291
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:310
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
msgid "+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr "+ 0-2 Hops Varianz (hohe zufällige Verlängerung, verringerte Leistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:295
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:314
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr "+/- 0-1 Hop Varianz (geringe zufällige Längenänderung, Standardleistung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:299
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:318
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
msgid "+/- 0-2 hop variance (not recommended)"
msgstr "+/- 0-2 Hops Varianz (nicht empfohlen)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:330
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
msgid "hop variance"
msgstr "Hops Varianz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
msgid "Count"
msgstr "Anzahl"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:323
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:342
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr "1 eingehender, 1 ausgehender Tunnel (geringe Bandbreitennutzung, weniger zuverlässig)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:327
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:346
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
msgid "2 inbound, 2 outbound tunnels (standard bandwidth usage, standard reliability)"
msgstr "2 eingehende, 2 ausgehende Tunnel (Standardbandbreitennutzung, zuverlässig)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:331
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
msgid "3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr "3 eingehende, 3 ausgehende Tunnel (hohe Bandbreitennutzung, zuverlässiger)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:340
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:359
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
msgid "tunnels"
msgstr "Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "Backup Count"
msgstr "Anzahl an Ersatztunneln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:352
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:371
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr "0 Ersatztunnel (0 Redundanz, keine zusätzliche Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:356
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:375
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr "1 Ersatztunnel in jede Richtung (geringe Redundanz, geringe Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:360
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
msgid "2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr "2 Ersatztunnel in jede Richtung (mittlere Redundanz, mittlere Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:364
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr "3 Ersatztunnel in jede Richtung (hohe Redundanz, hohe Ressourcennutzung)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:373
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:392
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
msgid "backup tunnels"
msgstr "Ersatztunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:380
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:387
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
msgid "interactive connection"
msgstr "Interaktive Verbindung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:391
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
msgid "bulk connection (downloads/websites/BT)"
msgstr "Mengenverbindung (Download/Webseiten/BitTorrent)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:393
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr "Verbindung verzögern"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr "für Verbindungen mit Anfragen/Antworten"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:414
msgid "I2CP Options"
msgstr "I2CP-Optionen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
msgid "Router I2CP Address"
msgstr "I2CP-Adresse des Routers"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:403
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:416
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
msgid "Host"
msgstr "Host"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:420
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../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 "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:452
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
msgid "Reduce tunnel quantity when idle"
msgstr "Anzahl an Tunneln im Leerlauf reduzieren"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:415
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:479
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:426
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:442
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:454
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
#: ../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/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
msgid "Enable"
msgstr "aktiviert"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:458
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
msgid "Reduced tunnel count"
msgstr "Reduzierte Tunnelanzahl"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:423
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:462
#: ../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:489
msgid "Idle minutes"
msgstr "Minuten Inaktivität"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr "nicht genutzte Tunnel schließen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr "Neue Schlüssel beim Wiederöffnen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:441
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Disable"
msgstr "deaktiviert"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:447
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr "Aufbau des Tunnela verzögern, bis dieser benötigt wird"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr "Dauerhafter privater Schlüssel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
msgid "File"
msgstr "Datei"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:467
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220
msgid "Local destination"
msgstr "lokales Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr "(falls bekannt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr "lokale Autorisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:483
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:497
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
msgid "Username"
msgstr "Benutzername"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
msgid "Password"
msgstr "Passwort"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:491
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr "Outproxy Autorisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:507
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:498
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr "List der Sprung-URLs"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
msgid "Custom options"
msgstr "Eigene Optionen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:511
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:502
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
msgid "NOTE: If tunnel is currently running, most changes will not take effect until tunnel is stopped and restarted."
msgstr "HINWEIS: Falls der Tunnel gerade aktiv ist, werden die meisten Änderungen erst nach einem Neustart des Tunnels wirksam."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:513
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:504
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
msgid "Cancel"
msgstr "Abbrechen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
msgid "Delete"
msgstr "Löschen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:510
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
msgid "Save"
msgstr "Speichern"
@ -504,92 +511,124 @@ msgstr "Servereinstellungen ändern"
msgid "New server settings"
msgstr "Neue Servereinstellungen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr "Name der Webseite"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr "(für ausgehende Proxies leer lassen)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr "private Schlüsseldatei"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr "zum lokalen Adressbuch hinzufügen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:252
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr "Signatur des Namens"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:424
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr "Leaseset verschlüsseln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:430
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr "Schlüssel zum verschlüsseln"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr "Erzeuge neuen Schlüssel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:436
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr "Erzeugen"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:496
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "(Tunnel must be stopped first)"
msgstr "(Tunnel muss zuerst beendet sein)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:440
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr "Zugang beschränken"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:446
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr "Zugangsliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr "Sperrliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr "Zugangsliste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:450
msgid "(Restrict to these clients only)"
msgstr "(Zugang wird auf diese Klienten beschränkt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr "Begrenzung eingehender Verbindungen (0=unbegrenzt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:466
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr "pro Klient"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr "pro Minute"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr "pro Stunde"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr "pro Tag"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr "Gesamt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr "max. Anzahl gleichzeitiger Verbindungen (0=unbegrenzt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr "Neuer Zertifizierungstyp"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:468
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr "Keiner"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr "Hashcash (Durchsatz)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr "Hashcash Berechnungszeit"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:480
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr "Abschätzung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr "Versteckt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr "Signiert (unterschrieben von)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:492
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr "Zertifikat modifizieren"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:494
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr "Modifizieren"
@ -639,7 +678,7 @@ msgstr "Vorschau"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:278
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
msgid "Status"
msgstr "Status"
@ -652,30 +691,30 @@ msgid "No Preview"
msgstr "Keine Vorschau"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
msgid "Starting..."
msgstr "Starte ..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
msgid "Stop"
msgstr "Stopp"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
msgid "Running"
msgstr "Aktiv"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
msgid "Stopped"
msgstr "Gestoppt"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
msgid "Start"
msgstr "Start"
@ -684,12 +723,12 @@ msgid "New server tunnel"
msgstr "Neuer Servertunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
msgid "Standard"
msgstr "Standard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:379
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
msgid "Create"
msgstr "Erstellen"
@ -698,27 +737,40 @@ msgid "I2P Client Tunnels"
msgstr "I2P-Klienten-Tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
msgid "Interface"
msgstr "Interface"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
msgid "Standby"
msgstr "Wartestellung"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
msgid "Outproxy"
msgstr "Ausgehender Proxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:348
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
msgid "Destination"
msgstr "Ziel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
msgid "none"
msgstr "Keiner"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:375
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
msgid "New client tunnel"
msgstr "Neuer Kliententunnel"
#~ msgid "Locally (127.0.0.1)"
#~ msgstr "Lokal (127.0.0.1)"
#~ msgid "Everyone (0.0.0.0)"
#~ msgstr "Überall (0.0.0.0)"
#~ msgid "LAN Hosts (Please specify your LAN address)"
#~ msgstr "LAN-Hosts (Bitte geben Sie ihre LAN-Adressen an!)"
#~ msgid "Other"
#~ msgstr "Anderen"
#~ msgid "I2CP Options"
#~ msgstr "I2CP-Optionen"
#~ msgid "(Restrict to these clients only)"
#~ msgstr "(Zugang wird auf diese Klienten beschränkt)"

View File

@ -0,0 +1,780 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the i2ptunnel package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr ""
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr ""
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
msgid "Edit proxy settings"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
msgid "New proxy settings"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
msgid "Name"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
msgid "Type"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
msgid "Description"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
msgid "Target"
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:162
msgid "Access Point"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
msgid "required"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
msgid "Reachable by"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
msgid "name or destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
msgid "Auto Start"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
msgid "(Check the Box for 'YES')"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Advanced networking options"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
msgid "Tunnel Options"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
msgid "Length"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
msgid "0 hop tunnel (low anonymity, low latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
msgid "1 hop tunnel (medium anonymity, medium latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
msgid "2 hop tunnel (high anonymity, high latency)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "3 hop tunnel (very high anonymity, poor performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
msgid "hop tunnel (very poor performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
msgid "Variance"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
msgid "+/- 0-2 hop variance (not recommended)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
msgid "hop variance"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
msgid "Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
msgid "tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "Backup Count"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
msgid "backup tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
msgid "Profile"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
msgid "interactive connection"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
msgid "bulk connection (downloads/websites/BT)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
msgid "Router I2CP Address"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
msgid "Host"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../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:479
msgid "Reduce tunnel quantity when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
#: ../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/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
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:485
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:489
msgid "Idle minutes"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Disable"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
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:220
msgid "Local destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
msgid "Username"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
msgid "Password"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
msgid "Custom options"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
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:514
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
msgid "Cancel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
msgid "Delete"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
msgid "Save"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
msgid "I2P Tunnel Manager - Edit Server Tunnel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
msgid "Edit server settings"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
msgid "New server settings"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "(Tunnel must be stopped first)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
msgid "I2P Tunnel Manager - List"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
msgid "Status Messages"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
msgid "Refresh"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
msgid "Stop All"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
msgid "Start All"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
msgid "Restart All"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
msgid "Reload Config"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
msgid "I2P Server Tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
msgid "Points at"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
msgid "Preview"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
msgid "Status"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
msgid "Base32 Address"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
msgid "No Preview"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
msgid "Starting..."
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
msgid "Stop"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
msgid "Running"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
msgid "Stopped"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
msgid "Start"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
msgid "New server tunnel"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
msgid "Standard"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
msgid "Create"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
msgid "I2P Client Tunnels"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
msgid "Interface"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
msgid "Standby"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
msgid "Outproxy"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
msgid "Destination"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
msgid "none"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
msgid "New client tunnel"
msgstr ""

View File

@ -6,27 +6,28 @@
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-20 19:26+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-02-20 12:14+0000\n"
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
"Language-Team: Dutch <>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href=\"{1}"
"\">here</a>."
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
"Om de destination in je host database te bezoeken, klik <a href=\"{0}"
"\">hier</a>. Om de conflicterende adreshelper destination te bezoeken, klik "
"<a href=\"{1}\">hier</a>."
"Om de destination in je host database te bezoeken, klik <a href="
"\"{0}\">hier</a>. Om de conflicterende adreshelper destination te bezoeken, "
"klik <a href=\"{1}\">hier</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid ""
@ -40,7 +41,7 @@ msgstr ""
msgid "internal"
msgstr "intern"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
@ -48,78 +49,86 @@ msgstr ""
"Ongeldige formulier verzonden, waarschijnlijk doordat je de 'back' of "
"'reload' button van je browser hebt gebruikt. Verzend opnieuw."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "Configuratie van alle tunnels opnieuw geladen"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "Opstarten van tunnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "Stoppen van tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "Configuratie wijzigingen opgeslagen"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "Opslaan van de configuratie mislukt"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "Nieuwe Tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "Standaard client"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "HTTP client"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "IRC client"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "Standaard server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "HTTP server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS 4/4a/5 proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "SOCKS IRC proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "CONNECT/SSL/HTTPS proxy"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "IRC server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Streamr client"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Streamr server"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "HTTP bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr "Host niet opgegeven"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "Poort niet opgegeven"
@ -604,8 +613,8 @@ msgid "Access List"
msgstr "Toegangslijst"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0 to disable)"
msgstr "Inkomende connectie limieten (0 om uit te schakelen)"
msgid "Inbound connection limits (0=unlimited)"
msgstr "Inkomende connectie limieten (0=onbeperkt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
@ -628,8 +637,8 @@ msgid "Total"
msgstr "Totaal"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0 to disable)"
msgstr "Maximum gelijktijdige connecties (0 om uit te schakelen)"
msgid "Max concurrent connections (0=unlimited)"
msgstr "Maximum gelijktijdige connecties (0=onbeperkt)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-17 18:54+0000\n"
"PO-Revision-Date: 2011-01-18 00:34+0500\n"
"POT-Creation-Date: 2011-02-14 18:14+0000\n"
"PO-Revision-Date: 2011-02-14 23:24+0500\n"
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
@ -32,81 +32,90 @@ msgstr "Jump-сервисы, которые, возможно, знают нуж
msgid "internal"
msgstr "внутренний"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:170
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
msgstr "Неправильно переданная форма, возможно вы использовали действие браузера \"назад\" или \"обновить\". Пожалуйста повторите попытку."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:217
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "Конфигурация для всех туннелей перечитана"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:229
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "Запуск туннеля"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:242
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "Остановка туннеля"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "Настройки сохранены"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "Не удалось сохранить настройки"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "Новый туннель"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:409
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "Обычный клиент"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:410
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "HTTP-клиент"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:411
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "IRC-клиент"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:412
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "Обычный сервер"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:413
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "HTTP-сервер"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS 4/4a/5 прокси"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:415
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "SOCKS IRC прокси"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:416
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "CONNECT/SSL/HTTPS прокси"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "IRC-сервер"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Streamr-клиент"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Streamr-сервер"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "HTTP bidir (экспериментальный двунаправленный режим, инструкцию спрашивайте у sponge)"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:508
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr "Хост не задан"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:512
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "Порт не задан"
@ -560,8 +569,8 @@ msgid "Access List"
msgstr "Список доступа"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0 to disable)"
msgstr "Ограничение входящих соединений (0 для отключения)"
msgid "Inbound connection limits (0=unlimited)"
msgstr "Ограничение входящих соединений (0=неограниченно)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
@ -584,8 +593,8 @@ msgid "Total"
msgstr "Всего"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0 to disable)"
msgstr "Максимум одновременных соединений (0 для отключения)"
msgid "Max concurrent connections (0=unlimited)"
msgstr "Максимум одновременных соединений (0=неограниченно)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"

View File

@ -8,85 +8,131 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-10-04 02:45+0000\n"
"PO-Revision-Date: 2010-05-29 10:57+0800\n"
"Last-Translator: walking <walking@mail.i2p>\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-02-12 20:07+0800\n"
"Last-Translator: \n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Chinese\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:492
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid ""
"To visit the destination in your host database, click <a href=\"{0}\">here</"
"a>. To visit the conflicting addresshelper destination, click <a href=\"{1}"
"\">here</a>."
"a>. To visit the conflicting addresshelper destination, click <a href="
"\"{1}\">here</a>."
msgstr ""
"域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击<a href="
"\"{0}\">这里</a>。要访问【地址助手】返回的目标主机请点<a href=\"{1}\">这里</"
"a>。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:909
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的"
"主机:"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:372
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr "内部"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
msgid ""
"Invalid form submission, probably because you used the 'back' or 'reload' "
"button on your browser. Please resubmit."
msgstr ""
"网页提交无效,可能的原因是您使用了浏览器的“后退”和“刷新”按钮,导致表单过期,"
"请重新提交。"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "所有隧道都已根据当前配置重启"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "正在启动隧道"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "正在关闭隧道"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "配置修改成功"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "配置保存失败"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "新建隧道"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "标准客户端"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "HTTP 客户端"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "IRC 客户端"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "标准服务器"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "HTTP 服务器"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "SOCKS4/4A/5 代理"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "SOCKS IRC 代理"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "CONNECT/SSL/HTTPS 代理"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "IRC 服务器"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:401
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Streamr 客户端"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:402
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Streamr 服务器"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:403
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "双向http"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr "主机未设置"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "端口未设置"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr "I2P 隧道管理器 - 编辑客户端隧道"
@ -111,14 +157,14 @@ msgstr "名称"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
msgid "Type"
msgstr "类型"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
msgid "Description"
msgstr "描述"
@ -129,83 +175,66 @@ 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
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162
msgid "Access Point"
msgstr "接入点"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
#: ../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:172
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
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
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
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 "其他"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr "出口代理"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr "隧道目标"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
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/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr "请避免使用b32地址。"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr "共享客户端"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
msgid ""
"(Share tunnels with other clients and irc/httpclients? Change requires "
"restart of client proxy)"
msgstr "(与其他客户端例如IRC/HTTP共享隧道修改需要重新启动)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
msgid "Auto Start"
msgstr "自动启动"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
msgid "(Check the Box for 'YES')"
msgstr "(选中表示\"是\")"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:234
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:249
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
msgid "Advanced networking options"
msgstr "高级网络设置"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
msgid ""
"(NOTE: when this client proxy is configured to share tunnels, then these "
"options are for all the shared proxy clients!)"
@ -213,246 +242,270 @@ msgstr ""
"(注意:此客户代理被设置使用共享隧道时,这些设置将影响所有使用共享隧道的客户"
"端!)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
msgid "Tunnel Options"
msgstr "隧道选项"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
msgid "Length"
msgstr "长度"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
msgid "0 hop tunnel (low anonymity, low latency)"
msgstr "直连(匿名性无,延迟低)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:264
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
msgid "1 hop tunnel (medium anonymity, medium latency)"
msgstr "隧道跳点x1(匿名性中,延迟中)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
msgid "2 hop tunnel (high anonymity, high latency)"
msgstr "隧道跳点x2(匿名性高,延迟高)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:272
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
msgid "3 hop tunnel (very high anonymity, poor performance)"
msgstr "隧道跳点x3(匿名性优,影响性能)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
msgid "hop tunnel (very poor performance)"
msgstr "跳点隧道(严重影响性能)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:286
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
msgid "Variance"
msgstr "随机变化"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:293
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
msgid "0 hop variance (no randomisation, consistant performance)"
msgstr "隧道长度恒定(随机性无,性能稳定)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
msgid ""
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
msgstr "隧道长度+ 0-1(随机性中,影响性能)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
msgid ""
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
msgstr "隧道长度+ 0-2(随机性高,影响性能)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:305
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
msgstr "隧道长度+/- 0-1(随机性标准,正常性能)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
msgid "+/- 0-2 hop variance (not recommended)"
msgstr "隧道程度+/- 0-2(不推荐)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
msgid "hop variance"
msgstr "节点数量"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:313
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:326
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
msgid "Count"
msgstr "计数"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:333
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
msgstr "出/入站隧道x1(带宽低,低可靠性)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
msgid ""
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
"reliability)"
msgstr "出/入站隧道x2(带宽标准,标准稳定性)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
msgid ""
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
msgstr "出/入站隧道x3(带宽高,高稳定性)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
msgid "tunnels"
msgstr "隧道"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:342
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:355
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
msgid "Backup Count"
msgstr "备用数量"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
msgstr "无备用隧道(无冗余,不增加资源占用)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:366
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
msgstr "备用隧道对x1 (低冗余,低资源占用)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
msgid ""
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
msgstr "备用隧道对x2 (中冗余,中资源占用)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:374
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
msgstr "备用隧道对x3 (高冗余,高资源占用)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
msgid "backup tunnels"
msgstr "备用隧道"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:377
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
msgid "Profile"
msgstr "连接类型"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
msgid "interactive connection"
msgstr "速度连接"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
msgid "bulk connection (downloads/websites/BT)"
msgstr "效率连接(下载/WEB/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:390
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr "连接延迟断开"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr "单请求/响应连接"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
#: ../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:386
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
msgid "Router I2CP Address"
msgstr "路由器I2CP地址"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:400
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
msgid "Host"
msgstr "主机"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../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:410
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
msgid "Reduce tunnel quantity when idle"
msgstr "空闲时缩减隧道数量"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:446
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
#: ../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/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
msgid "Enable"
msgstr "启用"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:449
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
msgid "Reduced tunnel count"
msgstr "削减后的隧道数量"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
#: ../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:489
msgid "Idle minutes"
msgstr "空闲时间(分钟)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr "空闲时关闭隧道"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr "重新打开隧道时使用新密钥"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
msgid "Disable"
msgstr "禁用"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr "仅在请求时打开"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr "永久私有密钥"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
msgid "File"
msgstr "文件"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220
msgid "Local destination"
msgstr "本地目标"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr "(如果已知)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr "本地认证"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
msgid "Username"
msgstr "用户名"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
msgid "Password"
msgstr "密码"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr "出口代理认证"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr "跳转服务列表"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
msgid "Custom options"
msgstr "自定义选项"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
msgid ""
"NOTE: If tunnel is currently running, most changes will not take effect "
"until tunnel is stopped and restarted."
@ -460,18 +513,18 @@ msgstr ""
"注意:如果当前隧道已经启动,设置需要【停止】并重新【启动】相应隧道后才能生"
"效。"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
msgid "Cancel"
msgstr "取消"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
msgid "Delete"
msgstr "删除"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
msgid "Save"
msgstr "保存"
@ -487,88 +540,126 @@ msgstr "服务器隧道设置"
msgid "New server settings"
msgstr "新建服务器设置"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr "网站名称"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr "(出口代理这里请置空)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr "私钥文件"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr "添加至本地地址簿"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr "主机名签名"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr "加密赁集"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr "加密密钥"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr "生成新密钥"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr "生成"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
msgid "(Tunnel must be stopped first)"
msgstr "(必须先停止隧道)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr "限制访问列表"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:437
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr "白名单"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr "黑名单"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr "访问列表"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
msgid "(Restrict to these clients only)"
msgstr "(仅允许这些客户访问)"
# disable=>noLimit
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr "入站连接限制(0=无限制)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:457
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr "按客户端"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr "按分钟"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr "按小时"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr "按天"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr "总数"
# disable=>noLimit
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr "最大并发连接数(0=无限制)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr "新建证书类型"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr "无"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr "Hashcash (强度)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr "Hashcash 计算时间"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr "估算"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr "隐藏"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr "签名(签名者)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr "修改证书"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr "修改"
@ -618,7 +709,7 @@ msgstr "预览"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:278
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
msgid "Status"
msgstr "状态"
@ -631,30 +722,30 @@ msgid "No Preview"
msgstr "无预览"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
msgid "Starting..."
msgstr "正在启动..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
msgid "Stop"
msgstr "停止"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
msgid "Running"
msgstr "运行中"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
msgid "Stopped"
msgstr "已停止"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
msgid "Start"
msgstr "启动"
@ -663,12 +754,12 @@ msgid "New server tunnel"
msgstr "新建服务器隧道"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
msgid "Standard"
msgstr "标准"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
msgid "Create"
msgstr "创建"
@ -677,25 +768,47 @@ msgid "I2P Client Tunnels"
msgstr "I2P客户端隧道"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
msgid "Interface"
msgstr "网络接口"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
msgid "Standby"
msgstr "等待"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
msgid "Outproxy"
msgstr "出口代理"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:350
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
msgid "Destination"
msgstr "目标"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
msgid "none"
msgstr "无"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
msgid "New client tunnel"
msgstr "新建客户隧道"
#~ msgid "Locally (127.0.0.1)"
#~ msgstr "本地(127.0.0.1)"
#~ msgid "Everyone (0.0.0.0)"
#~ msgstr "任何人(0.0.0.0)"
#~ msgid "LAN Hosts (Please specify your LAN address)"
#~ msgstr "局域网(请指定LAN地址)"
#~ msgid "Other"
#~ msgstr "其他"
#~ msgid "I2CP Options"
#~ msgstr "I2CP选项"
#~ msgid "(Restrict to these clients only)"
#~ msgstr "(仅允许这些客户访问)"
#~ msgid "Unimplemented"
#~ msgstr "尚未实现"

View File

@ -96,14 +96,39 @@
srcdir="./java/src"
debug="true" source="1.5" target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
classpath="./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="compile">
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./jettylib/org.mortbay.jetty.jar" basedir="./build/obj" includes="**/*.class" update="true" >
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="jettylib/org.mortbay.jetty.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" />
</uptodate>
</target>
<target name="clean" >
<delete dir="./build" />
<delete file="${verified.filename}" />

View File

@ -24,13 +24,40 @@
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<!-- half of this is deprecated classes so turn deprecation off -->
<javac srcdir="./src" debug="true" deprecation="off" source="1.5" target="1.5" destdir="./build/obj" classpath="../../../core/java/build/i2p.jar" >
<javac srcdir="./src" debug="true" deprecation="off" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj" classpath="../../../core/java/build/i2p.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="compile">
<jar destfile="./build/mstreaming.jar" basedir="./build/obj" includes="**/*.class" />
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/mstreaming.jar" basedir="./build/obj" includes="**/*.class" >
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/mstreaming.jar" >
<srcfiles dir= "." includes="build/obj/**/*.class" />
</uptodate>
</target>
<target name="javadoc">
<mkdir dir="./build" />
<mkdir dir="./build/javadoc" />

View File

@ -1,17 +0,0 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

View File

@ -46,6 +46,7 @@
<javac
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -61,41 +62,68 @@
</classpath>
</javac>
</target>
<target name="jar" depends="compile">
<!-- the jar with the latest message classes from the jsps, and the war too -->
<target name="jar" depends="jar1, war, bundle" />
<!-- the jar without the latest message classes from the jsps -->
<target name="jar1" depends="compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
<arg value="../locale" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.j}" outputproperty="workspace.changes.j.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<!-- top level installer will rename to jrobin.jar -->
<!-- DTG added in 0.8.4, not in the classpath for very old installs, before we changed wrapper.config to specify * -->
<attribute name="Class-Path" value="i2p.jar router.jar jrobin.jar desktopgui.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" />
</manifest>
</jar>
<delete dir="./tmpextract" />
<!-- jrobin taken out of routerconsole.jar in 0.7.12
<delete dir="./tmpextract" />
<unjar src="../../jrobin/jrobin-1.4.0.jar" dest="./tmpextract" />
<jar destfile="./build/routerconsole.jar" basedir="./tmpextract" update="true" />
<delete dir="./tmpextract" />
-->
</target>
<ant target="war" />
<!-- this is tricky because the message classes go in the jar, not in the war -->
<target name="bundle" depends="jar1, precompilejsp" >
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="false" >
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="false" >
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="false" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
<!-- jar again to get the latest messages_*.class files -->
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" />
</target>
<target name="poupdate" depends="build">
<ant target="war" />
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/routerconsole.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" />
</uptodate>
</target>
<target name="poupdate" depends="precompilejsp">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
@ -106,19 +134,43 @@
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="true" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
</target>
<target name="war" depends="precompilejsp">
<!-- does NOT update the message classes, as those go in the jar -->
<target name="war" depends="precompilejsp, warUpToDate" unless="war.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="../jsp" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.w}" outputproperty="workspace.changes.w.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<!-- Don't include the css in the war, the main build.xml will copy it to docs/themes/console/ -->
<war destfile="build/routerconsole.war" webxml="../jsp/web-out.xml"
basedir="../jsp/" excludes="web.xml, *.css, **/*.java, *.jsp, *.jsi, web-fragment.xml, web-out.xml">
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.w.tr}" />
</manifest>
</war>
</target>
<target name="precompilejsp" unless="precompilejsp.uptodate">
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="build/routerconsole.war" >
<srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, *.css, **/*.java, *.jsp, *.jsi" />
</uptodate>
</target>
<target name="precompilejsp" depends="jar1" unless="precompilejsp.uptodate">
<delete dir="../jsp/WEB-INF/" />
<delete file="../jsp/web-fragment.xml" />
<delete file="../jsp/web-out.xml" />
@ -184,6 +236,7 @@
<javac debug="true" deprecation="on" source="1.5" target="1.5"
encoding="UTF-8"
includeAntRuntime="false"
destdir="../jsp/WEB-INF/classes/"
srcdir="../jsp/WEB-INF/classes" includes="**/*.java">
<compilerarg line="${javac.compilerargs}" />
@ -218,7 +271,7 @@
</target>
<uptodate property="precompilejsp.uptodate" targetfile="../jsp/web-out.xml">
<srcfiles dir= "../jsp" includes="**/*.jsp, **/*.html, *.css, susimail/susimail, web.xml"/>
<srcfiles dir= "../jsp" includes="**/*.jsp, *.jsi, **/*.html, *.css, susimail/susimail, web.xml"/>
</uptodate>
<target name="javadoc">

View File

@ -1,26 +0,0 @@
@echo off
set Callfrom=%cd%
set Paras=%1
rem before calling make sure you have msys and mingw 's "bin" path
rem in your current searching path
rem type "set path" to check
if not exist ..\locale\*.only goto updateALL
rem put a messages_xx.only(eg messages_zh.only) into locale folder
rem this script will only touch the po file(eg zh) you specified, leaving other po files untact.
for %%i in (..\locale\*.only) do set PO=%%~ni
echo [Notice] Yu choose to Ony update the choosen file: %PO%.po
for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po-
call sh --login %cd%\bmsg.sh
for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po
goto end
:updateALL
call sh --login %cd%\bmsg.sh
:end
echo End of Message Bundling

View File

@ -18,6 +18,14 @@ then
POUPDATE=1
fi
# on windows, one must specify the path of commnad find
# since windows has its own retarded version of find.
if which find|grep -q -i windows ; then
export PATH=.:/bin:/usr/local/bin:$PATH
fi
# Fast mode - update ondemond
# set LG2 to the language you need in envrionment varibales to enable this
#
# generate strings/Countries.java from ../../../installer/resources/countries.txt
#
@ -54,6 +62,11 @@ do
LG=${i#../locale/messages_}
LG=${LG%.po}
# skip, if specified
if [ $LG2 ]; then
[ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only.
fi
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
@ -106,15 +119,19 @@ do
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
if [ "$LG" != "en" ]
then
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
fi
done
rm -f $TMPFILE
# todo: return failure

View File

@ -28,10 +28,13 @@ public class CSSHelper extends HelperBase {
return url;
}
/** change default language for the router but don't save it */
/** change default language for the router AND save it */
public void setLang(String lang) {
if (lang != null && lang.length() > 0)
// Protected with nonce in css.jsi
if (lang != null && lang.length() == 2 && !lang.equals(_context.getProperty(Messages.PROP_LANG))) {
_context.router().setConfigSetting(Messages.PROP_LANG, lang);
_context.router().saveConfig();
}
}
/** needed for conditional css loads for zh */
@ -60,4 +63,13 @@ public class CSSHelper extends HelperBase {
.append("</title>");
return buf.toString();
}
/**
* Should we allow a refreshing IFrame?
* @since 0.8.5
*/
public boolean allowIFrame(String ua) {
return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
ua.startsWith("ELinks") || ua.startsWith("Dillo"));
}
}

View File

@ -22,7 +22,7 @@ public class ConfigReseedHelper extends HelperBase {
public String modeChecked(int mode) {
boolean required = _context.getBooleanProperty(Reseeder.PROP_SSL_REQUIRED);
boolean disabled = _context.getBooleanProperty(Reseeder.PROP_SSL_DISABLE);
boolean disabled = _context.getBooleanPropertyDefaultTrue(Reseeder.PROP_SSL_DISABLE);
if ((mode == 0 && (!disabled) && (!required)) ||
(mode == 1 && (!disabled) && required) ||
(mode == 2 && disabled))

View File

@ -46,9 +46,10 @@ public class ConfigUIHelper extends HelperBase {
return rv;
}
private static final String langs[] = {"de", "en", "es", "fr", "nl", "pt", "ru", "sv", "zh"};
private static final String flags[] = {"de", "us", "es", "fr", "nl", "pt", "ru", "se", "cn"};
private static final String xlangs[] = {_x("German"), _x("English"), _x("Spanish"),_x("French"),
private static final String langs[] = {"ar", "de", "en", "es", "fr", "nl", "pt", "ru", "sv", "zh"};
private static final String flags[] = {"lang_ar", "de", "us", "es", "fr", "nl", "pt", "ru", "se", "cn"};
private static final String xlangs[] = {_x("Arabic"),
_x("German"), _x("English"), _x("Spanish"),_x("French"),
_x("Dutch"), _x("Portuguese"), _x("Russian"),
_x("Swedish"), _x("Chinese")};

View File

@ -19,19 +19,26 @@ public class ContentHelper extends HelperBase {
_startAtBeginning = Boolean.valueOf(""+moo).booleanValue();
}
public void setLang(String l) {
/*****
if((_lang == null || !_lang.equals(l)) && (l != null)) {
//Set language for router console
_lang = l;
TODO - Temporary for 0.8.4
Needed for desktopgui. But there's no nonce protection.
Move the following to CSSHelper setLang(), or disable completely,
See comments in CSSHelper
if(_context == null) {
setContextId(null);
}
//Set language persistently throughout I2P
_context.router().setConfigSetting(Messages.PROP_LANG, _lang);
_context.router().saveConfig();
_context.setProperty(Messages.PROP_LANG, _lang);
if (_context.getBooleanProperty("desktopgui.enabled")) {
//Set language persistently throughout I2P
_context.router().setConfigSetting(Messages.PROP_LANG, _lang);
_context.router().saveConfig();
_context.setProperty(Messages.PROP_LANG, _lang);
}
}
*****/
}
public void setMaxLines(String lines) {

View File

@ -213,10 +213,15 @@ public class PluginUpdateHandler extends UpdateHandler {
if (up.haveKey(pubkey)) {
// the key is already in the TrustedUpdate keyring
// verify the sig and verify that it is signed by the signer in the plugin.config file
// Allow "" as the previously-known signer
String signingKeyName = up.verifyAndGetSigner(f);
if (!signer.equals(signingKeyName)) {
if (!(signer.equals(signingKeyName) || "".equals(signingKeyName))) {
f.delete();
to.delete();
if (signingKeyName == null)
_log.error("Failed to verify plugin signature, corrupt plugin or bad signature, signed by: " + signer);
else
_log.error("Plugin signer \"" + signer + "\" does not match existing signer in plugin.config file \"" + signingKeyName + "\"");
statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
return;
}
@ -226,6 +231,7 @@ public class PluginUpdateHandler extends UpdateHandler {
// bad or duplicate key
f.delete();
to.delete();
_log.error("Bad key or key mismatch - Failed to add plugin key \"" + pubkey + "\" for plugin signer \"" + signer + "\"");
statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
return;
}
@ -235,6 +241,11 @@ public class PluginUpdateHandler extends UpdateHandler {
if (!signer.equals(signingKeyName)) {
f.delete();
to.delete();
if (signingKeyName == null)
_log.error("Failed to verify plugin signature, corrupt plugin or bad signature, signed by: " + signer);
else
// shouldn't happen
_log.error("Plugin signer \"" + signer + "\" does not match new signer in plugin.config file \"" + signingKeyName + "\"");
statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
return;
}

View File

@ -1,6 +1,7 @@
package net.i2p.router.web;
import java.util.ArrayList;
import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
@ -10,9 +11,10 @@ import java.util.Properties;
import java.util.StringTokenizer;
import net.i2p.I2PAppContext;
import net.i2p.desktopgui.Main;
import net.i2p.apps.systray.SysTray;
import net.i2p.data.Base32;
import net.i2p.data.DataHelper;
import net.i2p.desktopgui.Main;
import net.i2p.router.RouterContext;
import net.i2p.util.FileUtil;
import net.i2p.util.I2PAppThread;
@ -57,7 +59,6 @@ public class RouterConsoleRunner {
static {
System.setProperty("org.mortbay.http.Version.paranoid", "true");
System.setProperty("java.awt.headless", "true");
}
/**
@ -128,10 +129,34 @@ public class RouterConsoleRunner {
}
public static void main(String args[]) {
startTrayApp();
RouterConsoleRunner runner = new RouterConsoleRunner(args);
runner.startConsole();
}
private static void startTrayApp() {
try {
//TODO: move away from routerconsole into a separate application.
//ApplicationManager?
VersionComparator v = new VersionComparator();
boolean recentJava = v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0;
// default false for now
boolean desktopguiEnabled = I2PAppContext.getGlobalContext().getBooleanProperty("desktopgui.enabled");
if (recentJava && desktopguiEnabled) {
//Check if we are in a headless environment, set properties accordingly
System.setProperty("java.awt.headless", Boolean.toString(GraphicsEnvironment.isHeadless()));
String[] args = new String[0];
net.i2p.desktopgui.Main.beginStartup(args);
} else {
// required true for jrobin to work
System.setProperty("java.awt.headless", "true");
SysTray.getInstance();
}
} catch (Throwable t) {
t.printStackTrace();
}
}
public void startConsole() {
File workDir = new SecureDirectory(I2PAppContext.getGlobalContext().getTempDir(), "jetty-work");
boolean workDirRemoved = FileUtil.rmdir(workDir, false);
@ -316,18 +341,6 @@ public class RouterConsoleRunner {
}
}
try {
//TODO: move away from routerconsole into a separate application.
//ApplicationManager?
VersionComparator v = new VersionComparator();
if(v.compare(System.getProperty("java.runtime.version"), "1.6") >= 0) {
String[] args = new String[0];
net.i2p.desktopgui.Main.beginStartup(args);
}
} catch (Throwable t) {
t.printStackTrace();
}
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());
Thread t = new I2PAppThread(fetcher, "NewsFetcher", true);
t.start();

View File

@ -197,9 +197,10 @@ public class StatsGenerator {
buf.append("; ");
}
buf.append(ngettext((int) curRate.getLastEventCount(), "There was 1 event", "There were {0} events"));
buf.append(' ');
buf.append(_("in this period which ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate())));
// breaking the sentence like before makes translation in my language impossible.
buf.append(_("There were {0} event(s) in this period", curRate.getLastEventCount()));
// buf.append(' ');
buf.append(_(" which ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate())));
} else {
buf.append(" <i>").append(_("No events")).append("</i> ");
}

View File

@ -224,25 +224,21 @@ public class SummaryBarRenderer {
System.setProperty("net.i2p.router.web.UpdateHandler.noncePrev", prev);
System.setProperty("net.i2p.router.web.UpdateHandler.nonce", nonce+"");
String uri = _helper.getRequestURI();
buf.append("<p><form action=\"").append(uri).append("\" method=\"POST\">\n");
buf.append("<form action=\"").append(uri).append("\" method=\"POST\">\n");
buf.append("<input type=\"hidden\" name=\"updateNonce\" value=\"").append(nonce).append("\" >\n");
if (_helper.updateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"signed\" >")
.append(_("Download"))
.append(' ')
.append(_helper.getUpdateVersion())
.append(' ')
.append(_("Update"))
.append("</button>\n");
// Note to translators: parameter is a version, e.g. "0.8.4"
.append(_("Download {0} Update", _helper.getUpdateVersion()))
.append("</button><br>\n");
}
if (_helper.unsignedUpdateAvailable()) {
buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >")
.append(_("Download Unsigned"))
.append("<br>")
.append(_("Update"))
.append(' ')
.append(_helper.getUnsignedUpdateVersion())
.append("</button>\n");
// Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
// <br> is optional, to help the browser make the lines even in the button
// If the translation is shorter than the English, you should probably not include <br>
.append(_("Download Unsigned<br>Update {0}", _helper.getUnsignedUpdateVersion()))
.append("</button><br>\n");
}
buf.append("</form>\n");
}
@ -251,10 +247,9 @@ public class SummaryBarRenderer {
buf.append("<p>")
.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce()))
buf.append(ConfigRestartBean.renderStatus(_helper.getRequestURI(), _helper.getAction(), _helper.getConsoleNonce()))
.append("</p><hr><h3><a href=\"/peers\" target=\"_top\" title=\"")
.append("<hr><h3><a href=\"/peers\" target=\"_top\" title=\"")
.append(_("Show all current peer connections"))
.append("\">")
.append(_("Peers"))
@ -456,4 +451,9 @@ public class SummaryBarRenderer {
private String _(String s) {
return Messages.getString(s, _context);
}
/** translate a string with a parameter */
private String _(String s, Object o) {
return Messages.getString(s, o, _context);
}
}

View File

@ -41,7 +41,7 @@
<br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>
</i></td>
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Max log file size")%>:</b></td>
<td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" ><br></td>
<td><input type="text" name="logfilesize" size="10" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" ><br></td>
</tr><tr><td class="mediumtags" align="right"><b><%=intl._("Default log level")%>:</b></td>
<td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i><%=intl._("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%>
</i></td>

View File

@ -42,6 +42,14 @@
<% } %></div>
<% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>
<h3><%=intl._("Systray integration")%></h3>
<p><%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%>
<%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%>
<%=intl._("If you are on windows, you can either enable or disable that icon here.")%></p>
<hr><div class="formaction">
<input type="submit" name="action" value="<%=intl._("Show systray icon")%>" >
<input type="submit" name="action" value="<%=intl._("Hide systray icon")%>" >
</div>
<h3><%=intl._("Run on startup")%></h3>
<p><%=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 ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._("or")%>

View File

@ -26,7 +26,10 @@
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="intl" scope="request" />
<jsp:setProperty name="intl" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<%
intl.setLang(request.getParameter("lang"));
String conNonceParam = request.getParameter("consoleNonce");
if (conNonceParam != null && conNonceParam.equals(System.getProperty("router.consoleNonce"))) {
intl.setLang(request.getParameter("lang"));
}
%>
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
<%

View File

@ -0,0 +1,177 @@
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
/*
* Do not tag this file for translation - copy it to help_xx.jsp and translate inline.
*/
%>
<html><head><title>I2P مساعدة لوحة التحكم</title>
<%@include file="css.jsi" %>
</head><body>
<%@include file="summary.jsi" %>
<h1>I2P مساعدة لوحة التحكم</h1>
<div class="main" id="main" dir="rtl" lang="ar"><p>
اذا رغبت في المساعدة أو ترجمة الوثائق، أو المساعدة في أشياء أخرى، انظر اسفله
<a href="http://www.i2p2.i2p/getinvolved.html">تطوع</a>
</p><p>المزيد من المساعدة هنا:
<ul class="links">
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">ابئلة شائعة www.i2p2.i2p</a>
<br>يمكن ايضا<a href="http://forum.i2p/">I2P منتدى</a>
او بالدردشة على IRC.</p>
<h2>شريط المعلومات</h2><p>
يمكن للاحصائات أن
<a href="configstats.jsp">تتغير</a> لكي تظهر على شكل
<a href="graphs.jsp">رسم بياني</a> للمزيد من التحاليل
</p><h3>عام</h3><ul>
<li class="tidylist"><b>:هوية</b>
الحروف الأولى (24 bits) من 44-حرف (256-) Base64 hash.
The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات الموجه</a>.
هذا لا يكشف عن عنوان IP الخاص بك لأحد.
<li class="tidylist"><b>الاصدار</b>
اصدار I2P المستعمل
<li class="tidylist"><b>الآن</b>
الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.
<li class="tidylist"><b>إمكانية الوصول</b>
امكانية الاتصال الخارجي بالموجه
المزيد من التفاصيل في <a href="config.jsp#help">صفحة الاعدادات</a>.
</ul><h3>النظائر</h3><ul>
<li class="tidylist"><b>مفعل</b>
هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية.
قد يكون هذا النطاق 8-10 الى عدة مئات، اعتمادا على عرض النطاق الترددي الإجمالي ،
تقاسم عرض النطاق الترددي ، وحركة المرور المولدة محليا.
والرقم الثاني هو عدد من نظرائه ينظر في آخر ساعة أو نحو ذلك.
لا تشعر بالقلق إذا كانت هذه الأرقام تختلف على نطاق واسع.
<a href="configstats.jsp#router.activePeers">[تفعيل الرسم البياني]</a>.
<li class="tidylist"><b>سريع</b>
هذا هو عدد النظائر التي تستعملها لانشاء أنفاق جديدة. هي في نطاق 8-30. النظائر السريعة في
<a href="profiles.jsp">صفحة البروفايل</a>.
<a href="configstats.jsp#router.fastPeers">[تفعيل الرسم البياني]</a>.
<li class="tidylist"><b>قدرة عالية</b>
هذا هو عدد النظائر التي تستعملها لانشاء أنفاق الاكتشاف. هي في نطاق 8-75. النظائر السريعة. النظائر القدرة عالية تظهر هنا.
<a href="profiles.jsp">صفحة البروفايل</a>.
<a href="configstats.jsp#router.highCapacityPeers">[تفعيل الرسم البياني]</a>.
<li class="tidylist"><b>المندمجة جيدا</b>
هذا هو عدد النظائر المستعملة في الاتصال بقاعدة البيانات. النظائر المندمجة جيدا موجودة في أسفل
<a href="profiles.jsp">صفحة البروفايل</a>.
<li class="tidylist"><b>المعروفة</b>
هذا هو عدد الموجهات المعروفة.
والظاهرة في صفحة <a href="netdb.jsp">قاعدة البيانات</a>
هي مابين 100 الى 1000 او أكثر.
هذا العدد ليس حجم الاجمالي للشبكة،
يمكنه ان بتغيير حسب سرعة الاتصال.
</ul><h3>سرعة الاتصال الداخلي/خارجي</h3><div align="justify">
السرعة ب بايت في الثانية
غير السرعة في <a href="config.jsp#help">صفحة الاعدادات</a>.
السرعة <a href="graphs.jsp">مرسومة</a> </div>
<h3>الوجهات الداخلية</h3><div align="justify">
الاتصالات الداخلية
البرامج المحلية المتصلة عبر الموجه
<a href="i2ptunnel/index.jsp">I2PTunnel</a>
او برامج خارجية متصلة SAM, BOB, او مباشرة بـ I2CP.
</div><h3>الأنفاق الداخلة/خارجة</h3><div align="justify">
الأنفاق الحالية موجودة في <a href="tunnels.jsp">صفحة الأنفاق</a>.</div><ul>
<li class="tidylist"><div align="justify"><b>تصفح</b>
الأنفاق المستخدمة من طرف الموجه تستعمل في الاتصال مع النظائر، انشاء انفاق جديدة.
</div>
<li class="tidylist"><b>المستخدمين</b>
الأنفاق المستخدمة من طرف الموجه
<li class="tidylist"><b>المشاركة</b>
الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك.
هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة...
يمكنك تغيير درجة المشاركة بـ <a href="config.jsp#help">صفحة الاعدادات</a>.
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
the <a href="configadvanced.jsp">صفحة الاعدادات المتقدمة</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[تفعيل الرسم البياني]</a>.
<li class="tidylist"><b>نسبة المشاركة</b>
عدد الانفاق المشاركة، مقسوما على عدد اجمالي الانفاق.
عدد أكبر من 1.00 يعني انك تساهم في الشبكة بعدد اكبر مما تستهلك.
</ul>
<h3>ازدحام</h3><div align="justify">
بعض مشرات ازدحام الموجه</div><ul>
<li class="tidylist"><b>Job lag:</b>
How long jobs are waiting before execution. The job queue is listed on the <a href="jobs.jsp">jobs page</a>.
Unfortunately, there are several other job queues in the router that may be congested,
and their status is not available in the router console.
The job lag should generally be zero.
If it is consistently higher than 500ms, your computer is very slow, or the
router has serious problems.
<a href="configstats.jsp#jobQueue.jobLag">[تفعيل الرسم البياني]</a>.
<li class="tidylist"><b>Message delay:</b>
How long an outbound message waits in the queue.
This should generally be a few hundred milliseconds or less.
If it is consistently higher than 1000ms, your computer is very slow,
or you should adjust your bandwidth limits, or your (bittorrent?) clients
may be sending too much data and should have their transmit bandwidth limit reduced.
<a href="configstats.jsp#transport.sendProcessingTime">[تفعيل الرسم البياني]</a> (transport.sendProcessingTime).
<li class="tidylist"><b>Tunnel lag:</b>
This is the round trip time for a tunnel test, which sends a single message
out a client tunnel and in an exploratory tunnel, or vice versa.
It should usually be less than 5 seconds.
If it is consistently higher than that, your computer is very slow,
or you should adjust your bandwidth limits, or there are network problems.
<a href="configstats.jsp#tunnel.testSuccessTime">[تفعيل الرسم البياني]</a> (tunnel.testSuccessTime).
<li class="tidylist"><b>Handle backlog:</b>
This is the number of pending requests from other routers to build a
participating tunnel through your router.
It should usually be close to zero.
If it is consistently high, your computer is too slow,
and you should reduce your share bandwidth limits.
<li class="tidylist"><b>Accepting/Rejecting:</b>
Your router's status on accepting or rejecting
requests from other routers to build a
participating tunnel through your router.
Your router may accept all requests, accept or reject a percentage of requests,
or reject all requests for a number of reasons, to control
the bandwidth and CPU demands and maintain capacity for
local clients.</ul>
<h2>Legal stuff</h2><p>The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
a few notable exceptions:</p><ul>
<li class="tidylist">ElGamal and DSA code, under the BSD license, written by TheCrypto</li>
<li class="tidylist">SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle</li>
<li class="tidylist">AES code, under the Cryptix (MIT) license, written by the Cryptix team</li>
<li class="tidylist">SNTP code, under the BSD license, written by Adam Buckley</li>
<li class="tidylist">The rest is outright public domain, written by jrandom, mihi, hypercubus, oOo,
ugha, duck, shendaras, and others.</li>
</ul>
<p>On top of the I2P router are a series of client applications, each with their own set of
licenses and dependencies. This webpage is being served as part of the I2P routerconsole
client application, which is built off a trimmed down <a href="http://jetty.mortbay.com/jetty/index.html">Jetty</a>
instance (trimmed down, as in, we do not include the demo apps or other add-ons, and we simplify configuration),
allowing you to deploy standard JSP/Servlet web applications into your router. Jetty in turn makes use of
Apache's javax.servlet (javax.servlet.jar) implementation.
This product includes software developed by the Apache Software Foundation
(http://www.apache.org/). </p>
<p>Another application you can see on this webpage is <a href="http://www.i2p2.i2p/i2ptunnel">I2PTunnel</a>
(your <a href="i2ptunnel/" target="_blank">web interface</a>) - a GPL'ed application written by mihi that
lets you tunnel normal TCP/IP traffic over I2P (such as the eepproxy and the irc proxy). There is also a
<a href="http://susi.i2p/">susimail</a> web based mail client <a href="susimail/susimail">available</a> on
the console, which is a GPL'ed application written by susi23. The addressbook application, written by
<a href="http://ragnarok.i2p/">Ragnarok</a> helps maintain your hosts.txt files (see ./addressbook/ for
more information).</p>
<p>The router by default also includes human's public domain <a href="http://www.i2p2.i2p/sam">SAM</a> bridge,
which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use.
There is also an optimized library for doing large number calculations - jbigi - which in turn uses the
LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>. For
details on other applications available, as well as their licenses, please see the
<a href="http://www.i2p2.i2p/licenses">license policy</a>. Source for the I2P code and most bundled
client applications can be found on our <a href="http://www.i2p2.i2p/download">download page</a>.
.</p>
<h2>Change Log</h2>
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "history.txt"); %>
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="contenthelper" property="maxLines" value="256" />
<jsp:setProperty name="contenthelper" property="startAtBeginning" value="true" />
<jsp:getProperty name="contenthelper" property="textContent" />
<p><a href="/history.txt">View the full change log</a>
</p><hr></div></body></html>

View File

@ -7,9 +7,11 @@
<%=intl.title("home")%>
</head><body>
<%
if (System.getProperty("router.consoleNonce") == null) {
System.setProperty("router.consoleNonce", new java.util.Random().nextLong() + "");
}
String consoleNonce = System.getProperty("router.consoleNonce");
if (consoleNonce == null) {
consoleNonce = Long.toString(new java.util.Random().nextLong());
System.setProperty("router.consoleNonce", consoleNonce);
}
%>
<%@include file="summary.jsi" %><h1><%=intl._("I2P Router Console")%></h1>
@ -26,10 +28,25 @@ if (System.getProperty("router.consoleNonce") == null) {
<hr><i><jsp:getProperty name="updatehelper" property="newsStatus" /></i><br>
</div><div class="main" id="main">
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
<div class="welcome">
<div class="langbox">
<a href="/?lang=en&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=us" title="English" alt="English"></a>
<a href="/?lang=ar&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=nl&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=ru&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
</div>
<a name="top"></a>
<h2><%=intl._("Welcome to I2P")%></h2>
</div>
<% fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="contenthelper" property="maxLines" value="300" />
<jsp:setProperty name="contenthelper" property="lang" value="<%=request.getParameter("lang")%>" />
<jsp:setProperty name="contenthelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:getProperty name="contenthelper" property="content" />
</div></body></html>

View File

@ -1,27 +1,41 @@
<% // put width here too to prevent bad layout at startup %>
<% // let's remove that for now since we're no longer using percentage width here %>
<div class="routersummaryouter">
<%
// skip the iframe if refresh disabled
String d = request.getParameter("refresh");
String newDelay = "";
if (d == null || "".equals(d))
d = intl.getRefresh();
else {
d = net.i2p.data.DataHelper.stripHTML(d); // XSS
// pass the new delay parameter to the iframe
newDelay = "?refresh=" + d;
// The refresh delay, 0 to disable
String d = "0";
boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent"));
if (allowIFrame) {
// skip the iframe if refresh disabled
d = request.getParameter("refresh");
String newDelay = "";
if (d == null || "".equals(d))
d = intl.getRefresh();
else {
d = net.i2p.data.DataHelper.stripHTML(d); // XSS
// pass the new delay parameter to the iframe
newDelay = "?refresh=" + d;
}
if (!"0".equals(d))
out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
}
if (!"0".equals(d))
out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
%>
<div class="routersummary">
<%
if (allowIFrame) {
// Display the whole summary bar
%>
<%@include file="summarynoframe.jsi" %>
<%
// d defined above
} else {
// Text browsers don't render the two divs side-by-side, so just provide a link
out.print("<a href=\"/summaryframe\">");
out.print(intl._("Summary Bar"));
out.print("</a>");
}
// d and allowIFrame defined above
if (!"0".equals(d)) {
out.print("</div></iframe>\n");
} else {
} else if (allowIFrame) {
// since we don't have an iframe this will reload the base page, and
// the new delay will be passed to the iframe above
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n");
@ -34,6 +48,8 @@
out.print(intl._("Enable"));
out.print("</button>\n");
out.print("</form></div></div>\n");
} else {
out.print("</div>\n");
}
%>
</div>

View File

@ -15,7 +15,9 @@
String action = request.getParameter("action");
String d = request.getParameter("refresh");
// Normal browsers send value, IE sends button label
boolean shutdownSoon = "shutdownImmediate".equals(action) || "restartImmediate".equals(action) ||
boolean allowIFrame = intl.allowIFrame(request.getHeader("User-Agent"));
boolean shutdownSoon = (!allowIFrame) ||
"shutdownImmediate".equals(action) || "restartImmediate".equals(action) ||
"Shutdown immediately".equals(action) || "Restart immediately".equals(action);
if (!shutdownSoon) {
if (d == null || "".equals(d)) {
@ -59,7 +61,6 @@
out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");
out.print("<button type=\"submit\" value=\"Enable\" >");
out.print(intl._("Enable"));
out.print("</button></div>\n");
} else {
// this will load in the iframe but subsequent pages will not have the iframe
out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" >\n");
@ -70,9 +71,8 @@
} catch (NumberFormatException nfe) {}
String refreshTime = net.i2p.data.DataHelper.formatDuration2(refreshMS);
out.print(intl._("Disable {0} Refresh", refreshTime));
out.print("</button></div>\n");
}
out.print("</form>\n");
out.print("</button></form></div>\n");
}
%>
</div></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6,17 +6,17 @@
#
msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-01-20 19:26+0000\n"
"PO-Revision-Date: 2010-07-04 15:04+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n"
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
"PO-Revision-Date: 2011-02-20 12:15+0000\n"
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
"Language-Team: Dutch <>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Poedit-Language: Dutch\n"
#. NOTE TO TRANSLATORS: Feel free to translate all these as you see fit, there are several options...
#. spaces or not, '.' or not, plural or not. Try not to make it too long, it is used in
@ -26,7 +26,7 @@ msgstr ""
#. {0,number,####} prevents 1234 from being output as 1,234 in the English locale.
#. If you want the digit separator in your locale, translate as {0}.
#. alternates: msec, msecs
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1124
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141
#, java-format
msgid "1 ms"
msgid_plural "{0,number,####} ms"
@ -36,7 +36,7 @@ msgstr[1] "{0,number,####} ms"
#. seconds
#. Note to translators: quantity will always be greater than one.
#. alternates: secs, sec. 'seconds' is probably too long.
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1129
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1146
#, java-format
msgid "1 sec"
msgid_plural "{0} sec"
@ -46,7 +46,7 @@ msgstr[1] "{0} s"
#. minutes
#. Note to translators: quantity will always be greater than one.
#. alternates: mins, min. 'minutes' is probably too long.
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1134
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1151
#, java-format
msgid "1 min"
msgid_plural "{0} min"
@ -56,42 +56,42 @@ msgstr[1] "{0} min"
#. hours
#. Note to translators: quantity will always be greater than one.
#. alternates: hrs, hr., hrs.
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1139
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1156
#, java-format
msgid "1 hour"
msgid_plural "{0} hours"
msgstr[0] "1 uur"
msgstr[1] "{0} uren"
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1141
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313
msgid "n/a"
msgstr "nvt"
#. days
#. Note to translators: quantity will always be greater than one.
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1145
#: ../../../core/java/src/net/i2p/data/DataHelper.java:1162
#, java-format
msgid "1 day"
msgid_plural "{0} days"
msgstr[0] "1 dag"
msgstr[1] "{0} dagen"
#: ../../../router/java/src/net/i2p/router/Blocklist.java:126
#: ../../../router/java/src/net/i2p/router/Blocklist.java:122
#, java-format
msgid "Banned by router hash: {0}"
msgstr "Verbannen wegens router hash: {0}"
#: ../../../router/java/src/net/i2p/router/Blocklist.java:128
#: ../../../router/java/src/net/i2p/router/Blocklist.java:124
msgid "Banned by router hash"
msgstr "Verbannen wegens router hash"
#. Temporary reason, until the job finishes
#: ../../../router/java/src/net/i2p/router/Blocklist.java:673
#: ../../../router/java/src/net/i2p/router/Blocklist.java:669
msgid "IP banned"
msgstr "IP verbannen"
#: ../../../router/java/src/net/i2p/router/Blocklist.java:743
#: ../../../router/java/src/net/i2p/router/Blocklist.java:739
#, java-format
msgid "IP banned by blocklist.txt entry {0}"
msgstr "IP verbannen wegens blocklist.txt item {0}"
@ -145,43 +145,43 @@ msgstr "Tunnels geaccepteerd"
msgid "Rejecting tunnels"
msgstr "Tunnels geweigerd"
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:98
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20
msgid "Reseeding"
msgstr "Reseeden"
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:121
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128
#, java-format
msgid "Reseed fetched only 1 router."
msgid_plural "Reseed fetched only {0} routers."
msgstr[0] "Reseed heeft slechts 1 router opgehaald."
msgstr[1] "Reseed heeft slechts {0} routers opgehaald."
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135
msgid "Reseed failed."
msgstr "Reseed gefaald"
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:129
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136
#, java-format
msgid "See {0} for help."
msgstr "Zie {0} voor hulp."
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:130
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137
msgid "reseed configuration page"
msgstr "reseed configuratie pagina"
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:231
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239
msgid "Reseeding: fetching seed URL."
msgstr "Reseed: opvragen seed URL."
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:272
#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281
#, java-format
msgid ""
"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
msgstr ""
"Reseeden: opvragen router info van seed URL ({0} succesvol, {1} fouten)."
#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:513
#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:512
msgid "NetDb entry"
msgstr "NetDd item"
@ -190,25 +190,25 @@ msgstr "NetDd item"
msgid "No transports (hidden or starting up?)"
msgstr "Geen transport (verborgen of aan het opstarten?)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:452
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:450
msgid "Unreachable on any transport"
msgstr "Onbereikbaar op alle transports"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:501
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:499
msgid "Router Transport Addresses"
msgstr "Router Transport Adressen"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:506
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:504
#, java-format
msgid "{0} is used for outbound connections only"
msgstr "{0} is alleen gebruikt voor uitgaande connecties"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:520
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123
msgid "Help"
msgstr "Help"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:519
msgid ""
"Your transport connection limits are automatically set based on your "
"configured bandwidth."
@ -216,7 +216,7 @@ msgstr ""
"De limieten van je transport verbinding zijn automatisch ingesteld gebaseerd "
"op de geconfigureerde bandbreedte."
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:521
msgid ""
"To override these limits, add the settings i2np.ntcp.maxConnections=nnn and "
"i2np.udp.maxConnections=nnn on the advanced configuration page."
@ -225,12 +225,12 @@ msgstr ""
"maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde "
"configuratie pagina."
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257
msgid "Definitions"
msgstr "Definities"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890
#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
@ -242,79 +242,79 @@ msgstr "Definities"
msgid "Peer"
msgstr "Peer"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
msgid "The remote peer, identified by router hash"
msgstr "De remote peer, geïdentificeerd door de router hash"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:527
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894
msgid "Dir"
msgstr "Richting"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:526
msgid "Inbound connection"
msgstr "Inkomende connectie"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528
msgid "Outbound connection"
msgstr "Uitgaande connectie"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530
msgid "They offered to introduce us (help other peers traverse our firewall)"
msgstr ""
"Ze hebben aangeboden ons te introduceren (helpt andere peers om door onze "
"firewall te komen)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:532
msgid "We offered to introduce them (help other peers traverse their firewall)"
msgstr ""
"We hebben aangeboden ze te introduceren (helpt andere peers om door hun "
"firewall te komen)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
msgid "How long since a packet has been received / sent"
msgstr "Hoe lang sinds een pakket ontvangen / verstuurd is"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895
msgid "Idle"
msgstr "Idle"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
msgid "In/Out"
msgstr "In/Uit"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
msgstr ""
"De afgevlakte inkomende / uitgaande overdrachtsnelheid (KBytes per seconde)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
msgid "How long ago this connection was established"
msgstr "Hoe lang sinds deze connectie is gemaakt"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905
msgid "Up"
msgstr "Up"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907
msgid "Skew"
msgstr "Afwijking"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
msgid "The difference between the peer's clock and your own"
msgstr "Het verschil tussen de klok van de peer en je eigen"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
msgid ""
"The congestion window, which is how many bytes can be sent without an "
"acknowledgement"
@ -322,42 +322,42 @@ msgstr ""
"Het congestion window, hoeveel bytes verzonden kunnen worden zonder een "
"bevestiging"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
msgid "The number of sent messages awaiting acknowledgement"
msgstr "Het aantal verzonden berichten, wachtend op bevestiging"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
msgid "The maximum number of concurrent messages to send"
msgstr "Het maximum aantal berichten om gelijktijdig te verzenden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
msgid "The number of pending sends which exceed congestion window"
msgstr ""
"Het aantal wachtende uitgaande berichten dat het congestion window "
"overschrijdt"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
msgid "The slow start threshold"
msgstr "De vertraagde-start drempel"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
msgid "The round trip time in milliseconds"
msgstr "De rondgangstijd in milliseconden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917
msgid "Dev"
msgstr "SD"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
msgid "The standard deviation of the round trip time in milliseconds"
msgstr "De standaarddeviatie van de rondgangstijd in milliseconden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
msgid "The retransmit timeout in milliseconds"
msgstr "De herzend time-out in milliseconden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
msgid ""
"Current maximum send packet size / estimated maximum receive packet size "
"(bytes)"
@ -365,41 +365,41 @@ msgstr ""
"Huidige maximum verzonden pakket grootte / verwachte maximimum ontvangen "
"pakket grootte (bytes)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924
msgid "TX"
msgstr "TX"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
msgid "The total number of packets sent to the peer"
msgstr "Het totaal aantal pakketten verzonden aan de peer"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926
msgid "RX"
msgstr "RX"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
msgid "The total number of packets received from the peer"
msgstr "Het totaal aantal ontvangen pakketten van de peer"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1929
msgid "Dup TX"
msgstr "Dup TX"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
msgid "The total number of packets retransmitted to the peer"
msgstr "Het totaal aantal pakketten dat opnieuw is verzonden aan de peer"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1931
msgid "Dup RX"
msgstr "Dup RX"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
msgid "The total number of duplicate packets received from the peer"
msgstr "Het totaal aantal pakketten dat dubbel is ontvangen van de peer"
@ -555,28 +555,29 @@ msgstr "Verbannen"
msgid "SUMMARY"
msgstr "SAMENVATTING"
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:124
msgid "Dropping tunnel requests: Too slow"
msgstr "Negeer tunnel aanvragen: Te traag"
#. don't even bother, since we are so overloaded locally
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267
msgid "Dropping tunnel requests: Overloaded"
msgstr "Negeer tunnel aanvragen: Overladen"
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460
msgid "Rejecting tunnels: Request overload"
msgstr "Weiger tunnels: Overladen met aanvragen"
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485
msgid "Rejecting tunnels: Connection limit"
msgstr "Weiger tunnels: Connectie limiet"
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706
msgid "Dropping tunnel requests: High load"
msgstr "Negeer tunnel aanvragen: Hoge load"
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698
msgid "Dropping tunnel requests: Queue time"
msgstr "Negeer tunnel aanvragen: Wachttijd"
@ -1506,7 +1507,7 @@ msgstr "Zambia"
msgid "Zimbabwe"
msgstr "Zimbabwe"
#: ../java/src/net/i2p/router/web/CSSHelper.java:57
#: ../java/src/net/i2p/router/web/CSSHelper.java:58
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37
#: ../java/strings/Strings.java:29
@ -1598,8 +1599,7 @@ msgstr "Nieuwe client toegevoegd"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:193
msgid ""
"Client configuration saved successfully - restart required to take effect."
msgstr ""
"Client configuratie succesvol opgeslagen - herstart nodig."
msgstr "Client configuratie succesvol opgeslagen - herstart nodig."
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218
@ -1684,8 +1684,7 @@ msgstr "Fout bij starten plugin {0}"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:376
msgid ""
"Interface configuration saved successfully - restart required to take effect."
msgstr ""
"Interface configuratie succesvol opgeslagen - herstart nodig."
msgstr "Interface configuratie succesvol opgeslagen - herstart nodig."
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:85
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:258
@ -2226,64 +2225,36 @@ msgid "Dump threads"
msgstr "Dump threads"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323
msgid "Show systray icon"
msgstr "Toon systray icon"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96
msgid "System tray icon enabled."
msgstr "System tray icon ingeschakeld."
#: ../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 "System tray icon feature not ondersteund op dit platform. Sorry!"
#: ../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 "Waarschuwing: kan geen verbinding maken met de systray manager"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325
msgid "Hide systray icon"
msgstr "Verberg systray icon"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108
msgid "System tray icon disabled."
msgstr "System tray icon uitgeschakeld."
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363
msgid "View console on startup"
msgstr "Toon console na opstarten"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:93
msgid "Console is to be shown on startup"
msgstr "Console wordt getoond na opstarten"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365
msgid "Do not view console on startup"
msgstr "Toon console niet na opstarten"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96
msgid "Console is not to be shown on startup"
msgstr "De console wordt niet getoond na opstarten"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:105
msgid "Service installed"
msgstr "Service geinstalleerd"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:107
msgid "Warning: unable to install the service"
msgstr "Waarschuwing: kan de service niet installeren"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113
msgid "Service removed"
msgstr "Service verwijderd"
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139
#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115
msgid "Warning: unable to remove the service"
msgstr "Waarschuwing: kan de service niet verwijderen"
@ -2401,38 +2372,42 @@ msgid "Refresh the page to view."
msgstr "Ververs de te bekijken pagina."
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
msgid "Arabic"
msgstr "Arabisch"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
msgid "English"
msgstr "Engels"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
msgid "French"
msgstr "Frans"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
msgid "German"
msgstr "Duits"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
msgid "Spanish"
msgstr "Spaans"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53
msgid "Dutch"
msgstr "Nederlands"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53
msgid "Portuguese"
msgstr "Portugees"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53
msgid "Russian"
msgstr "Russies"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54
msgid "Chinese"
msgstr "Chinees"
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:53
#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:54
msgid "Swedish"
msgstr "Zweeds"
@ -2802,66 +2777,66 @@ msgstr "Downloaden van plugin"
msgid "{0}B transferred"
msgstr "{0}B ontvangen"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:152
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:153
msgid "Plugin downloaded"
msgstr "Plugin gedownload"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:157
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:344
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:158
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:356
#, java-format
msgid "Cannot create plugin directory {0}"
msgstr "Kan plugin directory {0} niet maken"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:166
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167
#: ../java/src/net/i2p/router/web/UpdateHandler.java:298
#, java-format
msgid "from {0}"
msgstr "van {0}"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:176
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:177
#, java-format
msgid "Plugin from {0} is corrupt"
msgstr "Plugin van {0} is corrupt"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:187
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:188
#, java-format
msgid "Plugin from {0} does not contain the required configuration file"
msgstr "Plugin van {0} bevat niet het vereiste configuratie bestand"
#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>");
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:200
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:201
#, java-format
msgid "Plugin from {0} contains an invalid key"
msgstr "Plugin van {0} bevat een ongeldige sleutel"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:219
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:228
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:237
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:225
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:235
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:249
#, java-format
msgid "Plugin signature verification of {0} failed"
msgstr "Plugin handtekening verificatie van {0} gefaald"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:252
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264
#, java-format
msgid "Plugin from {0} has invalid name or version"
msgstr "Plugin van {0} heeft ingeldige naam of versie"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:257
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:269
#, java-format
msgid "Plugin {0} has mismatched versions"
msgstr "Plugin {0} heeft een verkeerde combinatie van versies"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:265
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:277
#, java-format
msgid "This plugin requires I2P version {0} or higher"
msgstr "Deze plugin heeft I2P versie {0} of hoger nodig"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:273
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:285
#, java-format
msgid "This plugin requires Java version {0} or higher"
msgstr "Deze plugin heeft Java versie {0} of hoger nodig"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:281
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293
msgid ""
"Downloaded plugin is for new installs only, but the plugin is already "
"installed"
@ -2869,68 +2844,68 @@ msgstr ""
"De gedownloaded plugin is alleen voor nieuwe installaties, maar de plugin is "
"al geïnstalleerd"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:293
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:305
msgid "Installed plugin does not contain the required configuration file"
msgstr "De geïnstalleerde plugin bevat het vereiste configuratie bestand niet"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:301
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:313
msgid "Signature of downloaded plugin does not match installed plugin"
msgstr ""
"De handtekening van de gedownloade plugin komt niet overeen met de "
"geïnstalleerde plugin"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:308
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:320
#, java-format
msgid "Downloaded plugin version {0} is not newer than installed plugin"
msgstr ""
"De gedownloade plugin versie {0} is niet nieuwer dan de geïnstalleerde plugin"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:315
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:327
#, java-format
msgid "Plugin update requires installed plugin version {0} or higher"
msgstr "Plugin update vereist de installatie van plugin versie {0} of hoger"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:322
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:334
#, java-format
msgid "Plugin update requires installed plugin version {0} or lower"
msgstr "Plugin update vereist de installatie van plugin versie {0} of lager"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:339
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351
msgid "Plugin is for upgrades only, but the plugin is not installed"
msgstr ""
"De plugin is alleen voor upgrades, maar de plugin is niet geïnstalleerd"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:352
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:364
#, java-format
msgid "Failed to install plugin in {0}"
msgstr "Installatie van plugin in {0} gefaald"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:359
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371
#, java-format
msgid "Plugin {0} installed, router restart required"
msgstr "Plugin {0} geïnstalleerd, router herstart nodig"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:361
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373
#, java-format
msgid "Plugin {0} installed"
msgstr "Plugin {0} geïnstalleerd"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:379
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:391
#, java-format
msgid "Plugin {0} installed and started"
msgstr "Plugin {0} geïnstalleerd en gestart"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:382
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394
#, java-format
msgid "Plugin {0} installed but failed to start, check logs"
msgstr "Plugin {0} geïnstalleerd maar gefaald om te starten, kijk in de logs"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:384
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:396
#, java-format
msgid "Plugin {0} installed but failed to start"
msgstr "Plugin {0} geïnstalleerd maar gefaald om te starten"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:394
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:406
#, java-format
msgid "Failed to download plugin from {0}"
msgstr "Kan de plugin niet downloaden van {0}"
@ -3264,37 +3239,44 @@ msgstr "Gemiddelde"
msgid "Highest average"
msgstr "Hoogste gemiddelde"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:202
#. breaking the sentence like before makes translation in my language impossible.
#: ../java/src/net/i2p/router/web/StatsGenerator.java:201
#, java-format
msgid "in this period which ended {0} ago."
msgstr "in deze periode welke {0} geleden eindigde."
msgid "There were {0} event(s) in this period"
msgstr "Er waren {0} event(s) in deze periode"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:204
#. buf.append(' ');
#: ../java/src/net/i2p/router/web/StatsGenerator.java:203
#, java-format
msgid " which ended {0} ago."
msgstr "die {0} geleden eindigde."
#: ../java/src/net/i2p/router/web/StatsGenerator.java:205
msgid "No events"
msgstr "Geen gebeurtenissen"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:210
#: ../java/src/net/i2p/router/web/StatsGenerator.java:211
msgid "Average event count"
msgstr "Gemiddeld aantal gebeurtenissen"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:212
#: ../java/src/net/i2p/router/web/StatsGenerator.java:213
msgid "Events in peak period"
msgstr "Gebeurtenissen in piek periode"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:220
#: ../java/src/net/i2p/router/web/StatsGenerator.java:221
msgid "Graph Data"
msgstr "Grafiek Data"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:222
#: ../java/src/net/i2p/router/web/StatsGenerator.java:223
msgid "Graph Event Count"
msgstr "Grafiek Aantal Gebeurtenissen"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:225
#: ../java/src/net/i2p/router/web/StatsGenerator.java:226
msgid "Export Data as XML"
msgstr "Exporteer Data als XML"
#. Display the strict average
#: ../java/src/net/i2p/router/web/StatsGenerator.java:230
#: ../java/src/net/i2p/router/web/StatsGenerator.java:231
msgid "Lifetime average value"
msgstr "Levenslange gemiddelde waarde"
@ -4142,6 +4124,7 @@ msgstr "configureer netwerk"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219
@ -4175,6 +4158,7 @@ msgstr "Ververs (s)"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223
@ -4915,7 +4899,8 @@ msgstr "Ingeschakeld met SSL vereist"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357
msgid "Disabled - Clients outside this Java process may not connect"
msgstr "Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken"
msgstr ""
"Uitgeschakeld - Clients buiten dit Java process mogen geen verbinding maken"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359
msgid "I2CP Port"
@ -4943,7 +4928,9 @@ msgstr "Wachtwoord"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:397
msgid "Any changes made here must also be configured in the external client."
msgstr "Alle wijzigingen die hier worden gemaakt moeten ook in de externe client worden geconfigureerd."
msgstr ""
"Alle wijzigingen die hier worden gemaakt moeten ook in de externe client "
"worden geconfigureerd."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:399
msgid "Many clients do not support SSL or authorization."
@ -5183,15 +5170,16 @@ msgid ""
"first install I2P, or when your router has too few router references "
"remaining."
msgstr ""
"Reseeden is het opstart proces dat gebruikt wordt om andere routers te vinden "
"wanneer je I2P voor het eerst installeert, of wanneer je router te weinig "
"router referenties heeft."
"Reseeden is het opstart proces dat gebruikt wordt om andere routers te "
"vinden wanneer je I2P voor het eerst installeert, of wanneer je router te "
"weinig router referenties heeft."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:304
msgid ""
"If reseeding has failed, you should first check your network connection."
msgstr ""
"Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding controlleren."
"Wanneer reseeden heeft gefaald moet je eerst je netwerkverbinding "
"controlleren."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:308
msgid ""
@ -5304,28 +5292,33 @@ msgstr ""
"starten."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:315
#, fuzzy
msgid "Systray integration"
msgstr "Systray integratie"
msgstr "integratie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:317
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 ""
"Op het windows platform is er een kleine applicatie die in je system tray "
"zit, waarmee de router status te bekijken is"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:319
msgid ""
"(later on, I2P client applications will be able to integrate their own "
"functionality into the system tray as well)."
msgstr ""
"(in de toekomst zullen I2P client applicaties hun functionaliteit ook in de "
"system tray kunnen integreren)."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:321
msgid "If you are on windows, you can either enable or disable that icon here."
msgstr "Indien je windows gebruikt kun je het icon hier in- of uitschakelen."
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:323
msgid "Show systray icon"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325
msgid "Hide systray icon"
msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327
msgid "Run on startup"
@ -5774,7 +5767,7 @@ msgstr "statistieken"
msgid "I2P Router Statistics"
msgstr "I2P Router Statistieken"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:247
#, java-format
msgid "Disable {0} Refresh"
msgstr "{0} Verversing Uitschakelen"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -28,6 +28,7 @@
<javac
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj"
classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar:../../streaming/java/build/streaming.jar" >
<compilerarg line="${javac.compilerargs}" />
@ -37,19 +38,42 @@
<javac
srcdir="./test"
debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj"
classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar:../../streaming/java/build/streaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="compile">
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/sam.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.sam.SAMBridge" />
<attribute name="Class-Path" value="i2p.jar mstreaming.jar streaming.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/sam.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" />
</uptodate>
</target>
<target name="jarTest" depends="jar, compileTest">
<jar destfile="./build/sam.jar" basedir="./build/obj" includes="**/*Test*.class" update="true" />
</target>

View File

@ -27,6 +27,7 @@
<javac
srcdir="./src"
debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj"
classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
@ -36,14 +37,40 @@
<javac
srcdir="./test"
debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./build/obj"
classpath="../../../core/java/build/i2p.jar:../../ministreaming/java/build/mstreaming.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="builddep, compile">
<jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*.class" />
<target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*.class" >
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/streaming.jar" >
<srcfiles dir= "." includes="build/obj/**/*.class" />
</uptodate>
</target>
<target name="jarTest" depends="jar, compileTest">
<jar destfile="./build/streaming.jar" basedir="./build/obj" includes="**/*Test*.class" update="true" />
</target>

View File

@ -81,8 +81,8 @@ class MessageHandler implements I2PSessionListener {
for (Iterator<I2PSocketManager.DisconnectListener> iter = _listeners.iterator(); iter.hasNext(); ) {
I2PSocketManager.DisconnectListener lsnr = iter.next();
lsnr.sessionDisconnected();
iter.remove();
}
_listeners.clear();
}
/**

View File

@ -0,0 +1,501 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susidns package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-02-25 18:40-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr "بحث"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "بحث ضمن القائمة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "قائمة الترشيح"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "لا يوجد شبيه"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "لايحتوي على بيانات"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "يحتوي على واحدة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr "يحتوي على {0} "
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr "اظهار {0} من {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "أضف"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
msgid "Replace"
msgstr "عوض"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr "اسم مضيف {0} موجود في دفتر العناوين."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
msgstr "اسم المضيف {0} موجود مسبقا في دفتر العناوين. أنقر \"عوض\" يتعويضه."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr "تم اضافة الوجهة الى {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr "تم تغيير الوجهة الى {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr "باطلة Base 64 وجهة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr "قم بادخال اسم المضيف والوجهة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "حذف"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr "وجهة {0} محذوفة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} وجهة محذوفة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr "تم حفظ دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr "خطأ: لم يتم حفظ دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Save"
msgstr "حفظ"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
msgid "Configuration saved."
msgstr "حفظ الخيارات"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "Reload"
msgstr "أعد تشغيل"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
msgid "Configuration reloaded."
msgstr "اعادة تحميل الاعدادات"
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr "تم حفظ الاشتراكات وتحديث دفتر العناوين من مصادر اشتراك الآن."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr "تم حفظ الاشتراك."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr "تم اعادة تحميل الاشتراك."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
msgid "addressbooks"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
msgid "private"
msgstr "خاص"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
msgid "master"
msgstr "رئيسي"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
msgid "router"
msgstr "موجه"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
msgid "published"
msgstr "منشور"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
msgid "subscriptions"
msgstr "اشتراك"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
msgid "configuration"
msgstr "خيارات"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "overview"
msgstr "نظرة عامة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
msgid "Filter"
msgstr "ترشيح"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
msgid "all"
msgstr "جمبع"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "Current filter"
msgstr "الترشيح الحالي"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
msgid "clear filter"
msgstr "الغاء الترشيح"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
msgid "Name"
msgstr "الإسم"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
msgid "Destination"
msgstr "الوجهة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
msgid "Mark for deletion"
msgstr "اختر للحذف"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
msgstr "وصلة مساعدة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Cancel"
msgstr "الغاء"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
msgstr "هذا دفتر العناوين فارغ"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
msgid "Add new destination"
msgstr "أضف وجهة جديدة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
msgstr "اسم مضيف"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
msgid "Hints"
msgstr "إشارة"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/"
"addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين "
"الرئيسي."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
"يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر "
"العناوين."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr "عندما تنشر دفتر العناوين، ستظهر جميع المواقع هنا."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr "استعمل دفتر العناوين الخاص من أجل العناوين الخاصة التي لن يتم نشرها."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
msgstr "خيارات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "ملف يحتوي على قائمة الاشتراكات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr "تحديث الفاصل الزمني في ساعات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr "hosts.txt ملف"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
msgstr "hosts.txt (ﻻتغير)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your personal addressbook, these hosts will be published"
msgstr "سيتم نشر هذه العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your private addressbook, it is never published"
msgstr "دفتر عناوينك الخاص، لن يتم نشره"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Port for your eepProxy (no need to change)"
msgstr "رقم منفذ eepProxy (ﻻ حاجة للتغيير)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Hostname for your eepProxy (no need to change)"
msgstr "عنوان لـ eepProxy"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Whether to update the published addressbook"
msgstr "تعديل دفتر العناوين المنشور"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr "ملف يحتوي على قائمة عناوين الاشتراك"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr "ملف يحتوي على تاريخ التحديث"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "ملف لحفظ الأخطاء"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr "تقديم"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
msgid "What is the addressbook?"
msgstr "ماهو دفتر العناوين؟"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgstr "تطبيق دفتر العناوين هو ضمن مجموعة برامج i2p"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr "يقوم بتحديث ملف hosts.txt من عدة مصادر"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgstr "في الاعدادت العادية، دفتر العناوين مرتبط ب www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"من السهل الانخراط في باقي المواقع فقط أضفه الى <a href=\"subscriptions.jsp"
"\">الانخراط</a>"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"للمزيد من المعلومات حول التسمية<a href=\"http://www.i2p2.i2p/naming.html"
"\">لمحة عامة www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "كيف يشتغل دفتر العناوين؟"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
"دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن "
"الجديدة في ملف hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr "ثم اضافة العناوين الى دفتر العناوين أيضا."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr "اذا قمت بالاختيار لن تتم نشر دفتر العناوين "
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr "الموجه يستعمل ايضا دفتر عناوين خاص الذ لا يتم نشره"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"يمكنك الإطلاع على المواقع في دفتر العناوينك الخاص توزيع أبدا لكم ولكن "
"عناوينهم للآخرين."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr ""
"ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى "
"الخاصة بك."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr "ملف الاشتراك يحتوي على قائمة مواقع i2p."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr "دفتر العناوين تقوم يستمرار بالتحقق من قائمة eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr "هذه العناوين لملف hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
"الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
"انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث "
"العناوين."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr "أنظر الأسئلة الشائعة للخصول على قائمة بالعناوين"

View File

@ -8,10 +8,11 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-11-08 18:21+0000\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-12-19 04:36+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -75,8 +76,12 @@ msgstr "Hostname {0} ist bereits im Adressbuch, nicht geändert."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite."
msgstr "Hostname {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie auf \"Ersetzen\", um den alten Eintrag zu ersetzen!"
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
"Hostname {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie "
"auf \"Ersetzen\", um den alten Eintrag zu ersetzen!"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
@ -122,8 +127,12 @@ msgstr "FEHLER: Konnte Adressbuchdatei nicht schreiben."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."
msgstr "Ungültige Datenübertragung, vielleicht haben Sie die \"Zurück\"- oder \"Neu laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!"
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"Ungültige Datenübertragung, vielleicht haben Sie die \"Zurück\"- oder \"Neu "
"laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
@ -153,8 +162,11 @@ msgstr "Einstellungen neu geladen"
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid "Subscriptions saved, updating addressbook from subscription sources now."
msgstr "Abonnement gespeichert, aktualisiere jetzt das Adressbuch von untenstehenden Aboquellen."
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
"Abonnement gespeichert, aktualisiere jetzt das Adressbuch von untenstehenden "
"Aboquellen."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
@ -281,24 +293,46 @@ msgid "Hints"
msgstr "Hinweise"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "Dateien und Verzeichnispfade sind relativ zum Arbeitsverzeichnis des Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"Dateien und Verzeichnispfade sind relativ zum Arbeitsverzeichnis des "
"Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks."
msgstr "Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie diese zum privaten oder zum Master-Adressbuch hinzu!"
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie "
"diese zum privaten oder zum Master-Adressbuch hinzu!"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid "The router addressbook and the published addressbook are updated by the addressbook application."
msgstr "Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der Adressbuch-Anwendung aktualisiert."
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
"Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der "
"Adressbuch-Anwendung aktualisiert."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there."
msgstr "Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem Master- und dem Router-Adressbuch."
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
"Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem "
"Master- und dem Router-Adressbuch."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid "Use the private addressbook for private destinations, these are not published."
msgstr "Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht veröffentlicht."
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
"Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht "
"veröffentlicht."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
@ -306,15 +340,20 @@ msgstr "Optionen"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)"
msgstr ""
"Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr "Aktualisierungsintervall in Stunden"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Your public hosts.txt file (choose a path within your webserver document root)"
msgstr "Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver Wurzelverzeichnis!)"
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
"Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver "
"Wurzelverzeichnis!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
@ -341,16 +380,26 @@ msgid "Whether to update the published addressbook"
msgstr "Soll Ihr veröffentlichtes Adressbuch aktualisiert werden?"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "File containing the etags header from the fetched subscription URLs (no need to change)"
msgstr "Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs enthält (braucht nicht geändert zu werden)"
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
"Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs "
"enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)"
msgstr "Datei, welche die Zeitstempel der letzten Modifikation für jede bereits aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)"
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
"Datei, welche die Zeitstempel der letzten Modifikation für jede bereits "
"aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es zu /dev/null, wenn Sie möchten!)"
msgstr ""
"Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es "
"zu /dev/null, wenn Sie möchten!)"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
@ -365,70 +414,122 @@ msgid "The addressbook application is part of your i2p installation."
msgstr "Das Adressbuch ist ein Teil Ihrer I2P-Installation."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"."
msgstr "Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder den \"Abonnementquellen\"."
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
"Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder "
"den \"Abonnementquellen\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p."
msgstr "In der Standardeinstellung bezieht das Adressbuch sein Abonnement nur von www.i2p2.i2p."
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgstr ""
"In der Standardeinstellung bezieht das Adressbuch sein Abonnement nur von "
"www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid "Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions.jsp\">subscriptions</a> file."
msgstr "Zusätzliche Abonnementquellen hinzuzufügen ist einfach: Geben Sie dazu deren URL in Ihrer <a href=\"subscriptions.jsp\">Abonnement</a>-Datei an."
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"Zusätzliche Abonnementquellen hinzuzufügen ist einfach: Geben Sie dazu deren "
"URL in Ihrer <a href=\"subscriptions.jsp\">Abonnement</a>-Datei an."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid "For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "Für mehr Informationen über das Namenssystem in I2P konsultieren Sie bitte die <a href=\"http://www.i2p2.i2p/naming.html\">&Uuml;bersichtsseite auf www.i2p2.i2p</a>."
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"Für mehr Informationen über das Namenssystem in I2P konsultieren Sie bitte "
"die <a href=\"http://www.i2p2.i2p/naming.html\">&Uuml;bersichtsseite auf www."
"i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "Wie funktioniert das Adressbuch?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr "Die Adressbuch-Anwendung bezieht regelmäßig ihre Abonnements und führt deren Inhalt mit dem Ihres \"Router\"-Adressbuchs zusammen, welches in der hosts.txt-Datei gespeichert ist."
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
"Die Adressbuch-Anwendung bezieht regelmäßig ihre Abonnements und führt deren "
"Inhalt mit dem Ihres \"Router\"-Adressbuchs zusammen, welches in der hosts."
"txt-Datei gespeichert ist."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well."
msgstr "Dann fügt sie auch Ihr \"Master\"-Adressbuch (userhosts.txt) dem Router-Adressbuch hinzu."
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr ""
"Dann fügt sie auch Ihr \"Master\"-Adressbuch (userhosts.txt) dem Router-"
"Adressbuch hinzu."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite."
msgstr "Falls eingestellt, wird das Router-Adressbuch jetzt in das \"veröffentlichte\" Adressbuch kopiert. Dieses ist öffentlich erreichbar, solange Sie eine Eepseite betreiben."
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr ""
"Falls eingestellt, wird das Router-Adressbuch jetzt in das \"veröffentlichte"
"\" Adressbuch kopiert. Dieses ist öffentlich erreichbar, solange Sie eine "
"Eepseite betreiben."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published."
msgstr "Der Router besitzt auch ein privates Adressbuch (privatehosts.txt, nicht im Bild gezeigt), welches nicht mit anderen vereinigt oder veröffentlicht wird."
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr ""
"Der Router besitzt auch ein privates Adressbuch (privatehosts.txt, nicht im "
"Bild gezeigt), welches nicht mit anderen vereinigt oder veröffentlicht wird."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others."
msgstr "Hosts in Ihrem privatem Adressbuch können von Ihnen aufgerufen werden, aber ihre Adressen werden nicht an andere verteilt."
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"Hosts in Ihrem privatem Adressbuch können von Ihnen aufgerufen werden, aber "
"ihre Adressen werden nicht an andere verteilt."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks."
msgstr "Das private Adressbuch kann auch für Verweise auf Hosts in Ihren anderen Adressbüchern genutzt werden."
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr ""
"Das private Adressbuch kann auch für Verweise auf Hosts in Ihren anderen "
"Adressbüchern genutzt werden."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr "Die Abonnementdatei enthält eine Liste von I2P-URLs."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The addressbook application regularly checks this list for new eepsites."
msgstr "Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites."
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr "Diese URLs verweisen auf veröffentlichte hosts.txt-Dateien."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently."
msgstr "Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche nicht regelmäßig aktualisiert wird."
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
"Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche "
"nicht regelmäßig aktualisiert wird."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses."
msgstr "Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten Adressen hinzuzufügen."
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
"Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten "
"Adressen hinzuzufügen."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr "Schauen Sie in den FAQ nach einer Liste von Abonnement-URLs!"

View File

@ -0,0 +1,481 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susidns package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
msgid "Replace"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Save"
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
msgid "Configuration saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "Reload"
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
msgid "Configuration reloaded."
msgstr ""
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
msgid "addressbooks"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
msgid "private"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
msgid "master"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
msgid "router"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
msgid "published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
msgid "subscriptions"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
msgid "configuration"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "overview"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
msgid "Filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
msgid "all"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "Current filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
msgid "clear filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
msgid "Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
msgid "Destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
msgid "Mark for deletion"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Cancel"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
msgid "Add new destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
msgid "Hints"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your personal addressbook, these hosts will be published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your private addressbook, it is never published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Port for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Hostname for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Whether to update the published addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
msgid "What is the addressbook?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr ""

View File

@ -6,16 +6,17 @@
#
msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-12-17 15:05+0000\n"
"PO-Revision-Date: 2010-06-15 11:22+0100\n"
"Last-Translator: duck <duck@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>, monkeybrains <monkeybrains@mail.i2p>\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-02-20 12:15+0000\n"
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
"Language-Team: Dutch <>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Dutch\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193

View File

@ -8,125 +8,135 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-25 21:15+0000\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-05-25 21:43+0000\n"
"Last-Translator: 4get <forget@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Russian\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:199
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr "Поиск"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "Поиск в отфильтрованном списке"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "Отфильтрованный список"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "ничего не найдено"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "Адресная книга"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "не содержит записей"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "содержит одну запись"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr "содержит {0} записей"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr "Показаны {0} из {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "Добавить"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
msgid "Replace"
msgstr "Заменить"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr "Для узла {0} уже существует запись с совпадающим адресом назначения."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite."
msgstr "Для узла {0} уже существует запись с другим адресом назначения. Нажмите \"Заменить\" для перезаписи."
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
"Для узла {0} уже существует запись с другим адресом назначения. Нажмите "
"\"Заменить\" для перезаписи."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr "Добавлен адрес для {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr "Заменён адрес для {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr "Некорректный Base-64 адрес."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr "Пожалуйста, введите имя узла и адрес назначения"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "Удалить выделенное"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr "Адрес {0} удален."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} адресов удалено."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr "Адресная книга сохранена."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr "ОШИБКА: Не удалось сохранить файл адресной книги."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."
msgstr "Форма не принята, скорее всего это произошло из-за того, что Вы нажимали кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму заново."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"Форма не принята, скорее всего это произошло из-за того, что Вы нажимали "
"кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму "
"заново."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:129
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Save"
@ -137,7 +147,7 @@ msgid "Configuration saved."
msgstr "Настройки сохранены."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "Reload"
@ -147,15 +157,22 @@ msgstr "Перезагрузить"
msgid "Configuration reloaded."
msgstr "Настройки перезагружены."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:138
msgid "Subscriptions saved, updating addressbook from subscription sources now."
msgstr "Подписки сохранены, запущена загрузка подписок и обновление адресной книги."
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
"Подписки сохранены, запущена загрузка подписок и обновление адресной книги."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr "Подписки сохранены."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:146
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr "Подписки перезагружены."
@ -276,24 +293,46 @@ msgid "Hints"
msgstr "Примечания"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "Пути указываются относительно домашней директории адресной книги, которая обычно расположена в ~/.i2p/addressbook/ (под Linux) или в %APPDATA%\\I2P\\addressbook\\ (под Windows)."
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"Пути указываются относительно домашней директории адресной книги, которая "
"обычно расположена в ~/.i2p/addressbook/ (под Linux) или в %APPDATA%\\I2P"
"\\addressbook\\ (под Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks."
msgstr "Если Вы хотите вручную добавлять записи в адресную книгу, то добавляйте их в «приватную» или «основную»."
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"Если Вы хотите вручную добавлять записи в адресную книгу, то добавляйте их в "
"«приватную» или «основную»."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid "The router addressbook and the published addressbook are updated by the addressbook application."
msgstr "Адресные книги «маршрутизатор» и «публикуемая» создаются/перезаписываются автоматически."
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
"Адресные книги «маршрутизатор» и «публикуемая» создаются/перезаписываются "
"автоматически."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there."
msgstr "Когда Вы публикуете свою адресную книгу, то публикуются ВСЕ записи из адресных книг «основная» и «маршрутизатор»."
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
"Когда Вы публикуете свою адресную книгу, то публикуются ВСЕ записи из "
"адресных книг «основная» и «маршрутизатор»."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid "Use the private addressbook for private destinations, these are not published."
msgstr "Пользуйтесь «приватной» адресной книгой для адресов, которые Вы не хотите публиковать."
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
"Пользуйтесь «приватной» адресной книгой для адресов, которые Вы не хотите "
"публиковать."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
@ -301,15 +340,20 @@ msgstr "Параметры"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "Файл для хранения списка URL подписок (перенастраивать нет необходимости)"
msgstr ""
"Файл для хранения списка URL подписок (перенастраивать нет необходимости)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr "Интервал обновления (часы)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Your public hosts.txt file (choose a path within your webserver document root)"
msgstr "hosts.txt для публикации (по умолчанию сохраняется в корневой директории встроенного в I2P маршутизатор вебсервера)"
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
"hosts.txt для публикации (по умолчанию сохраняется в корневой директории "
"встроенного в I2P маршутизатор вебсервера)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
@ -336,12 +380,20 @@ msgid "Whether to update the published addressbook"
msgstr "Обновлять ли публикуемую адресную книгу (true/false)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "File containing the etags header from the fetched subscription URLs (no need to change)"
msgstr "Файл для хранения etags-заголовков от загруженных адресов подписок (перенастраивать нет необходимости)"
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
"Файл для хранения etags-заголовков от загруженных адресов подписок "
"(перенастраивать нет необходимости)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)"
msgstr "Файл для хранения даты/времени модификации каждого загруженного адреса подписки (перенастраивать нет необходимости)"
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
"Файл для хранения даты/времени модификации каждого загруженного адреса "
"подписки (перенастраивать нет необходимости)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
@ -360,68 +412,120 @@ msgid "The addressbook application is part of your i2p installation."
msgstr "Адресная книга — это приложение в составе Вашего I2P маршрутизатора."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"."
msgstr "Его задача регулярно пополнять Ваш hosts.txt адресами из настраиваемых источников («подписок»)."
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
"Его задача регулярно пополнять Ваш hosts.txt адресами из настраиваемых "
"источников («подписок»)."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p."
msgstr "По умолчанию в адресной книге настроена лишь одна подписка — на www.i2p2.i2p."
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgstr ""
"По умолчанию в адресной книге настроена лишь одна подписка — на www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid "Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions.jsp\">subscriptions</a> file."
msgstr "Добавить другие подписки просто, достаточно вписать их URL в <a href=\"subscriptions.jsp\">файл подписок</a>."
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"Добавить другие подписки просто, достаточно вписать их URL в <a href="
"\"subscriptions.jsp\">файл подписок</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid "For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "Подробнее о механизме доменных имен в I2P читайте на странице <a href=\"http://www.i2p2.i2p/naming.html\">Naming in I2P</a>."
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"Подробнее о механизме доменных имен в I2P читайте на странице <a href="
"\"http://www.i2p2.i2p/naming.html\">Naming in I2P</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "Как работает адресная книга?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr "Адресная книга периодически опрашивает Ваши подписки и добавляет их содержимое в Вашу «маршрутизаторную» адресную книгу, которая хранится в файле hosts.txt."
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
"Адресная книга периодически опрашивает Ваши подписки и добавляет их "
"содержимое в Вашу «маршрутизаторную» адресную книгу, которая хранится в "
"файле hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well."
msgstr "После этого туда добавляется содержимое Вашей «основной» адресной книги (userhosts.txt)."
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr ""
"После этого туда добавляется содержимое Вашей «основной» адресной книги "
"(userhosts.txt)."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite."
msgstr "Если разрешена публикация, то «маршрутизаторная» адресная книга копируется в «публикуемую» адресную книгу. «Публикуемая» адресная книга доступна публично, если у Вас запущен Ваш I2P-сайт."
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr ""
"Если разрешена публикация, то «маршрутизаторная» адресная книга копируется в "
"«публикуемую» адресную книгу. «Публикуемая» адресная книга доступна "
"публично, если у Вас запущен Ваш I2P-сайт."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published."
msgstr "Маршрутизатор также использует приватную адресную книгу (privatehosts.txt, на иллюстрации не показано), которая никуда не копируется и не публикуется."
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr ""
"Маршрутизатор также использует приватную адресную книгу (privatehosts.txt, "
"на иллюстрации не показано), которая никуда не копируется и не публикуется."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others."
msgstr "Таким образом Вы можете пользоваться адресами из этой адресной книги, не раскрывая другим её содержимое."
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"Таким образом Вы можете пользоваться адресами из этой адресной книги, не "
"раскрывая другим её содержимое."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks."
msgstr "Приватную адресную книгу также удобно иcпользовать для хранения альтернативных/коротких адресов."
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr ""
"Приватную адресную книгу также удобно иcпользовать для хранения "
"альтернативных/коротких адресов."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr "Файл подписок содержит список i2p URL."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The addressbook application regularly checks this list for new eepsites."
msgstr "Адресная книга периодически проверяет этот список на наличие новых адресов I2P-сайтов."
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"Адресная книга периодически проверяет этот список на наличие новых адресов "
"I2P-сайтов."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr "Каждый URL указывает на опубликованный hosts.txt файл."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently."
msgstr "По умолчанию в списке задана только ссылка на hosts.txt с www.i2p2.i2p, который обновляется очень редко."
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
"По умолчанию в списке задана только ссылка на hosts.txt с www.i2p2.i2p, "
"который обновляется очень редко."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses."
msgstr "Поэтому не помешает дополнительно подписаться на hosts.txt с более часто обновляемых сайтов."
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
"Поэтому не помешает дополнительно подписаться на hosts.txt с более часто "
"обновляемых сайтов."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
@ -429,4 +533,3 @@ msgstr "В соответствующем разделе FAQ можно найт
#~ msgid "Delete"
#~ msgstr "Удалить"

View File

@ -8,125 +8,132 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-29 02:35+0000\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2010-05-29 12:51+0800\n"
"Last-Translator: walking <walking@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Chinese\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:199
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr "搜索"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "在过滤结果中搜索"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "过滤结果列表"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "无匹配项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "地址簿"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "包含 0 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "包含 1 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr "包含 {0} 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr "显示 {0} 个项目共 {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "添加"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
msgid "Replace"
msgstr "替换"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite."
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
msgstr "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr "目标密钥已添加为{0}。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr "目标已更新为{0}。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr "无效的Base64目标密钥"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr "请输入主机名称与目标"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "删除选中项"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr "目标 {0} 已删除"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} 个目标已删除"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr "地址簿已保存"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr "错误:无法写入地址簿文件"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."
msgstr "提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期,请重新提交。"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"提交数据无效,可能的原因是您使用了浏览器中的“前进”或“后退”按钮造成会话过期,"
"请重新提交。"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:129
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Save"
@ -137,7 +144,7 @@ msgid "Configuration saved."
msgstr "配置已保存"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "Reload"
@ -147,15 +154,21 @@ msgstr "刷新"
msgid "Configuration reloaded."
msgstr "配置已重新载入"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:138
msgid "Subscriptions saved, updating addressbook from subscription sources now."
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr "订阅已保存,正在通过订阅地址更新地址簿。"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr "订阅已保存。"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:146
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr "订阅设置已重新载入。"
@ -276,23 +289,38 @@ msgid "Hints"
msgstr "提示"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ (Linux) 或 %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"此处使用的路径是以地址簿工作目录为参照的相对路径,通常为 ~/.i2p/addressbook/ "
"(Linux) 或 %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks."
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr "如果您希望想地址簿手动添加地址条目,请将其加入私有地址簿或主地址簿。"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid "The router addressbook and the published addressbook are updated by the addressbook application."
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr "路由地址簿与已发布地址簿会由地址簿程序负责更新。"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there."
msgstr "当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿中。"
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
"当您发布地址簿时,主地址簿与路由地址簿中的所有地址条目都会显示于已发布地址簿"
"中。"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid "Use the private addressbook for private destinations, these are not published."
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr "私有地址簿用来记录需要保密的私人目标,其中的条目不会被发布。"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
@ -308,8 +336,11 @@ msgid "Update interval in hours"
msgstr "更新周期(小时)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Your public hosts.txt file (choose a path within your webserver document root)"
msgstr "您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)"
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
"您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
@ -336,11 +367,15 @@ msgid "Whether to update the published addressbook"
msgstr "是否更新发布地址簿"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "File containing the etags header from the fetched subscription URLs (no need to change)"
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr "此文件含有订阅URL返回的etag头(无需修改)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)"
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr "此文件含有每个地址簿订阅URL上次获取时的修改时间(无需修改)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
@ -360,47 +395,80 @@ msgid "The addressbook application is part of your i2p installation."
msgstr "地址簿程序是I2P安装程序的一部分。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"."
msgstr "他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt"
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
"他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p."
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgstr "默认设置中地址簿仅订阅 www.i2p2.i2p 的项目。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid "Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions.jsp\">subscriptions</a> file."
msgstr "订阅其他网站的地址簿也很简单,只需将它们加入 <a href=\"subscriptions.jsp\">订阅</a> 文件即可。"
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"订阅其他网站的地址簿也很简单,只需将它们加入 <a href=\"subscriptions.jsp\">订"
"阅</a> 文件即可。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid "For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "关于I2P网络域名系统的更多信息,参见 <a href=\"http://www.i2p2.i2p/naming.html\"> www.i2p2.i2p 网站上的“概述” </a>."
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"关于I2P网络域名系统的更多信息,参见 <a href=\"http://www.i2p2.i2p/naming.html"
"\"> www.i2p2.i2p 网站上的“概述” </a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "那么地址簿是如何工作的呢?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr "地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿中保存与 hosts.txt 文件内。"
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
"地址簿程序定期通过订阅的URL获取新的地址簿条目并将它们合并入您的“路由”地址簿"
"中,保存与 hosts.txt 文件内。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid "Then it merges your \"master\" addressbook (userhosts.txt) into the router addressbook as well."
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr "随后他还会将您的“主要”地址簿(userhost.txt)合并入路由器地址簿。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid "If configured, the router addressbook is now written to the \"published\" addressbook, which will be publicly available if you are running an eepsite."
msgstr "如果启用了相关配置路由器地址簿会写入您的“发布”地址簿中如果您有自己的eepsite匿名站点那么它可以通过您的站点公开发布。"
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr ""
"如果启用了相关配置,路由器地址簿会写入您的“发布”地址簿中,如果您有自己的"
"eepsite匿名站点那么它可以通过您的站点公开发布。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid "The router also uses a private addressbook (privatehosts.txt, not shown in the picture), which is not merged or published."
msgstr "路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并或发布。"
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr ""
"路由器同时提供了私有地址簿(privatehost.txt,图片中为出现),其中的项目不会被合并"
"或发布。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid "Hosts in the private addressbook can be accessed by you but their addresses are never distributed to others."
msgstr "您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别人。"
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"您可以访问私有地址簿中的网站,但它们的地址绝不会通过您的公开地址簿发布给别"
"人。"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid "The private addressbook can also be used for aliases of hosts in your other addressbooks."
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr "私有地址簿还可以被用来设置网站别名。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
@ -408,7 +476,8 @@ msgid "The subscription file contains a list of i2p URLs."
msgstr "订阅文件是一个I2P链接列表。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The addressbook application regularly checks this list for new eepsites."
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网站。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
@ -416,17 +485,22 @@ msgid "Those URLs refer to published hosts.txt files."
msgstr "这些URL指向公开发布的hosts.txt文件。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently."
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr "默认订阅是 www.i2p2.i2p 提供的 hosts.txt,此文件很少更新。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses."
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr "所以订阅一些网站的最新地址簿是个不错的主意。"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr "其他来源的订阅链接参见I2P站点的 <a href=\"http://www.i2p2.i2p/faq_zh.html\">FAQ</a>"
msgstr ""
"其他来源的订阅链接参见I2P站点的 <a href=\"http://www.i2p2.i2p/faq_zh.html"
"\">FAQ</a>"
#~ msgid "Delete"
#~ msgstr "删除"

View File

@ -1,17 +0,0 @@
#
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
# zzz - public domain
#
## launching sh.exe with -login parameter will open a shell with the current path always pointing to \bin\
## need to cd into our orignal path - where we call sh.exe from.
cd $CALLFROM
## echo $PWD
## except this everything is the same with bundle-message.sh
## walking - public domain :-D
source bundle-messages.sh $PARAS

View File

@ -23,13 +23,16 @@
<pathelement location="../../../core/java/build/i2p.jar" />
</path>
<property name="javac.compilerargs" value="" />
<target name="compile">
<mkdir dir="${bin}" />
<javac debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
classpathref="cp" destdir="${bin}" srcdir="${src}" includes="**/*.java" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="precompilejsp" unless="precompilejsp.uptodate">
<delete file="WEB-INF/web-fragment.xml" />
<delete file="WEB-INF/web-out.xml" />
@ -47,6 +50,7 @@
<arg value="./jsp" />
</java>
<javac debug="true" deprecation="on" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="${bin}" srcdir="${tmp}" includes="**/*.java" classpathref="cp">
<compilerarg line="${javac.compilerargs}" />
</javac>
@ -61,8 +65,20 @@
<srcfiles dir= "." includes="jsp/*.jsp, WEB-INF/web-template.xml"/>
</uptodate>
<target name="all" depends="compile,precompilejsp,bundle,war"/>
<target name="war">
<target name="all" depends="war"/>
<target name="war" depends="compile, precompilejsp, bundle, warUpToDate" unless="war.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<war destfile="${project}.war" webxml="WEB-INF/web-out.xml">
<fileset dir=".">
<include name="WEB-INF/**/*.class"/>
@ -74,21 +90,32 @@
<include name="index.html"/>
<include name="WEB-INF/classes/${project}.properties"/>
</fileset>
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</war>
</target>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="${project}.war">
<srcfiles dir= "." includes="WEB-INF/web-out.xml WEB-INF/**/*.class images/*.png css.css index.html WEB-INF/classes/${project}.properties" />
</uptodate>
</target>
<target name="bundle" depends="compile, precompilejsp">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
<exec executable="sh" osfamily="unix" failifexecutionfails="false" >
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="false" >
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="false" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages.sh" />
</exec>
</target>
@ -102,9 +129,8 @@
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
<exec executable="cmd" osfamily="windows" failifexecutionfails="true" >
<arg value="/c" />
<arg value="bundle-messages.bat" />
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
<arg value="./bundle-messages.sh" />
<arg value="-p" />
</exec>
</target>

View File

@ -1,26 +0,0 @@
@echo off
set Callfrom=%cd%
set Paras=%1
rem before calling make sure you have msys and mingw 's "bin" path
rem in your current searching path
rem type "set path" to check
if not exist ..\locale\*.only goto updateALL
rem put a messages_xx.only(eg messages_zh.only) into locale folder
rem this script will only touch the po file(eg zh) you specified, leaving other po files untact.
for %%i in (..\locale\*.only) do set PO=%%~ni
echo [Notice] Yu choose to Ony update the choosen file: %PO%.po
for %%i in (..\locale\*.po) do if not %%~ni==%PO% ren %%i %%~ni.po-
call sh --login %cd%\bmsg.sh
for %%i in (..\locale\*.po-) do if not %%~ni==%PO% ren %%i %%~ni.po
goto end
:updateALL
call sh --login %cd%\bmsg.sh
:end
echo End of Message Bundling

View File

@ -18,6 +18,14 @@ then
POUPDATE=1
fi
# on windows, one must specify the path of commnad find
# since windows has its own retarded version of find.
if which find|grep -q -i windows ; then
export PATH=.:/bin:/usr/local/bin:$PATH
fi
# Fast mode - update ondemond
# set LG2 to the language you need in envrionment varibales to enable this
# add ../src/ so the refs will work in the po file
JPATHS="../src/java/ ../src/tmp/"
for i in ../locale/messages_*.po
@ -26,6 +34,11 @@ do
LG=${i#../locale/messages_}
LG=${LG%.po}
# skip, if specified
if [ $LG2 ]; then
[ $LG != $LG2 ] && continue || echo INFO: Language update is set to [$LG2] only.
fi
if [ "$POUPDATE" = "1" ]
then
# make list of java files newer than the .po file
@ -72,15 +85,19 @@ do
touch $i
fi
echo "Generating ${CLASS}_$LG ResourceBundle..."
if [ "$LG" != "en" ]
then
# only generate for non-source language
echo "Generating ${CLASS}_$LG ResourceBundle..."
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
# convert to class files in build/obj
msgfmt --java --statistics -r $CLASS -l $LG -d WEB-INF/classes $i
if [ $? -ne 0 ]
then
echo 'Warning - msgfmt failed, not updating translations'
break
fi
fi
done
rm -f $TMPFILE
# todo: return failure

View File

@ -10,6 +10,7 @@
<javac
srcdir="./src/src"
debug="true" deprecation="off" source="1.5" target="1.5"
includeAntRuntime="false"
destdir="./src/WEB-INF/classes">
<compilerarg line="${javac.compilerargs}" />
<classpath>
@ -20,11 +21,35 @@
</javac>
</target>
<target name="jar" depends="compile, war" />
<target name="war" depends="compile">
<target name="war" depends="compile, warUpToDate" unless="war.uptodate" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<war destfile="susimail.war" webxml="src/WEB-INF/web.xml"
basedir="src/" excludes="WEB-INF/web.xml LICENSE src/**/*">
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</war>
</target>
<target name="warUpToDate">
<uptodate property="war.uptodate" targetfile="susimail.war">
<srcfiles dir= "src" excludes="LICENSE src/**/*" />
</uptodate>
</target>
<target name="javadoc">
<mkdir dir="./build" />
<mkdir dir="./build/javadoc" />

View File

@ -16,28 +16,41 @@
source="1.5"
target="1.5"
destdir="./build/obj"
includeAntRuntime="false"
includes="**/*.java"
classpath="./lib/systray4j.jar:../../../core/java/build/i2p.jar" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jar" depends="compile" unless="jar.uptodate">
<mkdir dir="./build/jar_temp" />
<copy todir="./build/jar_temp">
<fileset dir="./build/obj" includes="**/*.class" />
</copy>
<jar destfile="./build/systray.jar" basedir="./build/jar_temp" includes="**/*">
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate">
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="." />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes}" outputproperty="workspace.changes.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./build/systray.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.apps.systray.SysTray" />
<attribute name="Class-Path" value="systray4j.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.tr}" />
</manifest>
</jar>
<delete dir="./build/jar_temp" />
</target>
<uptodate property="jar.uptodate" targetfile="./build/systray.jar">
<srcfiles dir= "src" includes="**/*.java" />
</uptodate>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="./build/systray.jar">
<srcfiles dir= "build/obj" includes="**/*.class" />
</uptodate>
</target>
<target name="javadoc">
<mkdir dir="./build" />

View File

@ -42,7 +42,8 @@
<echo message=" (libc6-i686 and libc6-amd64 required, ant>=1.8 required)" />
<echo message=" debianrepo: build a Debian repository (reprepro required)" />
<echo message=" poupdate: update the .po files for translators" />
</target>
<echo message=" pkg-portable-win32: build a minimum portable version for win32" />
</target>
<target name="debianhowto">
<echo message="To build debian packages, you must run dpkg-buildpackage as root in the source directory. It will then run ant for you. dpkg-buildpackage is found in the 'dpkg-dev' package. Also it should work fine to use the 'fakeroot' package with dpkg-buildpackage, if you don't want to run as root. Please read 'man dpkg-buildpackage' before building any packages yourself." />
</target>
@ -97,6 +98,9 @@
</target>
<target name="buildDesktopGui" depends="buildCore, buildrouter" >
<!--
<ant dir="apps/desktopgui" target="clean" />
-->
<ant dir="apps/desktopgui" target="jar" />
</target>
@ -104,7 +108,7 @@
<ant dir="apps/routerconsole/java/" target="jar" />
</target>
<target name="buildJetty" >
<target name="buildJetty" depends="buildProperties" >
<ant dir="apps/jetty" target="build" />
</target>
@ -126,11 +130,21 @@
<copy file="router/java/build/router.jar" todir="build/" />
</target>
<target name="buildCore" >
<target name="buildCore" depends="buildProperties" >
<ant dir="core/java/" target="jar" />
<copy file="core/java/build/i2p.jar" todir="build/" />
</target>
<target name="buildProperties" >
<exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" >
<arg value="automate" />
<arg value="get_base_revision_id" />
</exec>
<tstamp>
<format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss z" timezone="UTC" locale="en" />
</tstamp>
</target>
<!-- end of sub-build.xml targets -->
<target name="buildWEB" depends="buildRouterConsole" >
@ -164,11 +178,13 @@
</condition>
<ant target="doBuildEXE" />
</target>
<target name="doBuildEXE" unless="noExe">
<target name="doBuildEXE" depends="buildProperties" unless="noExe">
<jar destfile="./build/launchi2p.jar">
<manifest>
<attribute name="Main-Class" value="net.i2p.router.RouterLaunch" />
<attribute name="Class-Path" value="lib/i2p.jar lib/router.jar lib/jbigi.jar lib/BOB.jar lib/sam.jar lib/mstreaming.jar lib/streaming.jar lib/routerconsole.jar lib/i2ptunnel.jar lib/org.mortbay.jetty.jar lib/javax.servlet.jar lib/jasper-compiler.jar lib/jasper-runtime.jar lib/commons-logging.jar lib/commons-el.jar lib/wrapper.jar lib/systray.jar lib/systray4j.jar lib/desktopgui.jar" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
</manifest>
</jar>
<!-- now the standalone launcher exe -->
@ -200,7 +216,9 @@
<copy file="apps/addressbook/dist/addressbook.war" todir="build/" />
</target>
<!-- the apps need to compile the jsps to poupdate -->
<target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty" >
<target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty, buildDesktopGui" >
<echo message="Setting environment variable LG2 to a lang code (eg: de,zh,nl etc)" />
<echo message=" will restrict language update to the language you specified, leaving other language untact." />
<ant dir="apps/routerconsole/java/" target="poupdate" />
<ant dir="apps/i2psnark/java/" target="poupdate" />
<ant dir="apps/i2ptunnel/java/" target="poupdate" />
@ -546,6 +564,8 @@
<copy todir="pkg-temp/docs/" >
<fileset dir="installer/resources/readme/" includes="readme*.html" />
<fileset dir="installer/resources/proxy/" includes="*.ht" />
<!-- lang_ar.png added in 0.8.4 -->
<fileset dir="installer/resources/" includes="icons/flags/lang_ar.png" />
</copy>
</target>
@ -677,17 +697,43 @@
<target name="prepjupdatefixes" depends="prepupdate, buildWEB">
<copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" />
</target>
<target name="installer" depends="preppkg">
<target name="installer" depends="preppkg, buildProperties">
<taskdef name="izpack" classpath="${basedir}/installer/lib/izpack/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask" />
<mkdir dir="pkg-temp/installer" />
<exec executable="mtn" outputproperty="workspace.changes.util" errorproperty="mtn.error.util" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="core/java/src/net/i2p/util" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.util}" outputproperty="workspace.changes.util.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
<jar destfile="./pkg-temp/installer/copy.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Copy.class net/i2p/util/FileUtil.class">
<manifest><attribute name="Main-Class" value="net.i2p.util.Copy" /></manifest>
<manifest>
<attribute name="Main-Class" value="net.i2p.util.Copy" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
</manifest>
</jar>
<jar destfile="./pkg-temp/installer/delete.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Delete.class net/i2p/util/FileUtil.class">
<manifest><attribute name="Main-Class" value="net.i2p.util.Delete" /></manifest>
<manifest>
<attribute name="Main-Class" value="net.i2p.util.Delete" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
</manifest>
</jar>
<jar destfile="./pkg-temp/installer/exec.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Exec.class">
<manifest><attribute name="Main-Class" value="net.i2p.util.Exec" /></manifest>
<manifest>
<attribute name="Main-Class" value="net.i2p.util.Exec" />
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.util.tr}" />
</manifest>
</jar>
<!--
Force 1.5 pack200 output
@ -728,29 +774,31 @@
<launch4j configFile="./installer/i2pstandalone.xml" />
<!-- thazzit -->
</target>
<target name="test">
<target name="test" depends="buildProperties" >
<ant dir="core/java/" target="test" />
</target>
<target name="junit.report">
<target name="junit.report" depends="buildProperties" >
<ant dir="core/java/" target="junit.report" />
</target>
<target name="clover.report">
<target name="clover.report" depends="buildProperties" >
<ant dir="core/java/" target="clover.report" />
</target>
<target name="test.report" depends="junit.report, clover.report"/>
<target name="fulltest">
<target name="fulltest" depends="buildProperties" >
<ant dir="core/java/" target="fulltest" />
<ant dir="router/java/" target="fulltest" />
</target>
<target name="fullclovertest">
<target name="fullclovertest" depends="buildProperties" >
<ant dir="core/java/" target="fullclovertest" />
<ant dir="router/java/" target="fullclovertest" />
</target>
<target name="syndie" >
<ant dir="apps/syndie/java/" target="standalone" />
<copy file="apps/syndie/java/syndie-standalone.zip" todir="." />
</target>
<target name="i2psnark">
<target name="i2psnark" depends="buildProperties" >
<ant dir="apps/i2psnark/java" target="standalone" />
<copy file="apps/i2psnark/java/i2psnark-standalone.zip" todir="." />
</target>
@ -955,7 +1003,7 @@
<target name="debian" depends="distclean, debian-source, debian-binary" />
<target name="debian-binary">
<target name="debian-binary" depends="buildProperties" >
<echo message="Did you update the version in these files?" />
<exec executable="ls" failonerror="true">
<arg value="-l" />
@ -972,7 +1020,7 @@
<arg value="amd64" />
</exec>
</target>
<target name="debian-source">
<target name="debian-source" depends="buildProperties" >
<!-- bundle the 20MB jetty 5 lib since there probably isn't a deb for it -->
<ant dir="apps/jetty" target="ensureJettylib" />
<echo message="Did you update the version in these files?" />

Some files were not shown because too many files have changed in this diff Show More