propagate from branch 'i2p.i2p.0971' (head 6cb629b61e0177deda1e539b2f85a2473f3af7fb)

to branch 'i2p.i2p' (head 8e86ef70afbbbbdc2db06cec34f17dedd528c7e7)
This commit is contained in:
zzz
2013-08-10 17:06:17 +00:00
241 changed files with 14575 additions and 3620 deletions

View File

@ -1,5 +1,7 @@
# Just to try and prevent some noob disasters.
# Use mtn add --no-respect-ignore foo.jar to ignore this ignore list
# Temporary/build files
_jsp\.java$
\.bz2$
\.tar$
@ -19,13 +21,27 @@ _jsp\.java$
.\deb$
\.zip$
^\.
^build
^pkg-temp/
~$
web-fragment.xml
web-out.xml
# Temporary/build dirs
^build
^pkg-temp
/build
/classes/
/classes
/dist
/mo
/tmp
^apps/jetty/jettylib
# Debian-related
^debian/copyright
^debian/changelog
# Build property overrides
override.properties
# Reporting
sloccount.sc
^reports/

View File

@ -19,6 +19,26 @@ trans.uk_UA = apps/i2ptunnel/locale/messages_uk.po
trans.vi = apps/i2ptunnel/locale/messages_vi.po
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
[I2P.proxy]
source_file = apps/i2ptunnel/locale-proxy/messages_en.po
source_lang = en
trans.ar = apps/i2ptunnel/locale-proxy/messages_ar.po
trans.cs = apps/i2ptunnel/locale-proxy/messages_cs.po
trans.de = apps/i2ptunnel/locale-proxy/messages_de.po
trans.es = apps/i2ptunnel/locale-proxy/messages_es.po
trans.fr = apps/i2ptunnel/locale-proxy/messages_fr.po
trans.hu = apps/i2ptunnel/locale-proxy/messages_hu.po
trans.it = apps/i2ptunnel/locale-proxy/messages_it.po
trans.nb = apps/i2ptunnel/locale-proxy/messages_nb.po
trans.nl = apps/i2ptunnel/locale-proxy/messages_nl.po
trans.pl = apps/i2ptunnel/locale-proxy/messages_pl.po
trans.pt = apps/i2ptunnel/locale-proxy/messages_pt.po
trans.ru_RU = apps/i2ptunnel/locale-proxy/messages_ru.po
trans.sv_SE = apps/i2ptunnel/locale-proxy/messages_sv.po
trans.uk_UA = apps/i2ptunnel/locale-proxy/messages_uk.po
trans.vi = apps/i2ptunnel/locale-proxy/messages_vi.po
trans.zh_CN = apps/i2ptunnel/locale-proxy/messages_zh.po
[I2P.routerconsole]
source_file = apps/routerconsole/locale/messages_en.po
source_lang = en
@ -44,6 +64,18 @@ trans.uk_UA = apps/routerconsole/locale/messages_uk.po
trans.vi = apps/routerconsole/locale/messages_vi.po
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
[I2P.welcome]
source_file = apps/routerconsole/locale-news/messages_en.po
source_lang = en
trans.ar = apps/routerconsole/locale-news/messages_ar.po
trans.de = apps/routerconsole/locale-news/messages_de.po
trans.es = apps/routerconsole/locale-news/messages_es.po
trans.fr = apps/routerconsole/locale-news/messages_fr.po
trans.nl = apps/routerconsole/locale-news/messages_nl.po
trans.pt = apps/routerconsole/locale-news/messages_pt.po
trans.ru_RU = apps/routerconsole/locale-news/messages_ru.po
trans.sv_SE = apps/routerconsole/locale-news/messages_sv.po
[I2P.i2psnark]
source_file = apps/i2psnark/locale/messages_en.po
source_lang = en

View File

@ -207,7 +207,7 @@ Applications:
FatCow icons: See licenses/LICENSE-FatCowIcons.txt
GeoIP Data:
Copyright (c) 2008 MaxMind, Inc. All Rights Reserved.
This product includes GeoLite data created by MaxMind, available from http://www.maxmind.com/
See licenses/LICENSE-GeoIP.txt
Router Console and I2PSnark themes:

8
apps/BOB/.classpath Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2p_sdk"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/ministreaming"/>
<classpathentry kind="output" path="build"/>
</classpath>

17
apps/BOB/.project Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>BOB</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="java/src"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2p_sdk"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/jetty/jettylib/javax.servlet.jar"/>
<classpathentry kind="output" path="build"/>
</classpath>

17
apps/addressbook/.project Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>addressbook</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1863,6 +1863,14 @@ public class SnarkManager implements CompleteListener {
private final Snark snark;
public ThreadedStarter(Snark s) { snark = s; }
public void run() {
try {
run2();
} catch (Exception e) {
_log.error("Error starting", e);
}
}
private void run2() {
if (snark != null) {
if (snark.isStopped())
snark.startTorrent();

View File

@ -56,7 +56,7 @@
<!-- The web classes are now in the war not the jar - they are not part of the API -->
<target name="jar" depends="builddep, compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<target name="jar" depends="builddep, compile, bundle-proxy, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.j.tr" value="" />
<jar destfile="./build/i2ptunnel.jar" basedir="./build/obj" includes="**/*.class" excludes="**/EditBean.class **/IndexBean.class" >
@ -87,6 +87,7 @@
</condition>
</target>
<!-- servlet translations go in the war, not the jar -->
<target name="bundle" depends="compile, precompilejsp" unless="no.bundle">
<!-- Update the messages_*.po files.
We need to supply the bat file for windows, and then change the fail property to true -->
@ -118,6 +119,49 @@
</exec>
</target>
<!-- proxy error page translations go in the jar, not the war -->
<target name="bundle-proxy" unless="no.bundle">
<!-- 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" failonerror="${require.gettext}" >
<arg value="./bundle-messages-proxy.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
<arg value="./bundle-messages-proxy.sh" />
</exec>
<!-- multi-lang is optional -->
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages-proxy.sh" />
</exec>
</target>
<target name="extractProxyTags">
<java classname="net.i2p.util.TranslateReader" fork="true" failonerror="true">
<classpath>
<pathelement location="../../../build/i2p.jar" />
</classpath>
<arg value="tag" />
<arg value="../../../installer/resources/proxy/" />
<arg value="build/Proxy.java" />
</java>
</target>
<target name="poupdate-proxy" depends="extractProxyTags">
<!-- Update the messages_*.po files. -->
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-proxy.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-proxy.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-proxy.sh" />
<arg value="-p" />
</exec>
</target>
<target name="listChangedFiles2" depends="warUpToDate" if="shouldListChanges2" >
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />

View File

@ -0,0 +1,110 @@
#!/bin/sh
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
#
# usage:
# bundle-messages.sh (generates the resource bundle from the .po file)
# bundle-messages.sh -p (updates the .po file from the source tags, then generates the resource bundle)
#
# zzz - public domain
#
CLASS=net.i2p.i2ptunnel.proxy.messages
TMPFILE=build/javafiles-proxy.txt
export TZ=UTC
RC=0
if [ "$1" = "-p" ]
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/build/Proxy.java ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java"
for i in ../locale-proxy/messages_*.po
do
# get language
LG=${i#../locale-proxy/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
if [ -s build/obj/net/i2p/i2ptunnel/proxy/messages_$LG.class -a \
build/obj/net/i2p/i2ptunnel/proxy/messages_$LG.class -nt $i -a \
! -s $TMPFILE ]
then
continue
fi
if [ "$POUPDATE" = "1" ]
then
echo "Updating the $i file from the tags..."
# extract strings from java and jsp files, and update messages.po files
# translate calls must be one of the forms:
# _("foo")
# _x("foo")
# intl._("foo")
# intl.title("foo")
# In a jsp, you must use a helper or handler that has the context set.
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean updater.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ \
-o ${i}t
if [ $? -ne 0 ]
then
echo "ERROR - xgettext failed on ${i}, not updating translations"
rm -f ${i}t
RC=1
break
fi
msgmerge -U --backup=none $i ${i}t
if [ $? -ne 0 ]
then
echo "ERROR - msgmerge failed on ${i}, not updating translations"
rm -f ${i}t
RC=1
break
fi
rm -f ${i}t
# so we don't do this again
touch $i
fi
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 "ERROR - msgfmt failed on ${i}, not updating translations"
# msgfmt leaves the class file there so the build would work the next time
find build/obj -name messages_${LG}.class -exec rm -f {} \;
RC=1
break
fi
fi
done
rm -f $TMPFILE
exit $RC

View File

@ -29,7 +29,7 @@ fi
# 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"
JPATHS="../java/src/net/i2p/i2ptunnel/web ../jsp/WEB-INF"
for i in ../locale/messages_*.po
do
# get language

View File

@ -1409,8 +1409,9 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
}
}
****/
/** */
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.web.messages";
/** these strings go in the jar, not the war */
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.proxy.messages";
/** lang in routerconsole.lang property, else current locale */
protected static String _(String key) {

View File

@ -3,9 +3,9 @@
*/
package net.i2p.i2ptunnel;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.util.ArrayList;
@ -27,6 +27,7 @@ import net.i2p.util.EventDispatcher;
import net.i2p.util.InternalSocket;
import net.i2p.util.Log;
import net.i2p.util.PasswordManager;
import net.i2p.util.TranslateReader;
/**
* Common things for HTTPClient and ConnectClient
@ -496,44 +497,35 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
*/
protected static byte[] getErrorPage(I2PAppContext ctx, String base, byte[] backup) {
File errorDir = new File(ctx.getBaseDir(), "docs");
String lang = ctx.getProperty("routerconsole.lang", Locale.getDefault().getLanguage());
if(lang != null && lang.length() > 0 && !lang.equals("en")) {
File file = new File(errorDir, base + "-header_" + lang + ".ht");
try {
return readFile(file);
} catch(IOException ioe) {
// try the english version now
}
}
File file = new File(errorDir, base + "-header.ht");
try {
return readFile(file);
return readFile(ctx, file);
} catch(IOException ioe) {
return backup;
}
}
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.proxy.messages";
/**
* @since 0.9.4 moved from I2PTunnelHTTPClient
*/
private static byte[] readFile(File file) throws IOException {
FileInputStream fis = null;
byte[] buf = new byte[2048];
ByteArrayOutputStream baos = new ByteArrayOutputStream(2048);
private static byte[] readFile(I2PAppContext ctx, File file) throws IOException {
Reader reader = null;
char[] buf = new char[512];
StringBuilder out = new StringBuilder(2048);
try {
int len = 0;
fis = new FileInputStream(file);
while((len = fis.read(buf)) > 0) {
baos.write(buf, 0, len);
int len;
reader = new TranslateReader(ctx, BUNDLE_NAME, new FileInputStream(file));
while((len = reader.read(buf)) > 0) {
out.append(buf, 0, len);
}
return baos.toByteArray();
return out.toString().getBytes("UTF-8");
} finally {
try {
if(fis != null) {
fis.close();
}
} catch(IOException foo) {
}
if(reader != null)
reader.close();
} catch(IOException foo) {}
}
// we won't ever get here
}

View File

@ -39,7 +39,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
private final Socket s;
private final I2PSocket i2ps;
private final Object slock, finishLock = new Object();
boolean finished = false;
volatile boolean finished = false;
private final byte[] initialI2PData;
private final byte[] initialSocketData;
/** when the last data was sent/received (or -1 if never) */

View File

@ -25,6 +25,7 @@ import java.util.concurrent.ThreadFactory;
import net.i2p.I2PAppContext;
import net.i2p.I2PException;
import net.i2p.client.I2PSessionException;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.client.streaming.I2PSocket;
import net.i2p.client.streaming.I2PSocketManager;
@ -37,17 +38,16 @@ import net.i2p.util.Log;
public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
protected final Log _log;
protected I2PSocketManager sockMgr;
protected final I2PSocketManager sockMgr;
protected I2PServerSocket i2pss;
private final Object lock = new Object();
protected final Object slock = new Object();
protected InetAddress remoteHost;
protected int remotePort;
private boolean _usePool;
protected Logging l;
protected final InetAddress remoteHost;
protected final int remotePort;
private final boolean _usePool;
protected final Logging l;
private static final long DEFAULT_READ_TIMEOUT = 5*60*1000;
/** default timeout to 5 minutes - override if desired */
@ -56,6 +56,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
/** do we use threads? default true (ignored for standard servers, always false) */
private static final String PROP_USE_POOL = "i2ptunnel.usePool";
private static final boolean DEFAULT_USE_POOL = true;
/** apparently unused */
protected static volatile long __serverId = 0;
/** max number of threads - this many slowlorisses will DOS this server, but too high could OOM the JVM */
private static final String PROP_HANDLER_COUNT = "i2ptunnel.blockingHandlerCount";
@ -65,8 +66,8 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
/** how long to wait before dropping an idle thread */
private static final long HANDLER_KEEPALIVE_MS = 30*1000;
protected I2PTunnelTask task = null;
protected boolean bidir = false;
protected I2PTunnelTask task;
protected boolean bidir;
private ThreadPoolExecutor _executor;
/** unused? port should always be specified */
@ -74,8 +75,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
protected int localPort = DEFAULT_LOCALPORT;
/**
* Warning, blocks in constructor while connecting to router and building tunnels;
* TODO move that to startRunning()
* Non-blocking
*
* @param privData Base64-encoded private key data,
* format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
@ -86,16 +86,19 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
super("Server at " + host + ':' + port, notifyThis, tunnel);
_log = tunnel.getContext().logManager().getLog(getClass());
ByteArrayInputStream bais = new ByteArrayInputStream(Base64.decode(privData));
init(host, port, bais, privData, l);
this.l = l;
this.remoteHost = host;
this.remotePort = port;
_usePool = getUsePool();
sockMgr = createManager(bais);
}
/**
* Warning, blocks in constructor while connecting to router and building tunnels;
* TODO move that to startRunning()
* Non-blocking
*
* @param privkey file containing the private key data,
* format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @param privkeyname the name of the privKey file, not clear why we need this too
* @param privkeyname the name of the privKey file, just for logging
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
* badly that we cant create a socketManager
*/
@ -103,13 +106,18 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
EventDispatcher notifyThis, I2PTunnel tunnel) {
super("Server at " + host + ':' + port, notifyThis, tunnel);
_log = tunnel.getContext().logManager().getLog(getClass());
this.l = l;
this.remoteHost = host;
this.remotePort = port;
_usePool = getUsePool();
FileInputStream fis = null;
try {
fis = new FileInputStream(privkey);
init(host, port, fis, privkeyname, l);
sockMgr = createManager(fis);
} catch (IOException ioe) {
_log.error("Error starting server", ioe);
_log.error("Cannot read private key data for " + privkeyname, ioe);
notifyEvent("openServerResult", "error");
throw new IllegalArgumentException("Error starting server", ioe);
} finally {
if (fis != null)
try { fis.close(); } catch (IOException ioe) {}
@ -117,19 +125,22 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
}
/**
* Warning, blocks in constructor while connecting to router and building tunnels;
* TODO move that to startRunning()
* Non-blocking
*
* @param privData stream containing the private key data,
* format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @param privkeyname the name of the privKey file, not clear why we need this too
* @param privkeyname the name of the privKey file, just for logging
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
* badly that we cant create a socketManager
*/
public I2PTunnelServer(InetAddress host, int port, InputStream privData, String privkeyname, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel) {
super("Server at " + host + ':' + port, notifyThis, tunnel);
_log = tunnel.getContext().logManager().getLog(getClass());
init(host, port, privData, privkeyname, l);
this.l = l;
this.remoteHost = host;
this.remotePort = port;
_usePool = getUsePool();
sockMgr = createManager(privData);
}
/**
@ -145,27 +156,35 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
this.remoteHost = host;
this.remotePort = port;
_log = tunnel.getContext().logManager().getLog(getClass());
_usePool = false;
sockMgr = sktMgr;
open = true;
}
/** @since 0.9.8 */
private boolean getUsePool() {
// extending classes default to threaded, but for a standard server, we can't get slowlorissed
boolean rv = !getClass().equals(I2PTunnelServer.class);
if (rv) {
String usePool = getTunnel().getClientOptions().getProperty(PROP_USE_POOL);
if (usePool != null)
rv = Boolean.parseBoolean(usePool);
else
rv = DEFAULT_USE_POOL;
}
return rv;
}
private static final int RETRY_DELAY = 20*1000;
private static final int MAX_RETRIES = 4;
/**
* Warning, blocks while connecting to router and building tunnels;
* TODO move that to startRunning()
*
* @param privData stream containing the private key data,
* format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @param privkeyname the name of the privKey file, not clear why we need this too
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
* badly that we cant create a socketManager
* @since 0.9.8
*/
private void init(InetAddress host, int port, InputStream privData, String privkeyname, Logging l) {
this.l = l;
this.remoteHost = host;
this.remotePort = port;
private I2PSocketManager createManager(InputStream privData) {
Properties props = new Properties();
props.putAll(getTunnel().getClientOptions());
int portNum = 7654;
@ -176,54 +195,54 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
_log.error("Invalid port specified [" + getTunnel().port + "], reverting to " + portNum);
}
}
// copy the privData to a new BAIS, so we can always reset() it if we have to retry
ByteArrayInputStream privDataCopy;
try {
privDataCopy = copyOfInputStream(privData);
} catch (IOException ioe) {
_log.log(Log.CRIT, "Cannot read private key data for " + privkeyname, ioe);
return;
I2PSocketManager rv = I2PSocketManagerFactory.createDisconnectedManager(privData, getTunnel().host,
portNum, props);
rv.setName("Server");
getTunnel().addSession(rv.getSession());
return rv;
} catch (I2PSessionException ise) {
throw new IllegalArgumentException("Can't create socket manager", ise);
} finally {
try { privData.close(); } catch (IOException ioe) {}
}
}
// extending classes default to threaded, but for a standard server, we can't get slowlorissed
_usePool = !getClass().equals(I2PTunnelServer.class);
if (_usePool) {
String usePool = getTunnel().getClientOptions().getProperty(PROP_USE_POOL);
if (usePool != null)
_usePool = Boolean.parseBoolean(usePool);
else
_usePool = DEFAULT_USE_POOL;
}
// Todo: Can't stop a tunnel from the UI while it's in this loop (no session yet)
/**
* Warning, blocks while connecting to router and building tunnels;
*
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
* badly that we cant create a socketManager
* @since 0.9.8
*/
private void connectManager() {
int retries = 0;
while (sockMgr == null) {
synchronized (slock) {
sockMgr = I2PSocketManagerFactory.createManager(privDataCopy, getTunnel().host, portNum,
props);
}
if (sockMgr == null) {
while (sockMgr.getSession().isClosed()) {
try {
sockMgr.getSession().connect();
} catch (I2PSessionException ise) {
// try to make this error sensible as it will happen...
String portNum = getTunnel().port;
if (portNum == null)
portNum = "7654";
String msg = "Unable to connect to the router at " + getTunnel().host + ':' + portNum +
" and build tunnels for the server at " + host.getHostAddress() + ':' + port;
" and build tunnels for the server at " + remoteHost.getHostAddress() + ':' + remotePort;
if (++retries < MAX_RETRIES) {
this.l.log(msg + ", retrying in " + (RETRY_DELAY / 1000) + " seconds");
_log.error(msg + ", retrying in " + (RETRY_DELAY / 1000) + " seconds");
msg += ", retrying in " + (RETRY_DELAY / 1000) + " seconds";
this.l.log(msg);
_log.error(msg);
} else {
this.l.log(msg + ", giving up");
_log.log(Log.CRIT, msg + ", giving up");
throw new IllegalArgumentException(msg);
msg += ", giving up";
this.l.log(msg);
_log.log(Log.CRIT, msg, ise);
throw new IllegalArgumentException(msg, ise);
}
try { Thread.sleep(RETRY_DELAY); } catch (InterruptedException ie) {}
privDataCopy.reset();
}
}
sockMgr.setName("Server");
getTunnel().addSession(sockMgr.getSession());
l.log("Tunnels ready for server at " + host.getHostAddress() + ':' + port);
l.log("Tunnels ready for server at " + remoteHost.getHostAddress() + ':' + remotePort);
notifyEvent("openServerResult", "ok");
open = true;
}
@ -249,10 +268,13 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
/**
* Start running the I2PTunnelServer.
* Warning, blocks while connecting to router and building tunnels;
*
* TODO: Wait to connect to router until here.
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
* badly that we cant create a socketManager
*/
public void startRunning() {
public synchronized void startRunning() {
connectManager();
// prevent JVM exit when running outside the router
boolean isDaemon = getTunnel().getContext().isRouterContext();
Thread t = new I2PAppThread(this, "Server " + remoteHost + ':' + remotePort, isDaemon);
@ -405,7 +427,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
/** just to set the name and set Daemon */
private static class CustomThreadFactory implements ThreadFactory {
private String _name;
private final String _name;
public CustomThreadFactory(String name) {
_name = name;
@ -425,7 +447,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
* Run the blockingHandler.
*/
private class Handler implements Runnable {
private I2PSocket _i2ps;
private final I2PSocket _i2ps;
public Handler(I2PSocket socket) {
_i2ps = socket;

View File

@ -233,7 +233,8 @@ public abstract class LocalHTTPServer {
return buf.toString();
}
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.web.messages";
/** these strings go in the jar, not the war */
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.proxy.messages";
/** lang in routerconsole.lang property, else current locale */
protected static String _(String key) {

View File

@ -0,0 +1,442 @@
# 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: 2013-07-13 18:48+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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "اعدادات البروكسي الخارجي"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "اعدادات البروكسي الخارجي"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "تم حفظ تغيرات الاعدادات"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "أضف الى دفتر العناوين"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "وجهة محلية"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "اسم او اتجاه"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr "تحديث بروكسي الى"
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "اسم او اتجاه"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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:1043
msgid "Host"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "اتجاه"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "بروكسي خارجي"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "تحديث من {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""

View File

@ -0,0 +1,443 @@
# 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
#
# Translators:
# Waseihou Watashi <waseihou@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:48+0000\n"
"PO-Revision-Date: 2012-02-17 11:26+0000\n"
"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
"Language-Team: Czech (http://www.transifex.net/projects/p/I2P/language/cs/)\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr ""
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr ""
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Cíl tunelu"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "jméno nebo cíl"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "jméno nebo cíl"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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:1043
msgid "Host"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP bidir"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""

View File

@ -0,0 +1,459 @@
# 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
#
# Translators:
# blabla, 2011
# blabla <blabla@trash-mail.com>, 2011-2012
# D.A. Loader <>, 2012
# driz <driz@i2pmail.org>, 2012
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# mixxy, 2011
# pirr <pirr@tormail.org>, 2012
# zeroflag <zeroflag@i2pmail.org>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-05-08 13:15+0000\n"
"Last-Translator: zeroflag <zeroflag@i2pmail.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/"
"de/)\n"
"Language: de\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Outproxy Autorisation"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Outproxy Autorisation"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Routerkonsole"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Routerkonsole"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Einstellungen"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Hilfe"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Adressbuch"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "lokales Ziel"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Tunnel Ziel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Dein Browser unterstützt keine iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "Der HTTP-Proxy ist nicht bereit"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Dies scheint kein gültiges Ziel zu sein:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "Der I2P-Adresshelfer kann dir bei solch einem Ziel nicht helfen."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Ziel"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Weiter zu {0}, ohne zu speichern"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "{0} im Router-Adressbuch speichern und auf die Eepseite weiterleiten"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "{0} im Master-Adressbuch speichern und auf die Eepseite weiterleiten"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "{0} im privaten Adressbuch speichern und auf die Eepseite weiterleiten"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP-Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
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:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "Weiterleitungsdienst {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Hinzugefüg über den Adressenhelfer von {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Durch Adresshelfer hinzugefügt"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Weiterleitung zu {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
"{0} wurde ins {1} Adressbuch geschrieben. Du wirst nun weitergeleitet."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
"Konnte {0} nicht im {1} Adressbuch speichern. Du wirst nun weitergeleitet."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Klick hier, wenn du nicht automatisch weitergeleitet wirst!"

View File

@ -0,0 +1,442 @@
# 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: 2013-07-13 18:49+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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr ""
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr ""
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr ""
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr ""
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr ""
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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:1043
msgid "Host"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""

View File

@ -0,0 +1,459 @@
# 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
#
# Translators:
# "blabla", 2011
# blabla <blabla@trash-mail.com>, 2011, 2012
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2012-2013
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# punkibastardo <punkibastardo@gmail.com>, 2011, 2012
# punkibastardo <punkibastardo@gmail.com>, 2011
# trolly <trolly@fastmail.fm>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-04-15 10:42+0000\n"
"Last-Translator: trolly <trolly@fastmail.fm>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/"
"es/)\n"
"Language: es\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Autorización outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorización outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Consola del Router"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Consola del Router"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Ajustes"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Ayuda"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Libreta de direcciones"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "destino local"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Destino del túnel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Tu navegador no soporta iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "El proxy HTTP no está activo"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Éste parece ser un destino falso:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "El ayudante de direcciones no te puede ayudar con un destino así."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Para visitar el destino en la base de datos de hosts, ¡pincha <a href="
"\"{0}\">aquí</a>! Para visitar el destino del ayudante de direcciones en "
"conflicto, ¡pincha <a href=\"{1}\">aquí</a>!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destino"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Acceder a {0} sin guardar"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
"Guardar {0} a la libreta de direcciones del router y acceder al sitio i2p."
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
"Guardar {0} a la libreta de direcciones principal y acceder al sitio i2p."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
"Guardar {0} a la libreta de direcciones privada y acceder al sitio i2p."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Puerta de salida HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Pincha en un enlace de debajo para buscar un ayudante de direcciones "
"mediante el uso de un servicio de \"salto\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "servicio saltador {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Agregado por el ayudante de direcciones desde {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Agregado por el ayudante de direcciones."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Redireccionando a {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} ha sido guardado en la libreta {1}, accediendo ahora."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "No se ha podido guardar {0} en la libreta {1}, accediendo ahora."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "¡Haz click aquí si no estás siendo enviado automáticamente!"

View File

@ -0,0 +1,453 @@
# 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
#
# Translators:
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# Boxoa590, 2013
# Boxoa590, 2012
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-05-29 21:00+0000\n"
"Last-Translator: Boxoa590\n"
"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/"
"fr/)\n"
"Language: fr\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Autorisation de mandataire sortant"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorisation de mandataire sortant"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Console du routeur"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Console du routeur"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Configuration"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Aide"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Carnet d'adresses"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Destination locale"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Destination du tunnel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Votre navigateur n'est pas compatible iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "Le proxy HTTP n'est pas en place"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Cela semble être une mauvaise destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
"i2paddresshelper ne peut pas vous aider avec une destination comme cela !"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Pour aller à la destination de votre base de données d''hôtes, cliquez <a "
"href=\"{0}\">here</a>. Pour aller à la destination de l''aide d''adresse en "
"conflit, cliquez <a href=\"{1}\">ici</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Hôte"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Aller sur le site i2p {0} sans enregistrer dans un carnet d'adresses. "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse du routeur {0} et aller sur le site i2p"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse principal {0} et aller sur le site i2p"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Ajouter au carnet d''adresse privé {0} et aller sur le site i2p"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "proxy sortant HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en "
"utilisant un \"service de saut\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} jump service"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Ajouté via assistant d''adresse depuis {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Ajouté via assitant d'adresse"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Redirection vers {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} ajouté au carnet d''adresses {1}. Redirection en cours."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "{0} non ajouté au carnet d''adresses {1}. Redirection en cours."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Cliquez ici si vous n'êtes pas redirigé automatiquement."

View File

@ -0,0 +1,448 @@
# 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
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2012-06-01 21:37+0000\n"
"Last-Translator: AdminLMH <lehetmashogy@i2pmail.org>\n"
"Language-Team: Hungarian (http://www.transifex.net/projects/p/I2P/language/"
"hu/)\n"
"Language: hu\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Kimenő proxy Hitelesítés"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Kimenő proxy Hitelesítés"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Router Konzol"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Router Konzol"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Beállítások"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Segítség"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Címjegyzék"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Helyi célállomást"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Alagút célállomása"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "A HTTP proxy nincs bekapcsolva"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Ez rossz célállomásnak tűnik:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2pcímsegítő nem tud segíteni ilyen célállomással!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"A hoszt adatbázisodban lévő célállomás megtekintéséhez kattints <a href="
"\"{0}\">ide</a>. Az ütközésben lévő címsegítő célállomás megtekintéséhez "
"kattints <a href=\"{1}\">ide</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Hoszt"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Bázis 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Célállomás"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Mentés nélkül tovább ide: {0}"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "{0} mentése a router címjegyzékbe és tovább az eep oldalra"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "{0} mentése a mester címjegyzékbe és tovább az eep oldalra"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "{0} mentése a privát címjegyzékbe és tovább az eep oldalra"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP Kimenő proxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Kattints az alábbi linkre, hogy címsegítő után nézz, \"ugrás\" szolgáltatás "
"segítségével:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Címsegítőn keresztül hozzáadva {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Címsegítőn keresztül hozzáadva"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Átirányítás ide: {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} mentése {1} címjegyzékbe, átirányítás alatt."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "{0} mentése {1} címjegyzékbe sikertelen, átirányítás alatt."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Kattints ide, amennyiben nem történt meg az automatikus átirányítás."

View File

@ -0,0 +1,454 @@
# 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
#
# Translators:
# <badcluster@i2pmail.org>, 2012.
# <bovas85@gmail.com>, 2012.
# <colomboi2p@ymail.com>, 2012.
# <jokjok@hotmail.it>, 2011.
# Tony Goodyear <fswitch20@hotmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2012-11-18 22:16+0000\n"
"Last-Translator: Tony Goodyear <fswitch20@hotmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/"
"it/)\n"
"Language: it\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Autorizzazione Outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorizzazione Outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Console del router"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Console del router"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Configurazione"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Aiuto"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Rubrica"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Destinazione locale"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Destinazione tunnel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Il tuo browse non supporta gli iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "Il proxy HTTP non è avviato"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Questa non sembra essere una buona destinazione:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2paddresshelper non ti può aiutare con una destinazione del genere!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Per visitare la destinazione nel tuo database host, cliccare <a href="
"\"{0}\">qui</a>. \n"
"Per visitare la destinazione addresshelper in conflitto, cliccare <a href="
"\"{1}\">qui</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destinazione"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Continua a {0} senza salvare"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Salva {0} nella rubrica del router e continua verso l'eepsite"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Salva {0} nella rubrica master e continua verso l'eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Salva {0} nella rubrica privata e continua verso l'eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Ourproxy HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Cliccare un link quì sotto per cercare un address helper usando un servizio "
"di \"salto\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} salta al servizio"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Aggiunto con address helper {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Aggiunto con address helper"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Redirezionamento a {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} salvato sulla rubrica {1}, in redirezionamento."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Salvataggio di {0} sulla rubrica {1} fallito, in redirezionamento."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Clicca qui se non sei redirezionato automaticamente."

View File

@ -0,0 +1,449 @@
# 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
#
# Translators:
# Mikal <mikalv@mikalv.net>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-01-29 18:12+0000\n"
"Last-Translator: mikalv <mikalv@mikalv.net>\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/I2P/"
"language/nb/)\n"
"Language: nb\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "utproxy autorisasjon"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "utproxy autorisasjon"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Ruter Konsoll"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Ruter Konsoll"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Konfigurasjon"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Hjelp"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Adressebok"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Lokal destinasjon"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Tunnel destinasjon"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Dette synes å være en dårlig destinasjon:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2paddresshelper kan ikke hjelpe deg med en destinasjon som dette!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"For å besøke destinasjonen i din vert database, klikk <a href=\"{0}\">her</"
"a>. For å å besøke motstridende adressehjelper destinasjon, klikk <a href="
"\"{1}\">her</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Vert"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destinasjon"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Fortsett til {0} uten å lagre"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Lagre {0} til ruter adressebok og fortsett til eepsite"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Save {0} til hoved adressebok og fortsett til eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Save {0} til privat adressebok og fortsett til eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP Ut-proxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Klikk på en link under for en adressehjelper ved å bruke en \"hoppe\" "
"tjeneste:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} hopp tjeneste"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Lagt til via addresse hjelper fra {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Lagt til via adresse helper"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Videresender til {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "Lagret {0} til {1} adresseboken, videresender nå."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Feilet med å lagre {0} til {1} adresseboken, videresender nå."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Klikk her hvis du ikke blir videresendt automatisk."

View File

@ -0,0 +1,447 @@
# 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\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+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"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Uitgaande Proxy Autorisatie"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Uitgaande Proxy Autorisatie"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Configuratie wijzigingen opgeslagen"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Toevoegen aan lokaal adresboek"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Lokale destination"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Tunnel Destinations"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "De HTTP proxy is niet ingeschakeld"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Tunnel Destinations"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"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:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destination"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Uitgaande proxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Klik op een onderstaande link om te zoeken naar een adreshelper via een "
"\"jump\" service:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Updaten van {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""

View File

@ -0,0 +1,453 @@
# 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
#
# Translators:
# <b790979@klzlk.com>, 2012.
# <businesshehe@yahoo.com>, 2011, 2012.
# Smert i2p <Smert@safe-mail.net>, 2013.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-02-11 21:31+0000\n"
"Last-Translator: Smert <Smert@safe-mail.net>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/"
"pl/)\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Autoryzacja Outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autoryzacja Outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Konsola Routera"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Konsola Routera"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Konfiguracja"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Pomoc"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Książka adresowa"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Cel localny"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "nazwa lub cel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Wydaje się to być złym celem:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
"i2paddresshelper, pomocnik adresowy i2p, nie może pomóc ci z takim celem!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"By odwiedzić cel w bazie danych twojego hosta, naciśnij <a href="
"\"{0}\">tutaj</a>. By odwiedzić konfliktujący cel pomocnika adresów, "
"naciśnij <a href=\"{1}\">tutaj</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Cel"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Kontynuuj do {0} bez zapisywania"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Zapisz {0} do książki adresowej rutera i kontynuuj do eepsite'u"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Zapisz {0} do głównej książki adresowej i kontynuuj do eepsite'u"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Zapisz {0} do prywatnej książki adresowej i kontynuuj do eepsite'u"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Kliknij na poniższy link by poszukać pomocnika adresów poprzez użycie "
"\"skaczącego\" serwisu."
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Dodano poprzez pomocnika adresów {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Dodano poprzez pomocnika adresów"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Przekierowywuje do {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "Zapisano {0} do książki adresowej {1}, przekierowywuje."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Nie udało sie zapisać {0} do książki adresowej {1}, przkierowywuje."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Sprawdź tutaj jeżeli nie jesteś automatycznie przekierowany."

View File

@ -0,0 +1,451 @@
# 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
#
# Translators:
# rafaelbf, 2013
# tuliouel, 2013
# wicked, 2012
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-07-04 19:15+0000\n"
"Last-Translator: tuliouel\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/"
"pt/)\n"
"Language: pt\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Autorização do proxy de saída"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Autorização do proxy de saída"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Painel do Roteador"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Painel do Roteador"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Configuração"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Ajuda"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Livro de endereços"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Destino local"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Destino do túnel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Seu navegador não suporta iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "O proxy HTTP não está alcançável"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Este destino parece estar incorreto:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "Auxiliar de endereços não pode ajudar em destinos como este!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Para visitar o destino da sua base de dados, clique <a href=\"{0}\">aqui</"
"a>. Para visitar o endereço de ajuda do conflito, clique <a href="
"\"{1}\">aqui</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Host"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Destino"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Continuar para {0} sem salvar"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Salvar {0} ao livro de endereços do roteador e continuar no eepsite"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Salvar {0} ao livro de endereços master e continuar no eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Salvar {0} no livro de endereços particular e continuar no eepsite"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Proxy de saída HTTP"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Clique no link abaixo para procurar um ajudante de endereços usando um "
"serviço \"jump\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} serviço de salto"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Adicionado pelo auxiliar de endereços de {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Adicionado pelo auxiliar de endereços"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Redirecionando para {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} salvo no livro de endereços {1}, redirecionando agora."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Falha ao salvar {0} no livro de endereços {1}, redirecionando agora."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Clique aqui se você não for redirecionado automaticamente."

View File

@ -0,0 +1,460 @@
# 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
#
# Translators:
# sfix <anon-9b36b2e@lycos.com>, 2013
# ducki2p <ducki2p@gmail.com>, 2011
# foo <foo@bar>, 2009
# gmind <grvmind@gmail.com>, 2012-2013
# gmind <grvmind@gmail.com>, 2013
# gmind <grvmind@gmail.com>, 2012
# sfix <anon-9b36b2e@lycos.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:49+0000\n"
"PO-Revision-Date: 2013-07-05 08:09+0000\n"
"Last-Translator: Roman Azarenko <x12ozmouse@ya.ru>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/"
"language/ru_RU/)\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Авторизация outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Авторизация outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Консоль маршрутизатора I2P"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Консоль маршрутизатора I2P"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Настройки"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Помощь"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Адресная книга"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Локальный адрес назначения"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Назначение туннеля"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Ваш браузер не поддерживает iFrames"
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "HTTP-прокси не поднят"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Кажется это плохой адрес назначения:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "С таким адресом назначения i2paddresshelper вам не поможет!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Для перехода по ссылке из локальной адресной книги, нажмите <a href="
"\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a "
"href=\"{1}\">здесь</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Адрес"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Base 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Адрес назначения"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Продолжить переход к {0} без сохранения"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
"Сохранить {0} в адресную книгу роутера (router address book) и продолжить "
"переход к eep-сайту"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
"Сохранить {0} в основную (master) адресную книгу и продолжить переход к eep-"
"сайту"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
"Сохранить {0} в приватную адресную книгу и продолжить переход к eep-сайту"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} jump service"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Добавлено через address helper из {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Добавлен через address helper"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Перенаправляем к {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} сохранён в {1}, перенаправляем."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Не удалось сохранить {0} в {1} адресную книгу, перенаправляем."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Нажмите сюда если автоматическое перенаправление не сработало"

View File

@ -0,0 +1,451 @@
# 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
#
# Translators:
# <i2p@robertfoss.se>, 2013.
# <i2p@robertfoss.se>, 2012.
# Martin Svensson <digitalmannen@gmail.com>, 2011-2012.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:50+0000\n"
"PO-Revision-Date: 2013-01-19 16:53+0000\n"
"Last-Translator: hottuna <i2p@robertfoss.se>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/"
"language/sv_SE/)\n"
"Language: sv_SE\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/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Tillstånd för utproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Tillstånd för utproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Router konsol "
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Router konsol "
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Konfiguration"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Hjälp"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Adressbok"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Lokalt mål"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Mål för tunnel"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "Din webbläsare stödjer inte iFrames."
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "HTTP proxyn är inte uppe"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Detta verkar vara ett felaktigt mål"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2padresshjälp kan inte hjälpa dig med ett sådant mål!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"För att besöka målet i din värd databas href=\"{0}\"> klicka <a här </ a>. "
"För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a "
"här </ a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Värd"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr "Bas 32"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Mål"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Fortsätt till {0} utan att spara"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Spara {0} till routeradressboken och fortsätt till eepsite "
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Spara {0} till huvudadressboken och fortsätt till eepsite "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "Spara {0} till privatadressbok och fortsätt till eepsite "
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "HTTP Utproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Klicka på en länk nedan för att söka efter en hjälpaddress genom att använda "
"en \"hopp\" tjänst"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr "{0} hopptjänst"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Tillagd via adresshjälpare från {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Tillagd via adresshjälpen "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Om dirigerar till {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "Spara {0} till {1}adressboken, omdirigerar nu "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Misslyckades med att spara {0} till {1}adressboken, omdirigerar nu "
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Klicka här om du inte omdirigeras automatiskt "

View File

@ -0,0 +1,451 @@
# 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
#
# Translators:
# Denis <gribua@gmail.com>, 2011.
# Denis Lysenko <gribua@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:50+0000\n"
"PO-Revision-Date: 2012-02-17 12:01+0000\n"
"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.net/projects/p/I2P/"
"language/uk_UA/)\n"
"Language: uk_UA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Авторизація outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Авторизація outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "Консоль роутера"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "Консоль роутера"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "Настройки"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "Допомога"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "Адресна книга"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Локальний адрес призначення"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "Місце призначення тунелю"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "Скоріше всього це поганий адрес призначення:"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr "i2paddresshelper не може допомогти Вам з місцем призначення як це!"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Для того щоб перейти по локальному посиланню з локальної адресної книги, "
"натисніть ось<a href=\"{0}\">тут</a>. Для переходу по новому addresshelper-"
"посиланню, натисніть будь-ласка <a href=\"{1}\">тут</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Адрес"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Адреса призначення"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "Продовжити до {0} без збереження"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "Зберегти {0} в адресну книгу роутера и продовжити перехід до eep-сайту"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "Зберегти {0} в основну адресну книгу і продовжити перехід до еер-сайту"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
"Зберегти {0} в приватну адресну книгу і продовжити перехід до еер-сайту."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Вихідний HTTP проксі"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"\"Jump\" сервіси, які, можливо, знають необхідне Вам addresshelper-посилання."
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "Додано через address helper {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "Додано через address helper"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "Перенаправляємо до {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "{0} збережено в {1} адресної книги, перенапрявляємо."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "Не вдалось зберегти {0} в {1} адресної книги, перенаправляємо."
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "Клацніть тут якщо вас не перенаправило автоматично."

View File

@ -0,0 +1,448 @@
# 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
#
# <tran.nathan@gmail.com>, 2011.
# dich_tran <tran.nathan@gmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:50+0000\n"
"PO-Revision-Date: 2011-06-11 08:42+0000\n"
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
"Language-Team: Vietnamese (http://www.transifex.net/projects/p/I2P/team/"
"vi/)\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "Cho phép Outproxy"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "Cho phép Outproxy"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr ""
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr ""
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr ""
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr ""
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr ""
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "Điểm đến nội bộ"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "tên hay điểm đến"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr ""
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr ""
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "tên hay điểm đến"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"Để truy cập vào điểm đến trong cơ sở dữ liệu máy chủ, bấm <a href="
"\"{0}\">vào đây</a>. Để truy cập vào địa chỉ giúp đỡ xung đột, bấm <a href="
"\"{1}\">vào đây</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "Máy chủ"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "Đích đến"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr ""
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "Outproxy"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"Bấm vào đường dẫn dưới đây để tìm địa chỉ giúp đỡ bằng dịch vụ \"nhảy\":"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr ""

View File

@ -0,0 +1,449 @@
# 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
#
# ducki2p <ducki2p@gmail.com>, 2011.
# <walking@i2pmail.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 18:50+0000\n"
"PO-Revision-Date: 2011-08-20 06:00+0000\n"
"Last-Translator: walking <walking@i2pmail.org>\n"
"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/I2P/team/"
"zh_CN/)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: ../java/build/Proxy.java:5
msgid "Proxy Authorization Required"
msgstr "出口代理认证"
#: ../java/build/Proxy.java:6
msgid "I2P HTTP Proxy Authorization Required"
msgstr "出口代理认证"
#: ../java/build/Proxy.java:7
msgid "This proxy is configured to require a username and password for access."
msgstr ""
#: ../java/build/Proxy.java:8
#, java-format
msgid ""
"Please enter your username and password, or check your {0}router "
"configuration{1} or {2}I2PTunnel configuration{3}."
msgstr ""
#: ../java/build/Proxy.java:9
#, java-format
msgid ""
"To disable authorization, remove the configuration {0}i2ptunnel.proxy."
"auth=basic{1}, then stop and restart the HTTP Proxy tunnel."
msgstr ""
#: ../java/build/Proxy.java:10 ../java/build/Proxy.java:16
msgid "Warning: No Outproxy Configured"
msgstr ""
#: ../java/build/Proxy.java:11 ../java/build/Proxy.java:20
#: ../java/build/Proxy.java:32 ../java/build/Proxy.java:44
#: ../java/build/Proxy.java:52 ../java/build/Proxy.java:61
#: ../java/build/Proxy.java:74 ../java/build/Proxy.java:83
#: ../java/build/Proxy.java:93 ../java/build/Proxy.java:103
#: ../java/build/Proxy.java:115
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196
msgid "Router Console"
msgstr "路由控制台"
#: ../java/build/Proxy.java:12 ../java/build/Proxy.java:21
#: ../java/build/Proxy.java:33 ../java/build/Proxy.java:45
#: ../java/build/Proxy.java:53 ../java/build/Proxy.java:62
#: ../java/build/Proxy.java:75 ../java/build/Proxy.java:84
#: ../java/build/Proxy.java:94 ../java/build/Proxy.java:104
#: ../java/build/Proxy.java:116
msgid "I2P Router Console"
msgstr "路由控制台"
#: ../java/build/Proxy.java:13 ../java/build/Proxy.java:22
#: ../java/build/Proxy.java:34 ../java/build/Proxy.java:46
#: ../java/build/Proxy.java:54 ../java/build/Proxy.java:63
#: ../java/build/Proxy.java:76 ../java/build/Proxy.java:85
#: ../java/build/Proxy.java:95 ../java/build/Proxy.java:105
#: ../java/build/Proxy.java:117
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Configuration"
msgstr "配置"
#: ../java/build/Proxy.java:14 ../java/build/Proxy.java:23
#: ../java/build/Proxy.java:35 ../java/build/Proxy.java:47
#: ../java/build/Proxy.java:55 ../java/build/Proxy.java:64
#: ../java/build/Proxy.java:77 ../java/build/Proxy.java:86
#: ../java/build/Proxy.java:96 ../java/build/Proxy.java:106
#: ../java/build/Proxy.java:118
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Help"
msgstr "帮助"
#: ../java/build/Proxy.java:15 ../java/build/Proxy.java:24
#: ../java/build/Proxy.java:36 ../java/build/Proxy.java:48
#: ../java/build/Proxy.java:56 ../java/build/Proxy.java:65
#: ../java/build/Proxy.java:78 ../java/build/Proxy.java:87
#: ../java/build/Proxy.java:97 ../java/build/Proxy.java:107
#: ../java/build/Proxy.java:119
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:197
msgid "Addressbook"
msgstr "地址簿"
#: ../java/build/Proxy.java:17
msgid ""
"Your request was for a site outside of I2P, but you have no HTTP outproxy "
"configured."
msgstr ""
#: ../java/build/Proxy.java:18
msgid "Please configure an outproxy in I2PTunnel."
msgstr ""
#: ../java/build/Proxy.java:19
msgid "Information: New Host Name"
msgstr ""
#: ../java/build/Proxy.java:25
msgid "Information: New Host Name with Address Helper"
msgstr ""
#: ../java/build/Proxy.java:26
msgid ""
"The address helper link you followed is for a new host name that is not in "
"your address book."
msgstr ""
#: ../java/build/Proxy.java:27
msgid "You may save this host name to your local address book."
msgstr ""
#: ../java/build/Proxy.java:28
msgid ""
"If you save it to your address book, you will not see this message again."
msgstr ""
#: ../java/build/Proxy.java:29
msgid ""
"If you do not save it, the host name will be forgotten after the next router "
"restart."
msgstr ""
#: ../java/build/Proxy.java:30
msgid ""
"If you do not wish to visit this host, click the \"back\" button on your "
"browser."
msgstr ""
#: ../java/build/Proxy.java:31 ../java/build/Proxy.java:37
msgid "Warning: Invalid Destination"
msgstr "本地目标"
#: ../java/build/Proxy.java:38
msgid ""
"The eepsite destination specified was not valid, or was otherwise "
"unreachable."
msgstr ""
#: ../java/build/Proxy.java:39
msgid ""
"Perhaps you pasted in the wrong Base 64 string or the link you are following "
"is bad."
msgstr ""
#: ../java/build/Proxy.java:40
msgid "The I2P host could also be offline."
msgstr ""
#: ../java/build/Proxy.java:41 ../java/build/Proxy.java:123
#, java-format
msgid "You may want to {0}retry{1}."
msgstr ""
#: ../java/build/Proxy.java:42 ../java/build/Proxy.java:72
#: ../java/build/Proxy.java:113 ../java/build/Proxy.java:124
msgid "Could not find the following destination:"
msgstr "隧道目标"
#: ../java/build/Proxy.java:43 ../java/build/Proxy.java:49
msgid "Warning: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:50
msgid "You attempted to connect to a non-I2P website or location."
msgstr ""
#: ../java/build/Proxy.java:51 ../java/build/Proxy.java:57
msgid "Warning: Invalid Request URI"
msgstr ""
#: ../java/build/Proxy.java:58
msgid "The request URI is invalid, and probably contains illegal characters."
msgstr ""
#: ../java/build/Proxy.java:59
msgid ""
"If you clicked a link, check the end of the URI for any characters the "
"browser has mistakenly added on."
msgstr ""
#: ../java/build/Proxy.java:60
msgid "Warning: Eepsite Unknown"
msgstr ""
#: ../java/build/Proxy.java:66
msgid "Warning: Eepsite Not Found in Addressbook"
msgstr ""
#: ../java/build/Proxy.java:67
msgid "The eepsite was not found in your router's addressbook."
msgstr ""
#: ../java/build/Proxy.java:68
msgid "Check the link or find a Base 32 or Base 64 address."
msgstr ""
#: ../java/build/Proxy.java:69
#, java-format
msgid "If you have the Base 64 address, {0}add it to your addressbook{1}."
msgstr ""
#: ../java/build/Proxy.java:70
msgid ""
"Otherwise, find a Base 32 or address helper link, or use a jump service link "
"below."
msgstr ""
#: ../java/build/Proxy.java:71
#, java-format
msgid ""
"Seeing this page often? See {0}the FAQ{1} for help in {2}adding some "
"subscriptions{3} to your addressbook."
msgstr ""
#: ../java/build/Proxy.java:73
msgid "Error: Request Denied"
msgstr ""
#: ../java/build/Proxy.java:79
msgid "Error: Local Access"
msgstr ""
#: ../java/build/Proxy.java:80
msgid "Your browser is misconfigured."
msgstr "您的浏览器不支持iFrame。"
#: ../java/build/Proxy.java:81
msgid ""
"Do not use the proxy to access the router console, localhost, or local LAN "
"destinations."
msgstr ""
#: ../java/build/Proxy.java:82 ../java/build/Proxy.java:88
msgid "Warning: Non-HTTP Protocol"
msgstr ""
#: ../java/build/Proxy.java:89
msgid "The request uses a bad protocol."
msgstr ""
#: ../java/build/Proxy.java:90
#, java-format
msgid "The I2P HTTP Proxy supports {0}http://{1} requests ONLY."
msgstr ""
#: ../java/build/Proxy.java:91
#, java-format
msgid ""
"Other protocols such as {0}https://{1} and {0}ftp://{1} are not allowed."
msgstr ""
#: ../java/build/Proxy.java:92 ../java/build/Proxy.java:98
msgid "Warning: Bad Address Helper"
msgstr ""
#: ../java/build/Proxy.java:99
#, java-format
msgid "The helper key in the URL ({0}i2paddresshelper={1}) is not resolvable."
msgstr ""
#: ../java/build/Proxy.java:100
msgid "It seems to be garbage data, or a mistyped Base 32 address."
msgstr ""
#: ../java/build/Proxy.java:101
msgid ""
"Check your URL to try and fix the helper key to be a valid Base 32 hostname "
"or Base 64 key."
msgstr ""
#: ../java/build/Proxy.java:102 ../java/build/Proxy.java:108
msgid "Warning: Outproxy Not Found"
msgstr ""
#: ../java/build/Proxy.java:109
msgid "The HTTP Outproxy was not found."
msgstr "HTTP代理未启动"
#: ../java/build/Proxy.java:110
msgid ""
"It is offline, there is network congestion, or your router is not yet well-"
"integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:111
#, java-format
msgid ""
"You may want to {0}retry{1} as this will randomly reselect an outproxy from "
"the pool you have defined {2}here{3} (if you have more than one configured)."
msgstr ""
#: ../java/build/Proxy.java:112
#, java-format
msgid ""
"If you continue to have trouble you may want to edit your outproxy list {0}"
"here{1}."
msgstr ""
#: ../java/build/Proxy.java:114 ../java/build/Proxy.java:120
msgid "Warning: Eepsite Unreachable"
msgstr ""
#: ../java/build/Proxy.java:121
msgid "The eepsite was not reachable."
msgstr ""
#: ../java/build/Proxy.java:122
msgid ""
"The eepsite is offline, there is network congestion, or your router is not "
"yet well-integrated with peers."
msgstr ""
#: ../java/build/Proxy.java:125 ../java/build/Proxy.java:126
msgid "Warning: Destination Key Conflict"
msgstr ""
#: ../java/build/Proxy.java:127
msgid ""
"The addresshelper link you followed specifies a different destination key "
"than a host entry in your host database."
msgstr ""
#: ../java/build/Proxy.java:128
msgid ""
"Someone could be trying to impersonate another eepsite, or people have given "
"two eepsites identical names."
msgstr ""
#: ../java/build/Proxy.java:129
msgid ""
"You can resolve the conflict by considering which key you trust, and either "
"discarding the addresshelper link, discarding the host entry from your host "
"database, or naming one of them differently."
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "This seems to be a bad destination:"
msgstr "隧道目标"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:572
msgid "i2paddresshelper cannot help you with a destination like that!"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:639
#, 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 ""
"域名冲突:要访问您本地【地址簿】中设置的目标主机(相当与IP),请点击<a href="
"\"{0}\">这里</a>。要访问【地址助手】返回的目标主机请点<a href=\"{1}\">这里</"
"a>。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1043
msgid "Host"
msgstr "主机"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1047
msgid "Base 32"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1051
msgid "Destination"
msgstr "目标"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1057
#, java-format
msgid "Continue to {0} without saving"
msgstr "继续{0},而不保存"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1062
#, java-format
msgid "Save {0} to router address book and continue to eepsite"
msgstr "保存{0}至“路由器地址簿”并访问该eepsite。"
#. only blockfile supports multiple books
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1065
#, java-format
msgid "Save {0} to master address book and continue to eepsite"
msgstr "保存{0}至“主地址簿”并访问该eepsite。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1066
#, java-format
msgid "Save {0} to private address book and continue to eepsite"
msgstr "保存{0}至“私有地址簿”并访问该eepsite。"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1180
msgid "HTTP Outproxy"
msgstr "出口代理"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1185
msgid ""
"Click a link below to look for an address helper by using a \"jump\" service:"
msgstr ""
"请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的"
"主机:"
#. Translators: parameter is a host name
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1221
#, java-format
msgid "{0} jump service"
msgstr ""
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:163
#, java-format
msgid "Added via address helper from {0}"
msgstr "已通过地址助手添加 {0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:165
msgid "Added via address helper"
msgstr "已通过地址助手添加"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
#, java-format
msgid "Redirecting to {0}"
msgstr "正在重定向至{0}"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:202
#, java-format
msgid "Saved {0} to the {1} addressbook, redirecting now."
msgstr "目标{0}已保存至{1}地址簿中,正在重定向至此目标。"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:203
#, java-format
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
msgstr "目标{0}在{1}地址簿中保存失败,,正在重定向至此目标。"
#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:205
msgid "Click here if you are not redirected automatically."
msgstr "如果未能自动重定向,请点击这里。"

View File

@ -4,7 +4,10 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/i2p_sdk"/>
<classpathentry kind="lib" path="jettylib/javax.servlet.jar"/>
<classpathentry kind="lib" path="jettylib/jetty-http.jar"/>
<classpathentry kind="lib" path="jettylib/jetty-io.jar"/>
<classpathentry kind="lib" path="jettylib/jetty-util.jar"/>
<classpathentry kind="lib" path="jettylib/jetty-xml.jar"/>
<classpathentry kind="lib" path="jettylib/org.mortbay.jetty.jar"/>
<classpathentry kind="output" path="build/obj"/>
</classpath>

View File

@ -26,7 +26,6 @@ import net.i2p.util.Log;
public class I2PSocketManagerFactory {
public static final String PROP_MANAGER = "i2p.streaming.manager";
//public static final String DEFAULT_MANAGER = "net.i2p.client.streaming.I2PSocketManagerImpl";
public static final String DEFAULT_MANAGER = "net.i2p.client.streaming.I2PSocketManagerFull";
/**
@ -47,7 +46,7 @@ public class I2PSocketManagerFactory {
*
* Blocks for a long time while the router builds tunnels.
*
* @param opts I2CP options
* @param opts Streaming and I2CP options, may be null
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(Properties opts) {
@ -60,8 +59,8 @@ public class I2PSocketManagerFactory {
*
* Blocks for a long time while the router builds tunnels.
*
* @param host I2CP host
* @param port I2CP port
* @param host I2CP host null to use default
* @param port I2CP port <= 0 to use default
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(String host, int port) {
@ -74,9 +73,9 @@ public class I2PSocketManagerFactory {
*
* Blocks for a long time while the router builds tunnels.
*
* @param i2cpHost I2CP host
* @param i2cpPort I2CP port
* @param opts I2CP options
* @param i2cpHost I2CP host null to use default
* @param i2cpPort I2CP port <= 0 to use default
* @param opts Streaming and I2CP options, may be null
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(String i2cpHost, int i2cpPort, Properties opts) {
@ -102,6 +101,7 @@ public class I2PSocketManagerFactory {
* Blocks for a long time while the router builds tunnels.
*
* @param myPrivateKeyStream private key stream, format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* or null for a transient destination. Caller must close.
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(InputStream myPrivateKeyStream) {
@ -115,7 +115,8 @@ public class I2PSocketManagerFactory {
* Blocks for a long time while the router builds tunnels.
*
* @param myPrivateKeyStream private key stream, format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @param opts I2CP options
* or null for a transient destination. Caller must close.
* @param opts Streaming and I2CP options, may be null
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(InputStream myPrivateKeyStream, Properties opts) {
@ -130,13 +131,73 @@ public class I2PSocketManagerFactory {
* Blocks for a long time while the router builds tunnels.
*
* @param myPrivateKeyStream private key stream, format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @param i2cpHost I2CP host
* @param i2cpPort I2CP port
* @param opts I2CP options
* or null for a transient destination. Caller must close.
* @param i2cpHost I2CP host null to use default
* @param i2cpPort I2CP port <= 0 to use default
* @param opts Streaming and I2CP options, may be null
* @return the newly created socket manager, or null if there were errors
*/
public static I2PSocketManager createManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort,
Properties opts) {
try {
return createManager(myPrivateKeyStream, i2cpHost, i2cpPort, opts, true);
} catch (I2PSessionException ise) {
getLog().error("Error creating session for socket manager", ise);
return null;
}
}
/**
* Create a disconnected socket manager using the destination loaded from the given private key
* stream, or null for a transient destination.
*
* Non-blocking. Does not connect to the router or build tunnels.
* For servers, caller MUST call getSession().connect() to build tunnels and start listening.
* For clients, caller may do that to build tunnels in advance;
* otherwise, the first call to connect() will initiate a connection to the router,
* with significant delay for tunnel building.
*
* @param myPrivateKeyStream private key stream, format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* or null for a transient destination. Caller must close.
* @param i2cpHost I2CP host null to use default
* @param i2cpPort I2CP port <= 0 to use default
* @param opts Streaming and I2CP options, may be null
* @return the newly created socket manager, non-null (throws on error)
* @since 0.9.8
*/
public static I2PSocketManager createDisconnectedManager(InputStream myPrivateKeyStream, String i2cpHost,
int i2cpPort, Properties opts) throws I2PSessionException {
if (myPrivateKeyStream == null) {
I2PClient client = I2PClientFactory.createClient();
ByteArrayOutputStream keyStream = new ByteArrayOutputStream(512);
try {
client.createDestination(keyStream);
} catch (Exception e) {
throw new I2PSessionException("Error creating keys", e);
}
myPrivateKeyStream = new ByteArrayInputStream(keyStream.toByteArray());
}
return createManager(myPrivateKeyStream, i2cpHost, i2cpPort, opts, false);
}
/**
* Create a socket manager using the destination loaded from the given private key
* stream and connected to the I2CP router on the specified machine on the given
* port.
*
* Blocks for a long time while the router builds tunnels if connect is true.
*
* @param myPrivateKeyStream private key stream, format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* non-null. Caller must close.
* @param i2cpHost I2CP host null to use default
* @param i2cpPort I2CP port <= 0 to use default
* @param opts Streaming and I2CP options, may be null
* @param connect true to connect (blocking)
* @return the newly created socket manager, non-null (throws on error)
* @since 0.9.7
*/
private static I2PSocketManager createManager(InputStream myPrivateKeyStream, String i2cpHost, int i2cpPort,
Properties opts, boolean connect) throws I2PSessionException {
I2PClient client = I2PClientFactory.createClient();
if (opts == null)
opts = new Properties();
@ -146,34 +207,20 @@ public class I2PSocketManagerFactory {
if (!opts.containsKey(name))
opts.setProperty(name, (String) e.getValue());
}
//boolean oldLib = DEFAULT_MANAGER.equals(opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER));
//if (oldLib && false) {
// for the old streaming lib
// opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_GUARANTEED);
//opts.setProperty("tunnels.depthInbound", "0");
//} else {
// for new streaming lib:
//opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
// as of 0.8.1 (I2CP default is BestEffort)
if (!opts.containsKey(I2PClient.PROP_RELIABILITY))
opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE);
//p.setProperty("tunnels.depthInbound", "0");
//}
// as of 0.8.1 (I2CP default is BestEffort)
if (!opts.containsKey(I2PClient.PROP_RELIABILITY))
opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE);
if (i2cpHost != null)
opts.setProperty(I2PClient.PROP_TCP_HOST, i2cpHost);
if (i2cpPort > 0)
opts.setProperty(I2PClient.PROP_TCP_PORT, "" + i2cpPort);
try {
I2PSession session = client.createSession(myPrivateKeyStream, opts);
I2PSession session = client.createSession(myPrivateKeyStream, opts);
if (connect)
session.connect();
I2PSocketManager sockMgr = createManager(session, opts, "manager");
return sockMgr;
} catch (I2PSessionException ise) {
getLog().error("Error creating session for socket manager", ise);
return null;
}
I2PSocketManager sockMgr = createManager(session, opts, "manager");
return sockMgr;
}
private static I2PSocketManager createManager(I2PSession session, Properties opts, String name) {

View File

@ -97,7 +97,7 @@
</exec>
</target>
<target name="jar1" depends="compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<target name="jar1" depends="compile, bundle-news, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.j.tr" value="" />
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class">
@ -134,7 +134,6 @@
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class" update="true" />
</target>
<target name="jarUpToDate">
<uptodate property="jar.uptodate" targetfile="build/routerconsole.jar" >
<srcfiles dir= "build/obj" includes="**/*.class" />
@ -166,6 +165,44 @@
</exec>
</target>
<target name="bundle-news" unless="no.bundle">
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
<arg value="./bundle-messages-news.sh" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
<arg value="./bundle-messages-news.sh" />
</exec>
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
<arg value="./bundle-messages-news.sh" />
</exec>
</target>
<target name="extractProxyTags">
<java classname="net.i2p.util.TranslateReader" fork="true" failonerror="true">
<classpath>
<pathelement location="../../../build/i2p.jar" />
</classpath>
<arg value="tag" />
<arg value="../../../installer/resources/initialNews/initialNews.xml" />
<arg value="build/News.java" />
</java>
</target>
<target name="poupdate-news" depends="extractProxyTags">
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-news.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-news.sh" />
<arg value="-p" />
</exec>
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
<arg value="./bundle-messages-news.sh" />
<arg value="-p" />
</exec>
</target>
<target name="listChangedFiles2" depends="warUpToDate" if="shouldListChanges2" >
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />

View File

@ -0,0 +1,110 @@
#!/bin/sh
# Update messages_xx.po and messages_xx.class files,
# from both java and jsp sources.
# Requires installed programs xgettext, msgfmt, msgmerge, and find.
#
# usage:
# bundle-messages.sh (generates the resource bundle from the .po file)
# bundle-messages.sh -p (updates the .po file from the source tags, then generates the resource bundle)
#
# zzz - public domain
#
CLASS=net.i2p.router.news.messages
TMPFILE=build/javafiles-news.txt
export TZ=UTC
RC=0
if [ "$1" = "-p" ]
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/build/News.java"
for i in ../locale-news/messages_*.po
do
# get language
LG=${i#../locale-news/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
if [ -s build/obj/net/i2p/router/news/messages_$LG.class -a \
build/obj/net/i2p/router/news/messages_$LG.class -nt $i -a \
! -s $TMPFILE ]
then
continue
fi
if [ "$POUPDATE" = "1" ]
then
echo "Updating the $i file from the tags..."
# extract strings from java and jsp files, and update messages.po files
# translate calls must be one of the forms:
# _("foo")
# _x("foo")
# intl._("foo")
# intl.title("foo")
# In a jsp, you must use a helper or handler that has the context set.
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean updater.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -L java --from-code=UTF-8 --no-location\
--keyword=_ \
-o ${i}t
if [ $? -ne 0 ]
then
echo "ERROR - xgettext failed on ${i}, not updating translations"
rm -f ${i}t
RC=1
break
fi
msgmerge -U --backup=none $i ${i}t
if [ $? -ne 0 ]
then
echo "ERROR - msgmerge failed on ${i}, not updating translations"
rm -f ${i}t
RC=1
break
fi
rm -f ${i}t
# so we don't do this again
touch $i
fi
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 "ERROR - msgfmt failed on ${i}, not updating translations"
# msgfmt leaves the class file there so the build would work the next time
find build/obj -name messages_${LG}.class -exec rm -f {} \;
RC=1
break
fi
fi
done
rm -f $TMPFILE
exit $RC

View File

@ -7,8 +7,8 @@ import java.util.Map;
import net.i2p.router.Router;
import net.i2p.router.transport.FIFOBandwidthRefiller;
import net.i2p.router.transport.TransportImpl;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.util.Addresses;
@ -17,6 +17,7 @@ import net.i2p.util.Addresses;
* Handler to deal with form submissions from the main config form and act
* upon the values.
*
* Used for both /config and /confignet
*/
public class ConfigNetHandler extends FormHandler {
private String _hostname;
@ -45,6 +46,7 @@ public class ConfigNetHandler extends FormHandler {
private String _sharePct;
private boolean _ratesOnly;
private boolean _udpDisabled;
private String _ipv6Mode;
private final Map<String, String> changes = new HashMap();
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
@ -130,6 +132,11 @@ public class ConfigNetHandler extends FormHandler {
_udpDisabled = true;
}
/** @since IPv6 */
public void setIpv6(String mode) {
_ipv6Mode = mode;
}
private void recheckReachability() {
_context.commSystem().recheckReachability();
addFormNotice(_("Rechecking router reachability..."));
@ -177,6 +184,26 @@ public class ConfigNetHandler extends FormHandler {
restartRequired = true;
}
}
if (_ipv6Mode != null) {
// take care not to set default, as it will change
String tcp6 = _context.getProperty(TransportUtil.NTCP_IPV6_CONFIG);
if (tcp6 == null)
tcp6 = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
String udp6 = _context.getProperty(TransportUtil.SSU_IPV6_CONFIG);
if (udp6 == null)
udp6 = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
boolean ch = false;
if (!_ipv6Mode.equals(tcp6)) {
changes.put(TransportUtil.NTCP_IPV6_CONFIG, _ipv6Mode);
ch = true;
}
if (!_ipv6Mode.equals(udp6)) {
changes.put(TransportUtil.SSU_IPV6_CONFIG, _ipv6Mode);
ch = true;
}
if (ch)
addFormNotice(_("Updating IPv6 setting"));
}
// NTCP Settings
// Normalize some things to make the following code a little easier...
@ -370,7 +397,8 @@ public class ConfigNetHandler extends FormHandler {
addFormError(_("Invalid address") + ": " + addr);
return false;
}
boolean rv = TransportImpl.isPubliclyRoutable(iab);
// TODO set IPv6 arg based on configuration?
boolean rv = TransportUtil.isPubliclyRoutable(iab, true);
if (!rv)
addFormError(_("The hostname or IP {0} is not publicly routable", addr));
return rv;

View File

@ -7,12 +7,15 @@ import net.i2p.data.RouterAddress;
import net.i2p.router.CommSystemFacade;
import net.i2p.router.Router;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.udp.UDPAddress;
import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.util.Addresses;
/**
*
* Used for both /config and /confignet
*/
public class ConfigNetHelper extends HelperBase {
public ConfigNetHelper() {}
/** copied from various private components */
public final static String PROP_I2NP_NTCP_HOSTNAME = "i2np.ntcp.hostname";
@ -20,6 +23,7 @@ public class ConfigNetHelper extends HelperBase {
public final static String PROP_I2NP_NTCP_AUTO_PORT = "i2np.ntcp.autoport";
public final static String PROP_I2NP_NTCP_AUTO_IP = "i2np.ntcp.autoip";
private final static String CHECKED = " checked=\"checked\" ";
public String getUdphostname() {
return _context.getProperty(UDPTransport.PROP_EXTERNAL_HOST, "");
}
@ -32,22 +36,15 @@ public class ConfigNetHelper extends HelperBase {
return _context.getProperty(PROP_I2NP_NTCP_PORT, "");
}
public String getUdpAddress() {
RouterAddress addr = _context.router().getRouterInfo().getTargetAddress("SSU");
if (addr == null)
return _("unknown");
UDPAddress ua = new UDPAddress(addr);
return ua.toString();
}
/** @return host or "unknown" */
public String getUdpIP() {
RouterAddress addr = _context.router().getRouterInfo().getTargetAddress("SSU");
if (addr == null)
return _("unknown");
UDPAddress ua = new UDPAddress(addr);
if (ua.getHost() == null)
String rv = addr.getHost();
if (rv == null)
return _("unknown");
return ua.getHost();
return rv;
}
/**
@ -160,6 +157,23 @@ public class ConfigNetHelper extends HelperBase {
return CHECKED;
}
}
/**
* Combined SSU/NTCP
* Use SSU setting, then NTCP setting, then default
* @since IPv6
*/
public String getIPv6Checked(String mode) {
String s = _context.getProperty(TransportUtil.SSU_IPV6_CONFIG);
if (s == null) {
s = _context.getProperty(TransportUtil.NTCP_IPV6_CONFIG);
if (s == null)
s = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
}
if (s.equals(mode))
return CHECKED;
return "";
}
public String[] getAddresses() {
ArrayList<String> al = new ArrayList(Addresses.getAddresses());

View File

@ -1,6 +1,9 @@
package net.i2p.router.web;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Reader;
import java.text.SimpleDateFormat;
import java.util.Date;
@ -8,6 +11,7 @@ import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.router.update.ConsoleUpdateManager;
import static net.i2p.update.UpdateType.*;
import net.i2p.util.TranslateReader;
/**
* If news file does not exist, use file from the initialNews directory
@ -138,11 +142,36 @@ public class NewsHelper extends ContentHelper {
return mgr.getStatus();
}
private static final String BUNDLE_NAME = "net.i2p.router.news.messages";
/**
* If we haven't downloaded news yet, use the translated initial news file
*/
@Override
public String getContent() {
File news = new File(_page);
if (!news.exists())
if (!news.exists()) {
_page = (new File(_context.getBaseDir(), "docs/initialNews/initialNews.xml")).getAbsolutePath();
// don't use super, translate on-the-fly
Reader reader = null;
try {
char[] buf = new char[512];
StringBuilder out = new StringBuilder(2048);
reader = new TranslateReader(_context, BUNDLE_NAME, new FileInputStream(_page));
int len;
while((len = reader.read(buf)) > 0) {
out.append(buf, 0, len);
}
return out.toString();
} catch (IOException ioe) {
return "";
} finally {
try {
if (reader != null)
reader.close();
} catch (IOException foo) {}
}
}
return super.getContent();
}

View File

@ -24,7 +24,7 @@ import net.i2p.router.RouterContext;
import net.i2p.router.RouterVersion;
import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.transport.ntcp.NTCPAddress;
import net.i2p.router.transport.TransportUtil;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.util.PortMapper;
@ -159,7 +159,8 @@ public class SummaryHelper extends HelperBase {
switch (status) {
case CommSystemFacade.STATUS_OK:
RouterAddress ra = routerInfo.getTargetAddress("NTCP");
if (ra == null || (new NTCPAddress(ra)).isPubliclyRoutable())
// TODO set IPv6 arg based on configuration?
if (ra == null || TransportUtil.isPubliclyRoutable(ra.getIP(), true))
return _("OK");
return _("ERR-Private TCP Address");
case CommSystemFacade.STATUS_DIFFERENT:

View File

@ -64,6 +64,18 @@
<input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
<%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
(<i><%=intl._("Experimental")%></i>)
</p><p>
<%=intl._("IPv6 Configuration")%>:<br>
<input type="radio" class="optbox" name="ipv6" value="false" <%=nethelper.getIPv6Checked("false") %> >
<%=intl._("Disable IPv6")%><br>
<input type="radio" class="optbox" name="ipv6" value="enable" <%=nethelper.getIPv6Checked("enable") %> >
<%=intl._("Enable IPv6")%><br>
<input type="radio" class="optbox" name="ipv6" value="preferIPv4" <%=nethelper.getIPv6Checked("preferIPv4") %> >
<%=intl._("Prefer IPv4 over IPv6")%><br>
<input type="radio" class="optbox" name="ipv6" value="preferIPv6" <%=nethelper.getIPv6Checked("preferIPv6") %> >
<%=intl._("Prefer IPv6 over IPv4")%><br>
<input type="radio" class="optbox" name="ipv6" value="only" <%=nethelper.getIPv6Checked("only") %> >
<%=intl._("Use IPv6 only (disable IPv4)")%><br>
</p><p><b><%=intl._("UDP Configuration:")%></b><br>
<%=intl._("UDP port:")%>
<input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>

View File

@ -0,0 +1,64 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2011-03-04 14:02-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: hamada@mail.i2p\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Virtaal 0.6.1\n"
msgid "Congratulations on getting I2P installed!"
msgstr ""
msgid "Welcome to I2P!"
msgstr "!I2P مرحبا بك في شبكة"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "انتظر قليلا بينما يتم ربط الإتصال بباقي أعضاء الشبكة.{0}{1}"
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "بسنما يتم الإتصال {0}بتغير بيانات سرعة الشبكة في{1} قم {2}صفحة الخيارات{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "عندما عندما تظهر عبارة \"shared clients\" على اليسار يمكنك حينها {0}زيارة{1} {2}الأسئلة الشائعة{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "IRC اتصل بخادم الدردشة الفورية على {0}localhost:6668{1} {2}#i2p-help{3} or {4}#i2p{5}."

View File

@ -0,0 +1,64 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2013-05-08 15:06+0000\n"
"Last-Translator: zeroflag <zeroflag@i2pmail.org>\n"
"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/"
"de/)\n"
"Language: de\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"
msgid "Congratulations on getting I2P installed!"
msgstr "Wir gratulieren zur erfolgreichen Installation von I2P!"
msgid "Welcome to I2P!"
msgstr "Willkommen im I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "Hab noch {0}etwas Geduld{1}, w&auml;hrend I2P startet und weitere I2P-Router findet."
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Passe bitte in der Zwischenzeit {0}deine Einstellungen zur Bandbreite{1} auf der"
"{2}Einstellungsseite{3} an!"
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr "Auch kannst Du gleich deinen Browser f&uuml;r die Nutzung von I2P einrichten."
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr "Setze in den Einstellungen zum Browser ein HTTP Proxy ein mit 127.0.0.1 (oder localhost) mit Port 4444 als Ziel."
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr "Mehr Informationen gibt es auf der {0}I2P browser proxy Setup Seite{1}."
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "Sobald auf der linken Seite eine Verbindung namens \"versch. Klienten\" aufgelistet ist, kannst Du unsere {0}{1} {2}FAQ{3} besuchen."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Verbinde deinen IRC-Klienten mit dem Server auf {0}localhost:6668{1} und schau bei uns im Kanal <a href=\"irc://127.0.0.1:6668/i2p-de\">#i2p-de</a>, {2}#i2p-help{3} oder {4}#i2p{5} vorbei!"

View File

@ -0,0 +1,63 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+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"
msgid "Congratulations on getting I2P installed!"
msgstr ""
msgid "Welcome to I2P!"
msgstr ""
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr ""
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr ""
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr ""
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr ""

View File

@ -0,0 +1,63 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2013-04-15 11:10+0000\n"
"Last-Translator: trolly <trolly@fastmail.fm>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/"
"es/)\n"
"Language: es\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"
msgid "Congratulations on getting I2P installed!"
msgstr "&iexcl;Felicidades!, has instalado el enrutador I2P con &eacute;xito."
msgid "Welcome to I2P!"
msgstr "&iexcl;Bienvenido a I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "&iexcl;Ten todav&iacute;a {0}paciencia{1} mientras I2P est&eacute; arrancando y encontrando otros enrutadores I2P!"
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Este es el momento ideal para adaptar tu {0}configuraci&oacute;n del ancho de banda{1} en la {2}p&aacute;gina de configuraci&oacute;n{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "En cuanto veas a la izquierda una conexi&oacute;n llamada \"clientes diferentes\", puedes visitar nuestros {0}{1} {2}FAQ{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "&iexcl;Con&eacute;cta tu cliente IRC con el servidor {0}localhost:6668{1} y ven a saludarnos en los canales <a href=\"irc://127.0.0.1:6668/i2p-es\">#i2p-es</a>, {2}#i2p-help{3} o {4}#i2p{5}!"

View File

@ -0,0 +1,63 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+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"
msgid "Congratulations on getting I2P installed!"
msgstr "Merci d'utiliser I2P !"
msgid "Welcome to I2P!"
msgstr "Bienvenue sur I2P !"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "Merci de {0}patienter{1} le temps qu''I2P démarre et trouve des pairs."
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Pendant ce temps, merci d''{0}adjuster vos réglages de bande passante{1} sur la page de {2}configuration{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "Une fois que vous avez une indication \"clients partagés&hellip;\" listée sur la gauche, merci de {0}jeter un œil{1} à la {2}FAQ{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Pointez votre client IRC sur {0}localhost:6668{1} et venez nous faire coucou sur {2}#i2p-help{3}, <a href=\"irc://127.0.0.1:6668/i2p-fr\">#i2p-fr</a> ou {4}#i2p{5}."

View File

@ -0,0 +1,62 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2012-08-25 19:21+0000\n"
"Last-Translator: attesor <random901@zoho.com>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/I2P/language/nl/)\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"
msgid "Congratulations on getting I2P installed!"
msgstr "Gefeliciteerd met de installatie van I2P!"
msgid "Welcome to I2P!"
msgstr "Welkom bij I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "Heb {0}wat geduld{1} terwijl I2P opstart en peers zoekt."
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Terwijl je wacht, {0}pas je bandbreedte instellingen aan{1} op de {2}configuratie pagina{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "Wanneer je een \"gedeelde clients\" destination in de linker lijst hebt, {0}lees dan aub{1} onze {2}FAQ{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Verbind je IRC client met {0}localhost:6668{1} en zeg Hallo in {2}#i2p-help{3} of {4}#i2p{5}."

View File

@ -0,0 +1,63 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2013-07-04 19:08+0000\n"
"Last-Translator: tuliouel\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/"
"pt/)\n"
"Language: pt\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"
msgid "Congratulations on getting I2P installed!"
msgstr "Parabéns, você instalou o roteador I2P com êxito!"
msgid "Welcome to I2P!"
msgstr "Bem-vindo ao I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "Seja {0}paciente{1} enquanto I2P ainda está iniciando-se e enquanto continuam sendo encontrados outros roteadores I2P!"
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Este é o momento ideal para personalizar a {0}configuração de largura de banda{1} na {2}página de configuração{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "Quando você vê uma conexão no lado esquerdo chamada \"shared clients\", você pode visitar os nossos {0}{1} {2}FAQ{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Conecte seu cliente de IRC para o servidor {0}localhost:6668{1} e vem para nos cumprimentar aos canais <a href=\"irc://127.0.0.1:6668/i2p-br\">#i2p-br</a>, {2}#i2p-help{3} ou {4}#i2p{5}!"

View File

@ -0,0 +1,64 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2013-07-05 16:26+0000\n"
"Last-Translator: Roman Azarenko <x12ozmouse@ya.ru>\n"
"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/"
"language/ru_RU/)\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
msgid "Congratulations on getting I2P installed!"
msgstr "Поздравляем с успешным завершением установки I2P!"
msgid "Welcome to I2P!"
msgstr "Добро пожаловать в I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "Немного терпения! {0}{1} I2P-маршрутизатору потребуется пара минут для запуска модулей и первого подключения к сети I2P."
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Пока Вы ждете, самое время зайти в {2}сетевые настройки{3} и {0}выставить ограничение скорости{1} в соответствии со скоростью Вашего подключения к интернету. "
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "{0}Не забудьте заглянуть{1} в наш {2}{3} <a href=\"http://www.i2p2.i2p/faq_ru.html\">FAQ</a>."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Как только в панели слева в разделе «Локальные туннели» появится запись «коллективные клиенты» — I2P готов к работе. Подключайте Ваш IRC-клиент к серверу {0}localhost:6668{1} и заходите сказать нам привет на канал {2}#i2p-help{3} и {4}#i2p{5}."

View File

@ -0,0 +1,63 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the routerconsole package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-07-13 21:46+0000\n"
"PO-Revision-Date: 2013-01-03 09:01+0000\n"
"Last-Translator: mon <mattias.ohlsson@inprose.com>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/"
"language/sv_SE/)\n"
"Language: sv_SE\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"
msgid "Congratulations on getting I2P installed!"
msgstr ""
msgid "Welcome to I2P!"
msgstr "Välkommen till I2P!"
#, java-format
msgid "Please {0}have patience{1} as I2P boots up and finds peers."
msgstr "{0}Ha tålamod{1} medan I2P startar upp och letar upp peers."
#, java-format
msgid ""
"While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}"
"configuration page{3}."
msgstr "Medan du väntar, var god {0}ställ in dina bandbreddd och port inställningar{1} på {2}konfigurations-sidan{3}."
msgid "Also you can setup your browser to use the I2P proxy to reach eepsites."
msgstr ""
msgid ""
"Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your "
"browser settings."
msgstr ""
msgid "Do not use SOCKS for this."
msgstr ""
#, java-format
msgid ""
"More information can be found on the {0}I2P browser proxy setup page{1}."
msgstr ""
#, java-format
msgid ""
"Once you have a \"shared clients\" destination listed on the left, please {0}"
"check out{1} our {2}FAQ{3}."
msgstr "När du har en \"delade klienter\" distination listad på vänster sida, {0}kika på{1} vår {2}FAQ{3}."
#, java-format
msgid ""
"Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-"
"help{3} or {4}#i2p{5}."
msgstr "Rikta din IRC-klient till {0}localhost:6668{1} och säg hej till oss på {2}#i2p-help{3} eller {4}#i2p{5}."

View File

@ -2,16 +2,20 @@ package net.i2p.client.streaming;
import net.i2p.util.Log;
/**
* Debug logging utility
* @since 0.9.7
*/
class LogUtil {
private LogUtil() {}
/**
* logs a loop when closing a resource with level WARN
* logs a loop when closing a resource with level INFO
* @param desc vararg description
* @param log logger for the class we're intersted in
*/
static void logCloseLoop(Log log, Object... desc) {
logCloseLoop(log, Log.WARN, desc);
logCloseLoop(log, Log.INFO, desc);
}
/**

View File

@ -61,6 +61,8 @@ import net.i2p.util.Log;
* <p>If the sequenceNum is 0 and the SYN is not set, this is a plain ACK
* packet that should not be ACKed</p>
*
* NOTE: All setters unsynchronized.
*
*/
class Packet {
private long _sendStreamId;
@ -209,7 +211,7 @@ class Packet {
* connection packet (where receiveStreamId is the unknown id) or
* if FLAG_NO_ACK is set.
*
* @return The highest packet sequence number received on receiveStreamId
* @return The highest packet sequence number received on receiveStreamId, or -1 if FLAG_NO_ACK
*/
public long getAckThrough() {
if (isFlagSet(FLAG_NO_ACK))
@ -217,6 +219,10 @@ class Packet {
else
return _ackThrough;
}
/**
* @param id if < 0, sets FLAG_NO_ACK
*/
public void setAckThrough(long id) {
if (id < 0)
setFlag(FLAG_NO_ACK);
@ -672,7 +678,7 @@ class Packet {
return size;
}
@Override
@Override
public String toString() {
StringBuilder str = formatAsString();
return str.toString();
@ -689,7 +695,10 @@ class Packet {
// buf.append('\t');
buf.append(' ');
buf.append(toFlagString());
buf.append(" ACK ").append(getAckThrough());
if (isFlagSet(FLAG_NO_ACK))
buf.append(" NO_ACK ");
else
buf.append(" ACK ").append(getAckThrough());
if (_nacks != null) {
buf.append(" NACK");
for (int i = 0; i < _nacks.length; i++) {

View File

@ -32,7 +32,7 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
private long _cancelledOn;
private final AtomicInteger _nackCount = new AtomicInteger(0);
private volatile boolean _retransmitted;
private SimpleTimer2.TimedEvent _resendEvent;
private volatile SimpleTimer2.TimedEvent _resendEvent;
/** not bound to a connection */
public PacketLocal(I2PAppContext ctx, Destination to) {
@ -112,6 +112,13 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
_numSends++;
_lastSend = _context.clock().now();
}
private void cancelResend() {
SimpleTimer2.TimedEvent ev = _resendEvent;
if (ev != null)
ev.cancel();
}
public void ackReceived() {
final long now = _context.clock().now();
synchronized (this) {
@ -120,15 +127,16 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
releasePayload();
notifyAll();
}
_resendEvent.cancel();
cancelResend();
}
public void cancelled() {
synchronized (this) {
_cancelledOn = _context.clock().now();
releasePayload();
notifyAll();
}
_resendEvent.cancel();
cancelResend();
if (_log.shouldLog(Log.DEBUG))
_log.debug("Cancelled! " + toString(), new Exception("cancelled"));
}

View File

@ -432,9 +432,15 @@
<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/routerconsole/java/" >
<target name="poupdate" />
<target name="poupdate-news" />
</ant>
<ant dir="apps/i2psnark/java/" target="poupdate" />
<ant dir="apps/i2ptunnel/java/" target="poupdate" />
<ant dir="apps/i2ptunnel/java/" >
<target name="poupdate" />
<target name="poupdate-proxy" />
</ant>
<ant dir="apps/susidns/src/" target="poupdate" />
<ant dir="apps/susimail/" target="poupdate" />
<ant dir="apps/desktopgui" target="poupdate" />
@ -1121,7 +1127,9 @@
<copy file="build/routerconsole.war" todir="pkg-temp/webapps/" />
<copy file="build/addressbook.war" todir="pkg-temp/webapps/" />
<!-- decapitalized the file in 0.7.8 -->
<copy file="installer/resources/countries.txt" todir="pkg-temp/geoip/" />
<copy file="installer/resources/countries.txt" todir="pkg-temp/geoip/" />
<!-- small enough to include for now -->
<copy file="installer/resources/geoipv6.dat.gz" todir="pkg-temp/geoip/" />
</target>
<target name="prepupdateRouter" depends="buildrouter, deletepkg-temp">
@ -1137,6 +1145,7 @@
<!-- GeoIP files and flag icons -->
<target name="prepgeoupdate">
<copy file="installer/resources/geoip.txt" todir="pkg-temp/geoip/" />
<copy file="installer/resources/geoipv6.dat.gz" todir="pkg-temp/geoip/" />
<copy file="installer/resources/countries.txt" todir="pkg-temp/geoip/" />
<copy todir="pkg-temp/docs/icons/flags" >
<fileset dir="installer/resources/icons/flags" />
@ -1292,11 +1301,18 @@
<!-- end custom installers -->
<!-- unit tests -->
<target name="updateTest" depends="prepupdate">
<target name="buildTest">
<ant dir="core/java/" target="jarTest" />
<copy file="core/java/build/i2ptest.jar" todir="pkg-temp/lib" />
<zip destfile="i2pupdate.zip" basedir="pkg-temp" />
<ant dir="router/java/" target="jarTest" />
<copy file="core/java/build/i2ptest.jar" todir="build" />
<copy file="router/java/build/routertest.jar" todir="build" />
</target>
<target name="prepTest" depends="prepupdate, buildTest">
<!-- overwrite i2p.jar and router.jar with the test versions -->
<copy file="build/i2ptest.jar" tofile="pkg-temp/lib/i2p.jar" overwrite="true" />
<copy file="build/routertest.jar" tofile="pkg-temp/lib/router.jar" overwrite="true" />
</target>
<target name="updateTest" depends="prepTest, zipit" />
<target name="junit.test" depends="buildProperties, jbigi" >
<ant dir="core/java/" target="junit.test" />
<ant dir="router/java/" target="junit.test" />
@ -1304,9 +1320,11 @@
</target>
<target name="scalatest.test" depends="buildProperties, jbigi" >
<ant dir="core/java/" target="scalatest.test" />
<!-- note there are no router scala tests yet -->
<ant dir="router/java/" target="scalatest.test" />
</target>
<target name="test" depends="buildProperties, jbigi" >
<!-- both junit and scala -->
<ant dir="core/java/" target="test" />
<ant dir="router/java/" target="test" />
<ant dir="apps/streaming/java/" target="test" />

View File

@ -139,13 +139,18 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
long before = System.currentTimeMillis();
doFill(aBuff.buffer);
long after = System.currentTimeMillis();
boolean shouldWait = _fullBuffers.size() > 1;
_fullBuffers.offer(aBuff);
_context.statManager().addRateData("prng.bufferFillTime", after - before, 0);
Thread.yield();
long waitTime = (after-before)*5;
if (waitTime <= 0) // somehow postman saw waitTime show up as negative
waitTime = 50;
try { Thread.sleep(waitTime); } catch (InterruptedException ie) {}
if (shouldWait) {
Thread.yield();
long waitTime = (after-before)*5;
if (waitTime <= 0) // somehow postman saw waitTime show up as negative
waitTime = 50;
else if (waitTime > 5000)
waitTime = 5000;
try { Thread.sleep(waitTime); } catch (InterruptedException ie) {}
}
}
}

View File

@ -80,12 +80,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
protected I2CPMessageReader _reader;
/** writer message queue */
protected ClientWriterRunner _writer;
/** where we pipe our messages */
protected /* FIXME final FIXME */OutputStream _out;
/**
* Used for internal connections to the router.
* If this is set, _socket, _writer, and _out will be null.
* If this is set, _socket and _writer will be null.
* @since 0.8.3
*/
protected I2CPMessageQueue _queue;
@ -94,7 +92,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
protected I2PSessionListener _sessionListener;
/** class that generates new messages */
protected I2CPMessageProducer _producer;
protected final I2CPMessageProducer _producer;
/** map of Long --> MessagePayloadMessage */
protected Map<Long, MessagePayloadMessage> _availableMessages;
@ -103,7 +101,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
protected final Object _bwReceivedLock = new Object();
protected volatile int[] _bwLimits;
protected I2PClientMessageHandlerMap _handlerMap;
protected final I2PClientMessageHandlerMap _handlerMap;
/** used to seperate things out so we can get rid of singletons */
protected final I2PAppContext _context;
@ -111,22 +109,24 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
/** monitor for waiting until a lease set has been granted */
private final Object _leaseSetWait = new Object();
/** whether the session connection has already been closed (or not yet opened) */
protected volatile boolean _closed;
/**
* @since 0.9.8
*/
protected enum State {
OPENING,
OPEN,
CLOSING,
CLOSED
}
/** whether the session connection is in the process of being closed */
protected volatile boolean _closing;
private State _state = State.CLOSED;
protected final Object _stateLock = new Object();
/** have we received the current date from the router yet? */
private volatile boolean _dateReceived;
/** lock that we wait upon, that the SetDateMessageHandler notifies */
private final Object _dateReceivedLock = new Object();
/** whether the session connection is in the process of being opened */
protected volatile boolean _opening;
/** monitor for waiting until opened */
private final Object _openingWait = new Object();
/**
* thread that we tell when new messages are available who then tells us
* to fetch them. The point of this is so that the fetch doesn't block the
@ -168,22 +168,24 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
public static final int LISTEN_PORT = 7654;
private static final int BUF_SIZE = 32*1024;
/**
* for extension by SimpleSession (no dest)
*/
protected I2PSessionImpl(I2PAppContext context, Properties options) {
this(context, options, false);
protected I2PSessionImpl(I2PAppContext context, Properties options,
I2PClientMessageHandlerMap handlerMap) {
this(context, options, handlerMap, false);
}
/**
* Basic setup of finals
* @since 0.9.7
*/
private I2PSessionImpl(I2PAppContext context, Properties options, boolean hasDest) {
private I2PSessionImpl(I2PAppContext context, Properties options,
I2PClientMessageHandlerMap handlerMap, boolean hasDest) {
_context = context;
_handlerMap = handlerMap;
_log = context.logManager().getLog(getClass());
_closed = true;
if (options == null)
options = (Properties) System.getProperties().clone();
_options = loadConfig(options);
@ -191,10 +193,14 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
_portNum = getPort();
_fastReceive = Boolean.parseBoolean(_options.getProperty(I2PClient.PROP_FAST_RECEIVE));
if (hasDest) {
_producer = new I2CPMessageProducer(context);
_availableMessages = new ConcurrentHashMap();
_myDestination = new Destination();
_privateKey = new PrivateKey();
_signingPrivateKey = new SigningPrivateKey();
} else {
_producer = null;
_availableMessages = null;
_myDestination = null;
_privateKey = null;
_signingPrivateKey = null;
@ -211,11 +217,8 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
* @throws I2PSessionException if there is a problem loading the private keys or
*/
public I2PSessionImpl(I2PAppContext context, InputStream destKeyStream, Properties options) throws I2PSessionException {
this(context, options, true);
_handlerMap = new I2PClientMessageHandlerMap(context);
_producer = new I2CPMessageProducer(context);
this(context, options, new I2PClientMessageHandlerMap(context), true);
_availabilityNotifier = new AvailabilityNotifier();
_availableMessages = new ConcurrentHashMap();
try {
readDestination(destKeyStream);
} catch (DataFormatException dfe) {
@ -306,11 +309,14 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
continue;
}
String val = options.getProperty(key);
if ((key.length() > 255) || (val.length() > 255)) {
// Long strings MUST be removed, even in router context,
// as the session config properties must be serialized to be signed.
// fixme, bytes could still be over 255 (unlikely)
if (key.length() > 255 || val.length() > 255) {
if (_log.shouldLog(Log.WARN))
_log.warn(getPrefix() + "Not passing on property ["
_log.warn("Not passing on property ["
+ key
+ "] in the session configuration as the value is too long (max = 255): "
+ "] in the session config, key or value is too long (max = 255): "
+ val);
} else {
rv.setProperty(key, val);
@ -351,17 +357,13 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
return _leaseSet;
}
void setOpening(boolean ls) {
_opening = ls;
synchronized (_openingWait) {
_openingWait.notifyAll();
protected void changeState(State state) {
synchronized (_stateLock) {
_state = state;
_stateLock.notifyAll();
}
}
boolean getOpening() {
return _opening;
}
/**
* Load up the destKeyFile for our Destination, PrivateKey, and SigningPrivateKey
*
@ -378,12 +380,41 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
* Connect to the router and establish a session. This call blocks until
* a session is granted.
*
* Should be threadsafe, other threads will block until complete.
* Disconnect / destroy from another thread may be called simultaneously and
* will (should?) interrupt the connect.
*
* @throws I2PSessionException if there is a configuration error or the router is
* not reachable
*/
public void connect() throws I2PSessionException {
setOpening(true);
_closed = false;
synchronized(_stateLock) {
boolean wasOpening = false;
boolean loop = true;
while (loop) {
switch (_state) {
case CLOSED:
if (wasOpening)
throw new I2PSessionException("connect by other thread failed");
loop = false;
break;
case OPENING:
wasOpening = true;
try {
_stateLock.wait(10*1000);
} catch (InterruptedException ie) {
throw new I2PSessionException("Interrupted", ie);
}
break;
case CLOSING:
throw new I2PSessionException("close in progress");
case OPEN:
return;
}
}
changeState(State.OPENING);
}
_availabilityNotifier.stopNotifying();
if ( (_options != null) &&
@ -392,32 +423,34 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
_log.error("I2CP guaranteed delivery mode has been removed, using best effort.");
}
boolean success = false;
long startConnect = _context.clock().now();
try {
// If we are in the router JVM, connect using the interal queue
if (_context.isRouterContext()) {
// _socket, _out, and _writer remain null
InternalClientManager mgr = _context.internalClientManager();
if (mgr == null)
throw new I2PSessionException("Router is not ready for connections");
// the following may throw an I2PSessionException
_queue = mgr.connect();
_reader = new QueuedI2CPMessageReader(_queue, this);
} else {
if (Boolean.parseBoolean(_options.getProperty(PROP_ENABLE_SSL)))
_socket = I2CPSSLSocketFactory.createSocket(_context, _hostname, _portNum);
else
_socket = new Socket(_hostname, _portNum);
// _socket.setSoTimeout(1000000); // Uhmmm we could really-really use a real timeout, and handle it.
_out = _socket.getOutputStream();
_out.write(I2PClient.PROTOCOL_BYTE);
_out.flush();
_writer = new ClientWriterRunner(_out, this);
InputStream in = new BufferedInputStream(_socket.getInputStream(), BUF_SIZE);
_reader = new I2CPMessageReader(in, this);
// protect w/ closeSocket()
synchronized(_stateLock) {
// If we are in the router JVM, connect using the interal queue
if (_context.isRouterContext()) {
// _socket and _writer remain null
InternalClientManager mgr = _context.internalClientManager();
if (mgr == null)
throw new I2PSessionException("Router is not ready for connections");
// the following may throw an I2PSessionException
_queue = mgr.connect();
_reader = new QueuedI2CPMessageReader(_queue, this);
} else {
if (Boolean.parseBoolean(_options.getProperty(PROP_ENABLE_SSL)))
_socket = I2CPSSLSocketFactory.createSocket(_context, _hostname, _portNum);
else
_socket = new Socket(_hostname, _portNum);
// _socket.setSoTimeout(1000000); // Uhmmm we could really-really use a real timeout, and handle it.
OutputStream out = _socket.getOutputStream();
out.write(I2PClient.PROTOCOL_BYTE);
out.flush();
_writer = new ClientWriterRunner(out, this);
InputStream in = new BufferedInputStream(_socket.getInputStream(), BUF_SIZE);
_reader = new I2CPMessageReader(in, this);
}
}
Thread notifier = new I2PAppThread(_availabilityNotifier, "ClientNotifier " + getPrefix(), true);
notifier.start();
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "before startReading");
_reader.startReading();
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Before getDate");
@ -426,55 +459,60 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
int waitcount = 0;
while (!_dateReceived) {
if (waitcount++ > 30) {
closeSocket();
throw new IOException("No handshake received from the router");
}
try {
synchronized (_dateReceivedLock) {
_dateReceivedLock.wait(1000);
}
} catch (InterruptedException ie) { // nop
synchronized (_dateReceivedLock) {
// InterruptedException caught below
_dateReceivedLock.wait(1000);
}
}
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After received a SetDate response");
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Before producer.connect()");
_producer.connect(this);
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After producer.connect()");
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After producer.connect()");
// wait until we have created a lease set
waitcount = 0;
while (_leaseSet == null) {
if (waitcount++ > 5*60) {
throw new IOException("No tunnels built after waiting 5 minutes. Your network connection may be down, or there is severe network congestion.");
}
synchronized (_leaseSetWait) {
// InterruptedException caught below
_leaseSetWait.wait(1000);
}
}
if (_log.shouldLog(Log.INFO)) {
long connected = _context.clock().now();
_log.info(getPrefix() + "Lease set created with inbound tunnels after "
+ (connected - startConnect)
+ "ms - ready to participate in the network!");
}
Thread notifier = new I2PAppThread(_availabilityNotifier, "ClientNotifier " + getPrefix(), true);
notifier.start();
startIdleMonitor();
startVerifyUsage();
success = true;
} catch (InterruptedException ie) {
throw new I2PSessionException("Interrupted", ie);
} catch (UnknownHostException uhe) {
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, uhe);
} catch (IOException ioe) {
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, ioe);
} finally {
if (success) {
changeState(State.OPEN);
} else {
_availabilityNotifier.stopNotifying();
synchronized(_stateLock) {
changeState(State.CLOSING);
try {
_producer.disconnect(this);
} catch (I2PSessionException ipe) {}
closeSocket();
throw new IOException("No tunnels built after waiting 5 minutes. Your network connection may be down, or there is severe network congestion.");
}
synchronized (_leaseSetWait) {
try {
_leaseSetWait.wait(1000);
} catch (InterruptedException ie) { // nop
}
}
}
long connected = _context.clock().now();
if (_log.shouldLog(Log.INFO))
_log.info(getPrefix() + "Lease set created with inbound tunnels after "
+ (connected - startConnect)
+ "ms - ready to participate in the network!");
startIdleMonitor();
startVerifyUsage();
setOpening(false);
} catch (UnknownHostException uhe) {
_closed = true;
setOpening(false);
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, uhe);
} catch (IOException ioe) {
_closed = true;
setOpening(false);
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, ioe);
}
}
@ -570,8 +608,8 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
* Needs work.
*/
protected class AvailabilityNotifier implements Runnable {
private final List _pendingIds;
private final List _pendingSizes;
private final List<Long> _pendingIds;
private final List<Integer> _pendingSizes;
private volatile boolean _alive;
public AvailabilityNotifier() {
@ -606,8 +644,8 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
}
}
if (!_pendingIds.isEmpty()) {
msgId = (Long)_pendingIds.remove(0);
size = (Integer)_pendingSizes.remove(0);
msgId = _pendingIds.remove(0);
size = _pendingSizes.remove(0);
}
}
if ( (msgId != null) && (size != null) ) {
@ -695,8 +733,15 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
/** configure the listener */
public void setSessionListener(I2PSessionListener lsnr) { _sessionListener = lsnr; }
/** has the session been closed (or not yet connected)? */
public boolean isClosed() { return _closed; }
/**
* Has the session been closed (or not yet connected)?
* False when open and during transitions. Unsynchronized.
*/
public boolean isClosed() {
synchronized (_stateLock) {
return _state == State.CLOSED;
}
}
/**
* Deliver an I2CP message to the router
@ -713,7 +758,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
if (!_queue.offer(message, MAX_SEND_WAIT))
throw new I2PSessionException("Timed out waiting while write queue was full");
} catch (InterruptedException ie) {
throw new I2PSessionException("Interrupted while write queue was full", ie);
throw new I2PSessionException("Interrupted", ie);
}
} else if (_writer == null) {
throw new I2PSessionException("Already closed");
@ -756,21 +801,16 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
/**
* Tear down the session, and do NOT reconnect.
*
* Blocks if session has not been fully started.
* Will interrupt an open in progress.
*/
public void destroySession(boolean sendDisconnect) {
while (_opening) {
synchronized (_openingWait) {
try {
_openingWait.wait(1000);
} catch (InterruptedException ie) { // nop
}
}
synchronized(_stateLock) {
if (_state == State.CLOSING || _state == State.CLOSED)
return;
changeState(State.CLOSING);
}
if (_closed) return;
if (_log.shouldLog(Log.INFO)) _log.info(getPrefix() + "Destroy the session", new Exception("DestroySession()"));
_closing = true; // we use this to prevent a race
if (sendDisconnect && _producer != null) { // only null if overridden by I2PSimpleSession
try {
_producer.disconnect(this);
@ -783,19 +823,27 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
// SimpleSession does not initialize
if (_availabilityNotifier != null)
_availabilityNotifier.stopNotifying();
_closed = true;
_closing = false;
closeSocket();
if (_sessionListener != null) _sessionListener.disconnected(this);
}
/**
* Close the socket carefully
*
* Close the socket carefully.
*/
private void closeSocket() {
synchronized(_stateLock) {
changeState(State.CLOSING);
locked_closeSocket();
changeState(State.CLOSED);
}
}
/**
* Close the socket carefully.
* Caller must change state.
*/
private void locked_closeSocket() {
if (_log.shouldLog(Log.INFO)) _log.info(getPrefix() + "Closing the socket", new Exception("closeSocket"));
_closed = true;
if (_reader != null) {
_reader.stopReading();
_reader = null;
@ -830,8 +878,15 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
disconnect();
}
/**
* Will interrupt a connect in progress.
*/
protected void disconnect() {
if (_closed || _closing) return;
synchronized(_stateLock) {
if (_state == State.CLOSING || _state == State.CLOSED)
return;
changeState(State.CLOSING);
}
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Disconnect() called", new Exception("Disconnect"));
if (shouldReconnect()) {
if (reconnect()) {
@ -842,11 +897,11 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
}
if (_log.shouldLog(Log.ERROR))
_log.error(getPrefix() + "Disconned from the router, and not trying to reconnect further. I hope you're not hoping anything else will happen");
_log.error(getPrefix() + "Disconned from the router, and not trying to reconnect");
if (_sessionListener != null) _sessionListener.disconnected(this);
_closed = true;
closeSocket();
changeState(State.CLOSED);
}
private final static int MAX_RECONNECT_DELAY = 320*1000;
@ -865,7 +920,11 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
i++;
if ( (delay > MAX_RECONNECT_DELAY) || (delay <= 0) )
delay = MAX_RECONNECT_DELAY;
try { Thread.sleep(delay); } catch (InterruptedException ie) {}
try {
Thread.sleep(delay);
} catch (InterruptedException ie) {
return false;
}
try {
connect();
@ -970,7 +1029,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
if (rv != null)
return rv;
}
if (_closed)
if (isClosed())
return null;
LookupWaiter waiter = new LookupWaiter(h);
_pendingLookups.offer(waiter);
@ -980,7 +1039,9 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
synchronized (waiter) {
waiter.wait(maxWait);
}
} catch (InterruptedException ie) {}
} catch (InterruptedException ie) {
throw new I2PSessionException("Interrupted", ie);
}
} finally {
_pendingLookups.remove(waiter);
}
@ -996,14 +1057,16 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
* @return null on failure
*/
public int[] bandwidthLimits() throws I2PSessionException {
if (_closed)
if (isClosed())
return null;
sendMessage(new GetBandwidthLimitsMessage());
try {
synchronized (_bwReceivedLock) {
_bwReceivedLock.wait(5*1000);
}
} catch (InterruptedException ie) {}
} catch (InterruptedException ie) {
throw new I2PSessionException("Interrupted", ie);
}
return _bwLimits;
}

View File

@ -44,9 +44,12 @@ class I2PSessionImpl2 extends I2PSessionImpl {
/** Don't expect any MSMs from the router for outbound traffic @since 0.8.1 */
protected boolean _noEffort;
/** for extension */
protected I2PSessionImpl2(I2PAppContext context, Properties options) {
super(context, options);
/**
* for extension by SimpleSession (no dest)
*/
protected I2PSessionImpl2(I2PAppContext context, Properties options,
I2PClientMessageHandlerMap handlerMap) {
super(context, options, handlerMap);
}
/**

View File

@ -8,6 +8,7 @@ package net.i2p.client;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Properties;
@ -37,53 +38,57 @@ class I2PSimpleSession extends I2PSessionImpl2 {
* @throws I2PSessionException if there is a problem
*/
public I2PSimpleSession(I2PAppContext context, Properties options) throws I2PSessionException {
super(context, options);
_handlerMap = new SimpleMessageHandlerMap(context);
super(context, options, new SimpleMessageHandlerMap(context));
}
/**
* Connect to the router and establish a session. This call blocks until
* a session is granted.
*
* NOT threadsafe, do not call from multiple threads.
*
* @throws I2PSessionException if there is a configuration error or the router is
* not reachable
*/
@Override
public void connect() throws I2PSessionException {
_closed = false;
changeState(State.OPENING);
boolean success = false;
try {
// If we are in the router JVM, connect using the interal queue
if (_context.isRouterContext()) {
// _socket, _out, and _writer remain null
InternalClientManager mgr = _context.internalClientManager();
if (mgr == null)
throw new I2PSessionException("Router is not ready for connections");
// the following may throw an I2PSessionException
_queue = mgr.connect();
_reader = new QueuedI2CPMessageReader(_queue, this);
} else {
if (Boolean.parseBoolean(getOptions().getProperty(PROP_ENABLE_SSL)))
_socket = I2CPSSLSocketFactory.createSocket(_context, _hostname, _portNum);
else
_socket = new Socket(_hostname, _portNum);
_out = _socket.getOutputStream();
_out.write(I2PClient.PROTOCOL_BYTE);
_out.flush();
_writer = new ClientWriterRunner(_out, this);
InputStream in = new BufferedInputStream(_socket.getInputStream(), BUF_SIZE);
_reader = new I2CPMessageReader(in, this);
// protect w/ closeSocket()
synchronized(_stateLock) {
// If we are in the router JVM, connect using the interal queue
if (_context.isRouterContext()) {
// _socket and _writer remain null
InternalClientManager mgr = _context.internalClientManager();
if (mgr == null)
throw new I2PSessionException("Router is not ready for connections");
// the following may throw an I2PSessionException
_queue = mgr.connect();
_reader = new QueuedI2CPMessageReader(_queue, this);
} else {
if (Boolean.parseBoolean(getOptions().getProperty(PROP_ENABLE_SSL)))
_socket = I2CPSSLSocketFactory.createSocket(_context, _hostname, _portNum);
else
_socket = new Socket(_hostname, _portNum);
OutputStream out = _socket.getOutputStream();
out.write(I2PClient.PROTOCOL_BYTE);
out.flush();
_writer = new ClientWriterRunner(out, this);
InputStream in = new BufferedInputStream(_socket.getInputStream(), BUF_SIZE);
_reader = new I2CPMessageReader(in, this);
}
}
// we do not receive payload messages, so we do not need an AvailabilityNotifier
// ... or an Idle timer, or a VerifyUsage
_reader.startReading();
success = true;
} catch (UnknownHostException uhe) {
_closed = true;
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, uhe);
} catch (IOException ioe) {
_closed = true;
throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, ioe);
} finally {
changeState(success ? State.OPEN : State.CLOSED);
}
}

View File

@ -0,0 +1,31 @@
package net.i2p.crypto;
/*
* free (adj.): unencumbered; not under the control of others
* No warranty of any kind, either expressed or implied.
*/
import net.i2p.data.SimpleDataStructure;
/**
* 48 byte hash
*
* @since 0.9.8
*/
public class Hash384 extends SimpleDataStructure {
public final static int HASH_LENGTH = 48;
public Hash384() {
super();
}
/** @throws IllegalArgumentException if data is not correct length (null is ok) */
public Hash384(byte data[]) {
super(data);
}
public int length() {
return HASH_LENGTH;
}
}

View File

@ -0,0 +1,31 @@
package net.i2p.crypto;
/*
* free (adj.): unencumbered; not under the control of others
* No warranty of any kind, either expressed or implied.
*/
import net.i2p.data.SimpleDataStructure;
/**
* 64 byte hash
*
* @since 0.9.8
*/
public class Hash512 extends SimpleDataStructure {
public final static int HASH_LENGTH = 64;
public Hash512() {
super();
}
/** @throws IllegalArgumentException if data is not correct length (null is ok) */
public Hash512(byte data[]) {
super(data);
}
public int length() {
return HASH_LENGTH;
}
}

View File

@ -0,0 +1,425 @@
package net.i2p.crypto;
import java.io.EOFException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.DigestInputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
import net.i2p.I2PAppContext;
import net.i2p.data.DataFormatException;
import net.i2p.data.DataHelper;
import net.i2p.data.Signature;
import net.i2p.data.SigningPrivateKey;
import net.i2p.data.SigningPublicKey;
/**
* Succesor to the ".sud" format used in TrustedUpdate.
* Format specified in http://www.i2p2.de/updates
*
* @since 0.9.8
*/
public class SU3File {
private final I2PAppContext _context;
private final Map<SigningPublicKey, String> _trustedKeys;
private final File _file;
private String _version;
private int _versionLength;
private String _signer;
private int _signerLength;
private int _contentType;
private long _contentLength;
private SigningPublicKey _signerPubkey;
private boolean _headerVerified;
private static final byte[] MAGIC = DataHelper.getUTF8("I2Psu3");
private static final int FILE_VERSION = 0;
private static final int MIN_VERSION_BYTES = 16;
private static final int VERSION_OFFSET = Signature.SIGNATURE_BYTES;
private static final int TYPE_ZIP = 0;
private static final int CONTENT_ROUTER = 0;
private static final int CONTENT_ROUTER_P200 = 1;
private static final int CONTENT_PLUGIN = 2;
private static final int CONTENT_RESEED = 3;
private static final int SIG_DSA_160 = SigType.DSA_SHA1.getCode();
/**
* Uses TrustedUpdate's default keys for verification.
*/
public SU3File(String file) {
this(new File(file));
}
/**
* Uses TrustedUpdate's default keys for verification.
*/
public SU3File(File file) {
this(file, (new TrustedUpdate()).getKeys());
}
/**
* @param trustedKeys map of pubkey to signer name, null ok if not verifying
*/
public SU3File(File file, Map<SigningPublicKey, String> trustedKeys) {
this(I2PAppContext.getGlobalContext(), file, trustedKeys);
}
/**
* @param trustedKeys map of pubkey to signer name, null ok if not verifying
*/
public SU3File(I2PAppContext context, File file, Map<SigningPublicKey, String> trustedKeys) {
_context = context;
_file = file;
_trustedKeys = trustedKeys;
}
public String getVersionString() throws IOException {
verifyHeader();
return _version;
}
public String getSignerString() throws IOException {
verifyHeader();
return _signer;
}
/**
* Throws IOE if verify vails.
*/
public void verifyHeader() throws IOException {
if (_headerVerified)
return;
InputStream in = null;
try {
in = new FileInputStream(_file);
verifyHeader(in);
} catch (DataFormatException dfe) {
IOException ioe = new IOException("foo");
ioe.initCause(dfe);
throw ioe;
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
}
}
/**
* Throws if verify vails.
*/
private void verifyHeader(InputStream in) throws IOException, DataFormatException {
byte[] magic = new byte[MAGIC.length];
DataHelper.read(in, magic);
if (!DataHelper.eq(magic, MAGIC))
throw new IOException("Not an su3 file");
skip(in, 1);
int foo = in.read();
if (foo != FILE_VERSION)
throw new IOException("bad file version");
skip(in, 1);
int sigType = in.read();
// TODO, for other known algos we must start over with a new MessageDigest
// (rewind 10 bytes)
if (sigType != SIG_DSA_160)
throw new IOException("bad sig type");
_signerLength = (int) DataHelper.readLong(in, 2);
if (_signerLength != Signature.SIGNATURE_BYTES)
throw new IOException("bad sig length");
skip(in, 1);
int _versionLength = in.read();
if (_versionLength < MIN_VERSION_BYTES)
throw new IOException("bad version length");
skip(in, 1);
int signerLen = in.read();
if (signerLen <= 0)
throw new IOException("bad signer length");
_contentLength = DataHelper.readLong(in, 8);
if (_contentLength <= 0)
throw new IOException("bad content length");
skip(in, 1);
foo = in.read();
if (foo != TYPE_ZIP)
throw new IOException("bad type");
skip(in, 1);
_contentType = in.read();
if (_contentType < CONTENT_ROUTER || _contentType > CONTENT_RESEED)
throw new IOException("bad content type");
skip(in, 12);
byte[] data = new byte[_versionLength];
int bytesRead = DataHelper.read(in, data);
if (bytesRead != _versionLength)
throw new EOFException();
int zbyte;
for (zbyte = 0; zbyte < _versionLength; zbyte++) {
if (data[zbyte] == 0x00)
break;
}
_version = new String(data, 0, zbyte, "UTF-8");
data = new byte[signerLen];
bytesRead = DataHelper.read(in, data);
if (bytesRead != signerLen)
throw new EOFException();
_signer = DataHelper.getUTF8(data);
if (_trustedKeys != null) {
for (Map.Entry<SigningPublicKey, String> e : _trustedKeys.entrySet()) {
if (e.getValue().equals(_signer)) {
_signerPubkey = e.getKey();
break;
}
}
if (_signerPubkey == null)
throw new IOException("unknown signer: " + _signer);
}
_headerVerified = true;
}
/** skip but update digest */
private static void skip(InputStream in, int cnt) throws IOException {
for (int i = 0; i < cnt; i++) {
if (in.read() < 0)
throw new EOFException();
}
}
private int getContentOffset() throws IOException {
verifyHeader();
return VERSION_OFFSET + _versionLength + _signerLength;
}
/**
* One-pass verify and extract the content.
* Recommend extracting to a temp location as the sig is not checked until
* after extraction. This will delete the file if the sig does not verify.
* Throws IOE on all format errors.
*
* @param migrateTo the output file, probably in zip format
* @return true if signature is good
*/
public boolean verifyAndMigrate(File migrateTo) throws IOException {
DigestInputStream in = null;
OutputStream out = null;
boolean rv = false;
try {
MessageDigest md = SHA1.getInstance();
in = new DigestInputStream(new BufferedInputStream(new FileInputStream(_file)), md);
if (!_headerVerified)
verifyHeader(in);
else
skip(in, getContentOffset());
if (_signerPubkey == null)
throw new IOException("unknown signer: " + _signer);
out = new FileOutputStream(migrateTo);
byte[] buf = new byte[16*1024];
long tot = 0;
while (tot < _contentLength) {
int read = in.read(buf, 0, (int) Math.min(buf.length, _contentLength - tot));
if (read < 0)
throw new EOFException();
out.write(buf, 0, read);
tot += read;
}
byte[] sha = md.digest();
in.on(false);
Signature signature = new Signature();
signature.readBytes(in);
SHA1Hash hash = new SHA1Hash(sha);
rv = _context.dsa().verifySignature(signature, hash, _signerPubkey);
} catch (DataFormatException dfe) {
IOException ioe = new IOException("foo");
ioe.initCause(dfe);
throw ioe;
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (out != null) try { out.close(); } catch (IOException ioe) {}
if (!rv)
migrateTo.delete();
}
return rv;
}
/**
* One-pass wrap and sign the content.
* Writes to the file specified in the constructor.
* Throws on all errors.
*
* @param content the input file, probably in zip format
* @param contentType 0-255, 0 for zip
* @param version 1-255 bytes when converted to UTF-8
* @param signer ID of the public key, 1-255 bytes when converted to UTF-8
*/
public void write(File content, int contentType, String version,
String signer, SigningPrivateKey privkey) throws IOException {
InputStream in = null;
DigestOutputStream out = null;
boolean ok = false;
try {
in = new BufferedInputStream(new FileInputStream(content));
MessageDigest md = SHA1.getInstance();
out = new DigestOutputStream(new BufferedOutputStream(new FileOutputStream(_file)), md);
out.write(MAGIC);
out.write((byte) 0);
out.write((byte) FILE_VERSION);
out.write((byte) 0);
out.write((byte) SIG_DSA_160);
DataHelper.writeLong(out, 2, Signature.SIGNATURE_BYTES);
out.write((byte) 0);
byte[] verBytes = DataHelper.getUTF8(version);
if (verBytes.length == 0 || verBytes.length > 255)
throw new IllegalArgumentException("bad version length");
int verLen = Math.max(verBytes.length, MIN_VERSION_BYTES);
out.write((byte) verLen);
out.write((byte) 0);
byte[] signerBytes = DataHelper.getUTF8(signer);
if (signerBytes.length == 0 || signerBytes.length > 255)
throw new IllegalArgumentException("bad signer length");
out.write((byte) signerBytes.length);
long contentLength = content.length();
if (contentLength <= 0)
throw new IllegalArgumentException("No content");
DataHelper.writeLong(out, 8, contentLength);
out.write((byte) 0);
out.write((byte) TYPE_ZIP);
out.write((byte) 0);
if (contentType < 0 || contentType > 255)
throw new IllegalArgumentException("bad content type");
out.write((byte) contentType);
out.write(new byte[12]);
out.write(verBytes);
if (verBytes.length < MIN_VERSION_BYTES)
out.write(new byte[MIN_VERSION_BYTES - verBytes.length]);
out.write(signerBytes);
byte[] buf = new byte[16*1024];
long tot = 0;
while (tot < contentLength) {
int read = in.read(buf, 0, (int) Math.min(buf.length, contentLength - tot));
if (read < 0)
throw new EOFException();
out.write(buf, 0, read);
tot += read;
}
byte[] sha = md.digest();
out.on(false);
SHA1Hash hash = new SHA1Hash(sha);
Signature signature = _context.dsa().sign(hash, privkey);
signature.writeBytes(out);
ok = true;
} catch (DataFormatException dfe) {
IOException ioe = new IOException("foo");
ioe.initCause(dfe);
throw ioe;
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (out != null) try { out.close(); } catch (IOException ioe) {}
if (!ok)
_file.delete();
}
}
/**
* Parses command line arguments when this class is used from the command
* line.
* Exits 1 on failure so this can be used in scripts.
*
* @param args Command line parameters.
*/
public static void main(String[] args) {
boolean ok = false;
try {
if ("showversion".equals(args[0])) {
ok = showVersionCLI(args[1]);
} else if ("sign".equals(args[0])) {
ok = signCLI(args[1], args[2], args[3], args[4], args[5]);
} else if ("verifysig".equals(args[0])) {
ok = verifySigCLI(args[1]);
} else {
showUsageCLI();
}
} catch (ArrayIndexOutOfBoundsException aioobe) {
showUsageCLI();
}
if (!ok)
System.exit(1);
}
private static final void showUsageCLI() {
System.err.println("Usage: SU3File showversion signedFile.su3");
System.err.println(" SU3File sign inputFile.zip signedFile.su3 privateKeyFile version signerName@mail.i2p");
System.err.println(" SU3File verifysig signedFile.su3");
}
/** @return success */
private static final boolean showVersionCLI(String signedFile) {
try {
SU3File file = new SU3File(new File(signedFile), null);
String versionString = file.getVersionString();
if (versionString.equals(""))
System.out.println("No version string found in file '" + signedFile + "'");
else
System.out.println("Version: " + versionString);
return !versionString.equals("");
} catch (IOException ioe) {
ioe.printStackTrace();
return false;
}
}
/** @return success */
private static final boolean signCLI(String inputFile, String signedFile, String privateKeyFile,
String version, String signerName) {
InputStream in = null;
try {
in = new FileInputStream(privateKeyFile);
SigningPrivateKey spk = new SigningPrivateKey();
spk.readBytes(in);
in.close();
SU3File file = new SU3File(signedFile);
file.write(new File(inputFile), CONTENT_ROUTER, version, signerName, spk);
System.out.println("Input file '" + inputFile + "' signed and written to '" + signedFile + "'");
return true;
} catch (DataFormatException dfe) {
System.out.println("Error signing input file '" + inputFile + "'");
dfe.printStackTrace();
return false;
} catch (IOException ioe) {
System.out.println("Error signing input file '" + inputFile + "'");
ioe.printStackTrace();
return false;
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
}
}
/** @return valid */
private static final boolean verifySigCLI(String signedFile) {
InputStream in = null;
try {
SU3File file = new SU3File(signedFile);
boolean isValidSignature = file.verifyAndMigrate(new File("/dev/null"));
if (isValidSignature)
System.out.println("Signature VALID (signed by " + file.getSignerString() + ')');
else
System.out.println("Signature INVALID (signed by " + file.getSignerString() + ')');
return isValidSignature;
} catch (IOException ioe) {
System.out.println("Error verifying input file '" + signedFile + "'");
ioe.printStackTrace();
return false;
}
}
}

View File

@ -0,0 +1,91 @@
package net.i2p.crypto;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
/**
* Defines the properties for various signature types
* that I2P supports or may someday support.
*
* @since 0.9.8
*/
public enum SigType {
/**
* DSA_SHA1 is the default.
* Pubkey 128 bytes; privkey 20 bytes; hash 20 bytes; sig 40 bytes
* @since 0.9.8
*/
DSA_SHA1(0, 128, 20, 20, 40, "SHA-1", "SHA1withDSA"),
/** Pubkey 40 bytes; privkey 20 bytes; hash 20 bytes; sig 40 bytes */
ECDSA_SHA1(1, 40, 20, 20, 40, "SHA-1", "SHA1withECDSA"),
/** Pubkey 64 bytes; privkey 32 bytes; hash 32 bytes; sig 64 bytes */
ECDSA_SHA256(2, 64, 32, 32, 64, "SHA-256", "SHA256withECDSA"),
/** Pubkey 96 bytes; privkey 48 bytes; hash 48 bytes; sig 96 bytes */
ECDSA_SHA384(3, 96, 48, 48, 96, "SHA-384", "SHA384withECDSA"),
/** Pubkey 128 bytes; privkey 64 bytes; hash 64 bytes; sig 128 bytes */
ECDSA_SHA512(4, 128, 64, 64, 128, "SHA-512", "SHA512withECDSA")
//MD5
//ELGAMAL_SHA256
//RSA_SHA1
//RSA_SHA256
//RSA_SHA384
//RSA_SHA512
//DSA_2048_224(2, 256, 28, 32, 56, "SHA-256"),
// Nonstandard, used by Syndie.
// Pubkey 128 bytes; privkey 20 bytes; hash 32 bytes; sig 40 bytes
//DSA_1024_160_SHA256(1, 128, 20, 32, 40, "SHA-256", "?"),
// Pubkey 256 bytes; privkey 32 bytes; hash 32 bytes; sig 64 bytes
//DSA_2048_256(2, 256, 32, 32, 64, "SHA-256", "?"),
// Pubkey 384 bytes; privkey 32 bytes; hash 32 bytes; sig 64 bytes
//DSA_3072_256(3, 384, 32, 32, 64, "SHA-256", "?"),
;
private final int code, pubkeyLen, privkeyLen, hashLen, sigLen;
private final String digestName, algoName;
SigType(int cod, int pubLen, int privLen, int hLen, int sLen, String mdName, String aName) {
code = cod;
pubkeyLen = pubLen;
privkeyLen = privLen;
hashLen = hLen;
sigLen = sLen;
digestName = mdName;
algoName = aName;
}
public int getCode() { return code; }
public int getPubkeyLen() { return pubkeyLen; }
public int getPrivkeyLen() { return privkeyLen; }
public int getHashLen() { return hashLen; }
public int getSigLen() { return sigLen; }
public String getAlgorithmName() { return algoName; }
/** @throws UnsupportedOperationException if not supported */
public MessageDigest getDigestInstance() {
if (digestName.equals("SHA-1"))
return SHA1.getInstance();
if (digestName.equals("SHA-256"))
return SHA256Generator.getDigestInstance();
try {
return MessageDigest.getInstance(digestName);
} catch (NoSuchAlgorithmException e) {
throw new UnsupportedOperationException(e);
}
}
private static final Map<Integer, SigType> BY_CODE = new HashMap<Integer, SigType>();
static {
for (SigType type : SigType.values()) {
BY_CODE.put(Integer.valueOf(type.getCode()), type);
}
}
/** @return null if not supported */
public static SigType getByCode(int code) {
return BY_CODE.get(Integer.valueOf(code));
}
}

View File

@ -8,6 +8,7 @@ import java.io.InputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.io.UnsupportedEncodingException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
@ -209,6 +210,13 @@ riCe6OlAEiNpcc6mMyIYYWFICbrDFTrDR3wXqwc/Jkcx6L5VVWoagpSzbo3yGhc=
_log.debug("TrustedUpdate created, trusting " + _trustedKeys.size() + " keys.");
}
/**
* @since 0.9.8
*/
Map<SigningPublicKey, String> getKeys() {
return Collections.unmodifiableMap(_trustedKeys);
}
/**
* Duplicate keys or names rejected,
* except that duplicate empty names are allowed

View File

@ -13,6 +13,13 @@ package net.i2p.data;
* Defines an end point in the I2P network. The Destination may move around
* in the network, but messages sent to the Destination will find it
*
* Note that the public (encryption) key is essentially unused, since
* "end-to-end" encryption was removed in 0.6. The public key in the
* LeaseSet is used instead.
*
* The first bytes of the public key are used for the IV for leaseset encryption,
* but that encryption is poorly designed and should be deprecated.
*
* @author jrandom
*/
public class Destination extends KeysAndCert {

View File

@ -31,6 +31,10 @@ import net.i2p.util.RandomSource;
* Only the gateways and tunnel IDs in the individual
* leases are encrypted.
*
* WARNING:
* Encryption is poorly designed and probably insecure.
* Not recommended.
*
* Encrypted leases are not indicated as such.
* The only way to tell a lease is encrypted is to
* determine that the listed gateways do not exist.

View File

@ -38,7 +38,7 @@ import net.i2p.util.OrderedProperties;
* @author jrandom
*/
public class RouterAddress extends DataStructureImpl {
private int _cost;
private short _cost;
//private Date _expiration;
private String _transportStyle;
private final Properties _options;
@ -50,16 +50,30 @@ public class RouterAddress extends DataStructureImpl {
public static final String PROP_PORT = "port";
public RouterAddress() {
_cost = -1;
_options = new OrderedProperties();
}
/**
* For efficiency when created by a Transport.
* @param options not copied; do not reuse or modify
* @param cost 0-255
* @since IPv6
*/
public RouterAddress(String style, OrderedProperties options, int cost) {
_transportStyle = style;
_options = options;
if (cost < 0 || cost > 255)
throw new IllegalArgumentException();
_cost = (short) cost;
}
/**
* Retrieve the weighted cost of this address, relative to other methods of
* contacting this router. The value 0 means free and 255 means really expensive.
* No value above 255 is allowed.
*
* Unused before 0.7.12
* @return 0-255
*/
public int getCost() {
return _cost;
@ -67,12 +81,18 @@ public class RouterAddress extends DataStructureImpl {
/**
* Configure the weighted cost of using the address.
* No value above 255 is allowed.
* No value negative or above 255 is allowed.
*
* WARNING - do not change cost on a published address or it will break the RI sig.
* There is no check here.
* Rarely used, use 3-arg constructor.
*
* NTCP is set to 10 and SSU to 5 by default, unused before 0.7.12
*/
public void setCost(int cost) {
_cost = cost;
if (cost < 0 || cost > 255)
throw new IllegalArgumentException();
_cost = (short) cost;
}
/**
@ -113,6 +133,7 @@ public class RouterAddress extends DataStructureImpl {
* Configure the type of transport that must be used to communicate on this address
*
* @throws IllegalStateException if was already set
* @deprecated unused, use 3-arg constructor
*/
public void setTransportStyle(String transportStyle) {
if (_transportStyle != null)
@ -152,6 +173,7 @@ public class RouterAddress extends DataStructureImpl {
* Makes a copy.
* @param options non-null
* @throws IllegalStateException if was already set
* @deprecated unused, use 3-arg constructor
*/
public void setOptions(Properties options) {
if (!_options.isEmpty())
@ -171,7 +193,7 @@ public class RouterAddress extends DataStructureImpl {
if (_ip != null)
return _ip;
byte[] rv = null;
String host = _options.getProperty(PROP_HOST);
String host = getHost();
if (host != null) {
rv = Addresses.getIP(host);
if (rv != null &&
@ -183,6 +205,17 @@ public class RouterAddress extends DataStructureImpl {
return rv;
}
/**
* Convenience, same as getOption("host").
* Does no parsing, so faster than getIP().
*
* @return host string or null
* @since IPv6
*/
public String getHost() {
return _options.getProperty(PROP_HOST);
}
/**
* Caching version of Integer.parseInt(getOption("port"))
* Caches valid ports 1-65535 only.
@ -212,7 +245,7 @@ public class RouterAddress extends DataStructureImpl {
public void readBytes(InputStream in) throws DataFormatException, IOException {
if (_transportStyle != null)
throw new IllegalStateException();
_cost = (int) DataHelper.readLong(in, 1);
_cost = (short) DataHelper.readLong(in, 1);
//_expiration = DataHelper.readDate(in);
DataHelper.readDate(in);
_transportStyle = DataHelper.readString(in);
@ -229,8 +262,8 @@ public class RouterAddress extends DataStructureImpl {
* readin and the signature will fail.
*/
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
if ((_cost < 0) || (_transportStyle == null))
throw new DataFormatException("Not enough data to write a router address");
if (_transportStyle == null)
throw new DataFormatException("uninitialized");
DataHelper.writeLong(out, 1, _cost);
//DataHelper.writeDate(out, _expiration);
DataHelper.writeDate(out, null);
@ -238,28 +271,44 @@ public class RouterAddress extends DataStructureImpl {
DataHelper.writeProperties(out, _options);
}
/**
* Transport, host, and port only.
* Never look at cost or other properties.
*/
@Override
public boolean equals(Object object) {
if (object == this) return true;
if ((object == null) || !(object instanceof RouterAddress)) return false;
RouterAddress addr = (RouterAddress) object;
// let's keep this fast as we are putting an address into the RouterInfo set frequently
return
_cost == addr._cost &&
getPort() == addr.getPort() &&
DataHelper.eq(getHost(), addr.getHost()) &&
DataHelper.eq(_transportStyle, addr._transportStyle);
//DataHelper.eq(_options, addr._options) &&
//DataHelper.eq(_expiration, addr._expiration);
}
/**
* Everything, including Transport, host, port, options, and cost
* @param addr may be null
* @since IPv6
*/
public boolean deepEquals(RouterAddress addr) {
return
equals(addr) &&
_cost == addr._cost &&
_options.equals(addr._options);
}
/**
* Just use a few items for speed (expiration is always null).
* Never look at cost or other properties.
*/
@Override
public int hashCode() {
return DataHelper.hashCode(_transportStyle) ^
DataHelper.hashCode(getIP()) ^
getPort() ^
_cost;
getPort();
}
/**
@ -271,10 +320,10 @@ public class RouterAddress extends DataStructureImpl {
public String toString() {
StringBuilder buf = new StringBuilder(128);
buf.append("[RouterAddress: ");
buf.append("\n\tTransportStyle: ").append(_transportStyle);
buf.append("\n\tType: ").append(_transportStyle);
buf.append("\n\tCost: ").append(_cost);
//buf.append("\n\tExpiration: ").append(_expiration);
buf.append("\n\tOptions: #: ").append(_options.size());
buf.append("\n\tOptions (").append(_options.size()).append("):");
for (Map.Entry e : _options.entrySet()) {
String key = (String) e.getKey();
String val = (String) e.getValue();

View File

@ -61,7 +61,7 @@ public class RouterInfo extends DatabaseEntry {
private final Properties _options;
private volatile boolean _validated;
private volatile boolean _isValid;
private volatile String _stringified;
//private volatile String _stringified;
private volatile byte _byteified[];
private volatile int _hashCode;
private volatile boolean _hashCodeInitialized;
@ -613,30 +613,34 @@ public class RouterInfo extends DatabaseEntry {
@Override
public String toString() {
if (_stringified != null) return _stringified;
StringBuilder buf = new StringBuilder(5*1024);
//if (_stringified != null) return _stringified;
StringBuilder buf = new StringBuilder(1024);
buf.append("[RouterInfo: ");
buf.append("\n\tIdentity: ").append(_identity);
buf.append("\n\tSignature: ").append(_signature);
buf.append("\n\tPublished on: ").append(new Date(_published));
buf.append("\n\tAddresses: #: ").append(_addresses.size());
for (RouterAddress addr : _addresses) {
buf.append("\n\t\tAddress: ").append(addr);
buf.append("\n\tPublished: ").append(new Date(_published));
if (_peers != null) {
buf.append("\n\tPeers (").append(_peers.size()).append("):");
for (Hash hash : _peers) {
buf.append("\n\t\tPeer hash: ").append(hash);
}
}
Set<Hash> peers = getPeers();
buf.append("\n\tPeers: #: ").append(peers.size());
for (Hash hash : peers) {
buf.append("\n\t\tPeer hash: ").append(hash);
}
buf.append("\n\tOptions: #: ").append(_options.size());
buf.append("\n\tOptions (").append(_options.size()).append("):");
for (Map.Entry e : _options.entrySet()) {
String key = (String) e.getKey();
String val = (String) e.getValue();
buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
}
if (!_addresses.isEmpty()) {
buf.append("\n\tAddresses (").append(_addresses.size()).append("):");
for (RouterAddress addr : _addresses) {
buf.append("\n\t").append(addr);
}
}
buf.append("]");
_stringified = buf.toString();
return _stringified;
String rv = buf.toString();
//_stringified = rv;
return rv;
}
/**

View File

@ -9,6 +9,8 @@ package net.i2p.data;
*
*/
import net.i2p.crypto.SigType;
/**
* Defines the signature as defined by the I2P data structure spec.
* A signature is a 40-byte array verifying the authenticity of some data
@ -20,19 +22,47 @@ package net.i2p.data;
* @author jrandom
*/
public class Signature extends SimpleDataStructure {
public final static int SIGNATURE_BYTES = 40;
private static final SigType DEF_TYPE = SigType.DSA_SHA1;
/** 40 */
public final static int SIGNATURE_BYTES = DEF_TYPE.getSigLen();
/** all zeros */
public final static byte[] FAKE_SIGNATURE = new byte[SIGNATURE_BYTES];
private final SigType _type;
public Signature() {
this(DEF_TYPE);
}
/**
* @since 0.9.8
*/
public Signature(SigType type) {
super();
_type = type;
}
public Signature(byte data[]) {
super(data);
this(DEF_TYPE, data);
}
/**
* @since 0.9.8
*/
public Signature(SigType type, byte data[]) {
super();
_type = type;
setData(data);
}
public int length() {
return SIGNATURE_BYTES;
return _type.getSigLen();
}
/**
* @since 0.9.8
*/
public SigType getType() {
return _type;
}
}

View File

@ -10,6 +10,7 @@ package net.i2p.data;
*/
import net.i2p.crypto.KeyGenerator;
import net.i2p.crypto.SigType;
/**
* Defines the SigningPrivateKey as defined by the I2P data structure spec.
@ -20,14 +21,34 @@ import net.i2p.crypto.KeyGenerator;
* @author jrandom
*/
public class SigningPrivateKey extends SimpleDataStructure {
public final static int KEYSIZE_BYTES = 20;
private static final SigType DEF_TYPE = SigType.DSA_SHA1;
public final static int KEYSIZE_BYTES = DEF_TYPE.getPrivkeyLen();
private final SigType _type;
public SigningPrivateKey() {
this(DEF_TYPE);
}
/**
* @since 0.9.8
*/
public SigningPrivateKey(SigType type) {
super();
_type = type;
}
public SigningPrivateKey(byte data[]) {
super(data);
this(DEF_TYPE, data);
}
/**
* @since 0.9.8
*/
public SigningPrivateKey(SigType type, byte data[]) {
super();
_type = type;
setData(data);
}
/** constructs from base64
@ -35,12 +56,20 @@ public class SigningPrivateKey extends SimpleDataStructure {
* on a prior instance of SigningPrivateKey
*/
public SigningPrivateKey(String base64Data) throws DataFormatException {
super();
this();
fromBase64(base64Data);
}
public int length() {
return KEYSIZE_BYTES;
return _type.getPrivkeyLen();
}
/**
* @since 0.9.8
*/
public SigType getType() {
return _type;
}
/** converts this signing private key to its public equivalent

View File

@ -12,6 +12,8 @@ package net.i2p.data;
import java.io.InputStream;
import java.io.IOException;
import net.i2p.crypto.SigType;
/**
* Defines the SigningPublicKey as defined by the I2P data structure spec.
* A signing public key is 128 byte Integer. The public key represents only the
@ -21,11 +23,14 @@ import java.io.IOException;
* @author jrandom
*/
public class SigningPublicKey extends SimpleDataStructure {
public final static int KEYSIZE_BYTES = 128;
private static final SigType DEF_TYPE = SigType.DSA_SHA1;
public final static int KEYSIZE_BYTES = DEF_TYPE.getPubkeyLen();
private static final int CACHE_SIZE = 1024;
private static final SDSCache<SigningPublicKey> _cache = new SDSCache(SigningPublicKey.class, KEYSIZE_BYTES, CACHE_SIZE);
private final SigType _type;
/**
* Pull from cache or return new
* @throws AIOOBE if not enough bytes
@ -44,11 +49,28 @@ public class SigningPublicKey extends SimpleDataStructure {
}
public SigningPublicKey() {
this(DEF_TYPE);
}
/**
* @since 0.9.8
*/
public SigningPublicKey(SigType type) {
super();
_type = type;
}
public SigningPublicKey(byte data[]) {
super(data);
this(DEF_TYPE, data);
}
/**
* @since 0.9.8
*/
public SigningPublicKey(SigType type, byte data[]) {
super();
_type = type;
setData(data);
}
/** constructs from base64
@ -56,11 +78,18 @@ public class SigningPublicKey extends SimpleDataStructure {
* on a prior instance of SigningPublicKey
*/
public SigningPublicKey(String base64Data) throws DataFormatException {
super();
this();
fromBase64(base64Data);
}
public int length() {
return KEYSIZE_BYTES;
return _type.getPubkeyLen();
}
/**
* @since 0.9.8
*/
public SigType getType() {
return _type;
}
}

View File

@ -31,17 +31,13 @@ import net.i2p.crypto.SHA256Generator;
*/
public abstract class SimpleDataStructure extends DataStructureImpl {
protected byte[] _data;
/** this is just to avoid lots of calls to length() */
protected final int _length;
/** A new instance with the data set to null. Call readBytes(), setData(), or fromByteArray() after this to set the data */
public SimpleDataStructure() {
_length = length();
}
/** @throws IllegalArgumentException if data is not the legal number of bytes (but null is ok) */
public SimpleDataStructure(byte data[]) {
_length = length();
setData(data);
}
@ -68,8 +64,8 @@ public abstract class SimpleDataStructure extends DataStructureImpl {
public void setData(byte[] data) {
if (_data != null)
throw new RuntimeException("Data already set");
if (data != null && data.length != _length)
throw new IllegalArgumentException("Bad data length: " + data.length + "; required: " + _length);
if (data != null && data.length != length())
throw new IllegalArgumentException("Bad data length: " + data.length + "; required: " + length());
_data = data;
}
@ -81,9 +77,10 @@ public abstract class SimpleDataStructure extends DataStructureImpl {
public void readBytes(InputStream in) throws DataFormatException, IOException {
if (_data != null)
throw new RuntimeException("Data already set");
_data = new byte[_length];
int length = length();
_data = new byte[length];
int read = read(in, _data);
if (read != _length) throw new DataFormatException("Not enough bytes to read the data");
if (read != length) throw new DataFormatException("Not enough bytes to read the data");
}
public void writeBytes(OutputStream out) throws DataFormatException, IOException {
@ -109,8 +106,8 @@ public abstract class SimpleDataStructure extends DataStructureImpl {
byte[] d = Base64.decode(data);
if (d == null)
throw new DataFormatException("Bad Base64 encoded data");
if (d.length != _length)
throw new DataFormatException("Bad decoded data length, expected " + _length + " got " + d.length);
if (d.length != length())
throw new DataFormatException("Bad decoded data length, expected " + length() + " got " + d.length);
// call setData() instead of _data = data in case overridden
setData(d);
}
@ -141,8 +138,8 @@ public abstract class SimpleDataStructure extends DataStructureImpl {
@Override
public void fromByteArray(byte data[]) throws DataFormatException {
if (data == null) throw new DataFormatException("Null data passed in");
if (data.length != _length)
throw new DataFormatException("Bad data length: " + data.length + "; required: " + _length);
if (data.length != length())
throw new DataFormatException("Bad data length: " + data.length + "; required: " + length());
// call setData() instead of _data = data in case overridden
setData(data);
}
@ -151,12 +148,13 @@ public abstract class SimpleDataStructure extends DataStructureImpl {
public String toString() {
StringBuilder buf = new StringBuilder(64);
buf.append('[').append(getClass().getSimpleName()).append(": ");
int length = length();
if (_data == null) {
buf.append("null");
} else if (_length <= 32) {
} else if (length <= 32) {
buf.append(toBase64());
} else {
buf.append("size: ").append(Integer.toString(_length));
buf.append("size: ").append(Integer.toString(length));
}
buf.append(']');
return buf.toString();

View File

@ -34,7 +34,7 @@ public abstract class Addresses {
return !getAddresses(true, false, false).isEmpty();
}
/** @return the first non-local address it finds, or null */
/** @return the first non-local address IPv4 address it finds, or null */
public static String getAnyAddress() {
SortedSet<String> a = getAddresses();
if (!a.isEmpty())
@ -95,7 +95,7 @@ public abstract class Addresses {
haveIPv6 = true;
if (shouldInclude(allMyIps[i], includeSiteLocal,
includeLoopbackAndWildcard, includeIPv6))
rv.add(allMyIps[i].getHostAddress());
rv.add(stripScope(allMyIps[i].getHostAddress()));
}
}
} catch (UnknownHostException e) {}
@ -113,7 +113,7 @@ public abstract class Addresses {
haveIPv6 = true;
if (shouldInclude(addr, includeSiteLocal,
includeLoopbackAndWildcard, includeIPv6))
rv.add(addr.getHostAddress());
rv.add(stripScope(addr.getHostAddress()));
}
}
}
@ -128,6 +128,17 @@ public abstract class Addresses {
return rv;
}
/**
* Strip the trailing "%nn" from Inet6Address.getHostAddress()
* @since IPv6
*/
private static String stripScope(String ip) {
int pct = ip.indexOf("%");
if (pct > 0)
ip = ip.substring(0, pct);
return ip;
}
private static boolean shouldInclude(InetAddress ia, boolean includeSiteLocal,
boolean includeLoopbackAndWildcard, boolean includeIPv6) {
return
@ -137,7 +148,10 @@ public abstract class Addresses {
((!ia.isAnyLocalAddress()) &&
(!ia.isLoopbackAddress()))) &&
(includeSiteLocal ||
!ia.isSiteLocalAddress()) &&
((!ia.isSiteLocalAddress()) &&
// disallow fc00::/8 and fd00::/8 (Unique local addresses RFC 4193)
// not recognized as local by InetAddress
(ia.getAddress().length != 16 || (ia.getAddress()[0] & 0xfe) != 0xfc))) &&
// Hamachi 5/8 allocated to RIPE (30 November 2010)
// Removed from TransportImpl.isPubliclyRoutable()
// Check moved to here, for now, but will eventually need to

View File

@ -262,27 +262,23 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
}
}
/*****
/**
* Outputs to stdout for dieharder:
* <code>
* java -cp build/i2p.jar net.i2p.util.FortunaRandomSource | dieharder -a -g 200
* </code>
*/
public static void main(String args[]) {
try {
RandomSource rand = I2PAppContext.getGlobalContext().random();
if (true) {
for (int i = 0; i < 1000; i++)
if (rand.nextFloat() < 0)
throw new RuntimeException("negative!");
System.out.println("All positive");
return;
java.util.Properties props = new java.util.Properties();
props.setProperty("prng.buffers", "12");
I2PAppContext ctx = new I2PAppContext(props);
RandomSource rand = ctx.random();
byte[] buf = new byte[65536];
while (true) {
rand.nextBytes(buf);
System.out.write(buf);
}
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
java.util.zip.GZIPOutputStream gos = new java.util.zip.GZIPOutputStream(baos);
for (int i = 0; i < 1024*1024; i++) {
int c = rand.nextInt(256);
gos.write((byte)c);
}
gos.finish();
byte compressed[] = baos.toByteArray();
System.out.println("Compressed size of 1MB: " + compressed.length);
} catch (Exception e) { e.printStackTrace(); }
}
*****/
}

View File

@ -92,8 +92,12 @@ public class I2PThread extends Thread {
t.printStackTrace();
}
****/
if (t instanceof OutOfMemoryError)
if (t instanceof OutOfMemoryError) {
fireOOM((OutOfMemoryError)t);
} else {
System.out.println ("Thread terminated unexpectedly: " + getName());
t.printStackTrace();
}
}
// This creates a new I2PAppContext after it was deleted
// in Router.finalShutdown() via RouterContext.killGlobalContext()

View File

@ -176,8 +176,7 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
SecureRandom.getInstance("SHA1PRNG").nextBytes(buf);
ok = true;
} catch (NoSuchAlgorithmException e) {}
// why urandom? because /dev/random blocks, and there are arguments
// suggesting such blockages are largely meaningless
// why urandom? because /dev/random blocks
ok = seedFromFile(new File("/dev/urandom"), buf) || ok;
// we merge (XOR) in the data from /dev/urandom with our own seedfile
File localFile = new File(_context.getConfigDir(), SEEDFILE);
@ -186,6 +185,8 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
}
/**
* XORs the seed into buf
*
* @param f absolute path
* @return success
*/

View File

@ -1,6 +1,7 @@
package net.i2p.util;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
@ -64,43 +65,33 @@ public abstract class Translate {
* Use autoboxing to call with ints, longs, floats, etc.
*/
public static String getString(String s, Object o, I2PAppContext ctx, String bun) {
String lang = getLanguage(ctx);
if (lang.equals(TEST_LANG))
return TEST_STRING + '(' + o + ')' + TEST_STRING;
String x = getString(s, ctx, bun);
Object[] oArray = new Object[1];
oArray[0] = o;
try {
MessageFormat fmt = new MessageFormat(x, new Locale(lang));
return fmt.format(oArray, new StringBuffer(), null).toString();
} catch (IllegalArgumentException iae) {
System.err.println("Bad format: orig: \"" + s +
"\" trans: \"" + x +
"\" param: \"" + o +
"\" lang: " + lang);
return "FIXME: " + x + ' ' + o;
}
return getString(s, ctx, bun, o);
}
/** for {0} and {1} */
public static String getString(String s, Object o, Object o2, I2PAppContext ctx, String bun) {
return getString(s, ctx, bun, o, o2);
}
/**
* Varargs
* @param oArray parameters
* @since 0.9.8
*/
public static String getString(String s, I2PAppContext ctx, String bun, Object... oArray) {
String lang = getLanguage(ctx);
if (lang.equals(TEST_LANG))
return TEST_STRING + '(' + o + ',' + o2 + ')' + TEST_STRING;
return TEST_STRING + Arrays.toString(oArray) + TEST_STRING;
String x = getString(s, ctx, bun);
Object[] oArray = new Object[2];
oArray[0] = o;
oArray[1] = o2;
try {
MessageFormat fmt = new MessageFormat(x, new Locale(lang));
return fmt.format(oArray, new StringBuffer(), null).toString();
} catch (IllegalArgumentException iae) {
System.err.println("Bad format: orig: \"" + s +
"\" trans: \"" + x +
"\" param1: \"" + o +
"\" param2: \"" + o2 +
"\" lang: " + lang);
return "FIXME: " + x + ' ' + o + ',' + o2;
"\" params: " + Arrays.toString(oArray) +
" lang: " + lang);
return "FIXME: " + x + ' ' + Arrays.toString(oArray);
}
}

View File

@ -0,0 +1,449 @@
package net.i2p.util;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilterReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import net.i2p.I2PAppContext;
/**
* Translate.
*
* Strings are tagged with _("translateme")
* or _("translate {0} me", "foo")
*
* Max two parameters.
* String and parameters must be double-quoted (no ngettext, no tagged parameters).
* Escape quotes inside quote with \".
* Commas and spaces between args are optional.
* Entire tag (from '_' to ')') must be on one line.
* Multiple tags allowed on one line.
*
* Also will extract strings to a dummy java file for postprocessing by xgettext - see main().
*
* @since 0.9.8
*/
public class TranslateReader extends FilterReader {
/** all states may transition to START */
private enum S {
START,
/** next state LPAREN */
UNDER,
/** next state QUOTE */
LPAREN,
/** next state LPAREN or BACK */
QUOTE,
/** next state QUOTE */
BACK
}
private final String _bundle;
private final I2PAppContext _ctx;
/** parse in progress */
private final StringBuilder _inBuf;
/** parsed and translated */
private final StringBuilder _outBuf;
/** pending string or parameter for translation */
private final StringBuilder _argBuf;
/** parsed string and parameters */
private final List<String> _args;
private S _state = S.START;
private TagHook _hook;
private static final int MAX_ARGS = 9;
/**
* @param bundle may be null for tagging only
* @param in UTF-8
*/
public TranslateReader(I2PAppContext ctx, String bundle, InputStream in) throws IOException {
super(new BufferedReader(new InputStreamReader(in, "UTF-8")));
_ctx = ctx;
_bundle = bundle;
_args = new ArrayList(4);
_inBuf = new StringBuilder(64);
_outBuf = new StringBuilder(64);
_argBuf = new StringBuilder(64);
}
@Override
public int read() throws IOException {
int rv = popit();
if (rv > 0)
return rv;
return parse();
}
private int parse() throws IOException {
while (true) {
int c = in.read();
if (c >= 0)
pushit((char) c);
//System.err.println("State: " + _state + " char: '" + ((char)c) + "'");
switch (c) {
case -1:
case '\r':
case '\n':
return flushit();
case '_':
switch (_state) {
case START:
_state = S.UNDER;
break;
case BACK:
_state = S.QUOTE;
// fall thru
case QUOTE:
_argBuf.append((char) c);
break;
default:
return flushit();
}
break;
case '(':
switch (_state) {
case UNDER:
_args.clear();
_state = S.LPAREN;
break;
case BACK:
_state = S.QUOTE;
// fall thru
case QUOTE:
_argBuf.append((char) c);
break;
default:
return flushit();
}
break;
case '"':
switch (_state) {
case LPAREN:
// got an opening quote for a parameter
if (_args.size() >= MAX_ARGS)
return flushit();
_argBuf.setLength(0);
_state = S.QUOTE;
break;
case BACK:
_argBuf.append((char) c);
_state = S.QUOTE;
break;
case QUOTE:
// got a closing quote for a parameter
_args.add(_argBuf.toString());
_state = S.LPAREN;
break;
default:
return flushit();
}
break;
case '\\':
switch (_state) {
case QUOTE:
_state = S.BACK;
break;
case BACK:
_argBuf.append((char) c);
_state = S.QUOTE;
break;
default:
return flushit();
}
break;
case ' ':
case '\t':
case ',':
switch (_state) {
case BACK:
_state = S.QUOTE;
// fall thru
case QUOTE:
_argBuf.append((char) c);
break;
case LPAREN:
// ignore whitespace and commas between args
break;
default:
return flushit();
}
break;
case ')':
switch (_state) {
case BACK:
_state = S.QUOTE;
// fall thru
case QUOTE:
_argBuf.append((char) c);
break;
case LPAREN:
// Finally, we have something to translate!
translate();
return popit();
default:
return flushit();
}
break;
default:
switch (_state) {
case BACK:
_state = S.QUOTE;
// fall thru
case QUOTE:
_argBuf.append((char) c);
break;
default:
return flushit();
}
break;
}
}
}
@Override
public int read(char cbuf[], int off, int len) throws IOException {
for (int i = 0; i < len; i++) {
int c = read();
if (c < 0) {
if (i == 0)
return -1;
return i;
}
cbuf[off + i] = (char) c;
}
return len;
}
@Override
public long skip(long n) throws IOException {
for (long i = 0; i < n; i++) {
int c = read();
if (c < 0) {
if (i == 0)
return -1;
return i;
}
}
return n;
}
@Override
public boolean ready() throws IOException {
return _outBuf.length() > 0 || _inBuf.length() > 0 ||in.ready();
}
@Override
public void close() throws IOException {
_inBuf.setLength(0);
_outBuf.setLength(0);
_state = S.START;
in.close();
}
@Override
public void mark(int readLimit) {}
@Override
public void reset() throws IOException {
throw new IOException();
}
@Override
public boolean markSupported() {
return false;
}
/**
* put in the pending parse buf
*/
private void pushit(char c) {
_inBuf.append(c);
}
/**
* flush _inBuf to _outBuf,
* reset state,
* and return next char or -1
*/
private int flushit() {
_state = S.START;
if (_inBuf.length() > 0) {
_outBuf.append(_inBuf);
_inBuf.setLength(0);
}
return popit();
}
/**
* return next char from _outBuf or -1
*/
private int popit() {
if (_outBuf.length() > 0) {
int rv = _outBuf.charAt(0) & 0xffff;
_outBuf.deleteCharAt(0);
return rv;
}
return -1;
}
/**
* clear _inBuf, translate _args to _outBuf,
* reset state
*/
private void translate() {
//System.err.println("Translating: " + _args.toString());
int argCount = _args.size();
if (argCount <= 0 || argCount > MAX_ARGS) {
flushit();
return;
}
_state = S.START;
_inBuf.setLength(0);
if (_hook != null) {
_hook.tag(_args);
return;
}
String tx = null;
if (argCount == 1)
tx = Translate.getString(_args.get(0), _ctx, _bundle);
else
tx = Translate.getString(_args.get(0), _ctx, _bundle, _args.subList(1, _args.size()).toArray());
_outBuf.append(tx);
}
private interface TagHook extends Closeable {
public void tag(List<String> args);
}
private static class Tagger implements TagHook {
private final PrintStream _out;
private final String _name;
private int _count;
public Tagger(String file) throws IOException {
_name = file;
_out = new PrintStream(file, "UTF-8");
_out.println("// Automatically generated, do not edit");
_out.println("package dummy;");
_out.println("class Dummy {");
_out.println(" void dummy() {");
}
public void tag(List<String> args) {
if (args.size() <= 0)
return;
_out.print("\t_(");
for (int i = 0; i < args.size(); i++) {
if (i > 0)
_out.print(", ");
_out.print('"');
_out.print(args.get(i).replace("\"", "\\\""));
_out.print('"');
}
_out.println(");");
_count++;
}
public void close() throws IOException {
_out.println(" }");
_out.println("}");
if (_out.checkError())
throw new IOException();
_out.close();
System.out.println(_count + " strings written to " + _name);
}
}
public static void main(String[] args) {
try {
if (args.length >= 2 && args[0].equals("test"))
test(args[1]);
else if (args.length >= 2 && args[0].equals("tag"))
tag(args);
else
System.err.println("Usage:\n" +
"\ttest file (output to stdout)\n" +
"\ttag file (output to file.java)\n" +
"\ttag dir outfile\n" +
"\ttag file1 [file2...] outfile");
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
private static void test(String file) throws IOException {
TranslateReader r = new TranslateReader(I2PAppContext.getGlobalContext(),
"net.i2p.router.web.messages",
new FileInputStream(file));
int c;
while ((c = r.read()) >= 0) {
System.out.print((char)c);
}
System.out.flush();
}
/** @param files ignore 0 */
private static void tag(String[] files) throws IOException {
char[] buf = new char[256];
String outfile;
List<String> filelist;
if (files.length == 2) {
outfile = files[1] + ".java";
filelist = Collections.singletonList(files[1]);
} else if (files.length == 3 && (new File(files[1])).isDirectory()) {
outfile = files[2];
File dir = new File(files[1]);
File[] listing = dir.listFiles();
if (listing == null)
throw new IOException();
filelist = new ArrayList(listing.length);
for (int i = 0; i < listing.length; i++) {
File f = listing[i];
if (!f.isDirectory())
filelist.add(f.getAbsolutePath());
}
} else {
outfile = files[files.length - 1];
filelist = Arrays.asList(files).subList(1, files.length - 1);
}
TagHook tagger = null;
try {
tagger = new Tagger(outfile);
for (String file : filelist) {
TranslateReader r = null;
try {
r = new TranslateReader(I2PAppContext.getGlobalContext(),
null,
new FileInputStream(file));
r._hook = tagger;
while (r.read(buf, 0, buf.length) >= 0) {
// throw away output
}
} finally {
if (r != null) r.close();
}
}
} finally {
if (tagger != null) tagger.close();
}
}
}

View File

@ -102,6 +102,6 @@ public class RouterAddressTest extends StructureTest {
addr.setTransportStyle("Blah");
String ret = addr.toString();
//assertEquals("[RouterAddress: \n\tTransportStyle: Blah\n\tCost: 42\n\tExpiration: Fri Jan 02 00:00:00 UTC 1970\n\tOptions: #: 2\n\t\t[hostname] = [localhost]\n\t\t[portnum] = [1234]]", ret);
assertEquals("[RouterAddress: \n\tTransportStyle: Blah\n\tCost: 42\n\tOptions: #: 2\n\t\t[hostname] = [localhost]\n\t\t[portnum] = [1234]]", ret);
assertEquals("[RouterAddress: \n\tType: Blah\n\tCost: 42\n\tOptions (2):\n\t\t[hostname] = [localhost]\n\t\t[portnum] = [1234]]", ret);
}
}

20
debian/changelog vendored
View File

@ -1,8 +1,24 @@
i2p (0.9.7-0) unstable; urgency=low
i2p (0.9.7-3) UNRELEASED; urgency=low
* debian/rules: compress with xz
-- Kill Your TV <killyourtv@i2pmail.org> Thu, 01 Aug 2013 23:26:52 +0000
i2p (0.9.7-2) unstable; urgency=low
* Bugfix: Add missing ; to i2prouter script.
* Test scripts with "sh -n" in the build target
-- Kill Your TV <killyourtv@i2pmail.org> Tue, 16 Jul 2013 11:08:48 +0000
i2p (0.9.7-1) unstable; urgency=low
* New upstream release
* debconf:
- New Chinese, Portuguese, and Turkish translations
- Russian translation updates
-- Kill Your TV <killyourtv@i2pmail.org> Mon, 15 Jul 2013 00:00:00 +0000
-- Kill Your TV <killyourtv@i2pmail.org> Mon, 15 Jul 2013 19:35:09 +0000
i2p (0.9.6-1) unstable; urgency=low

View File

@ -158,7 +158,7 @@ Debian wrapper.config to try to prevent confusion.
exit 1
fi
}
@@ -1866,24 +1809,9 @@
@@ -1866,24 +1809,10 @@
status
;;
@ -183,6 +183,7 @@ Debian wrapper.config to try to prevent confusion.
+ 'install' | 'remove' | 'uninstall')
+ echo "Use \"dpkg-reconfigure i2p\" to configure the initscript."
+ exit 1
+ ;;
'dump')
checkUser "" "$COMMAND"

4
debian/rules vendored
View File

@ -62,6 +62,8 @@ ifeq "$(findstring deb,$(shell grep 'deb' $(ROUTERVERSION)))" ""
else
@echo "Already found deb in version, not doing anything"
endif
sh -n installer/resources/i2prouter || exit 1
sh -n installer/resources/runplain.sh || exit 1
TZ=UTC ant preppkg-unix javadoc
echo router.updateDisabled=true > $(I2P)/router.config
mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper
@ -104,7 +106,7 @@ override_dh_dhlibdeps:
# dh_installinit -r
override_dh_builddeb:
dh_builddeb -- -Zbzip2
dh_builddeb -- -Zxz
get-orig-source:
uscan --verbose --rename --destdir $(CURDIR)/.. --watchfile debian/watch --force-download

View File

@ -1,16 +1,230 @@
* 2013-08-10 0.9.7.1 released
2012-07-30 zzz
* i2psnark: Increase max piece size to 4 MB (ticket #993)
* Tunnels: Extend local expiration of IB tunnels, to allow for
more clock skew and not drop valid messages at their destination
2013-08-08 zzz
* New update hosts, thx Meeh and dg
* Updater: Increase update-via-torrent to 30%
* Plucks from trunk for 0.9.7.1:
- Disable RI verifies
- Extend IB tunnel expiration
- i2prouter: bashism fix
- i2psnark: increase max piece size, mime type updates
- New reseed host
- Streaming: RTO changes
- UPnP fix for some hardware
2012-07-29 zzz
* Signatures:
- Prep for new signature algorithms; new SigType enum;
Signature, SigningPublicKey, SigningPrivateKey store type
- New Hash384 and Hash512 classes
- Remove length field in SimpleDataStructure
- New SU3File generator/verifier/extractor
* GeoIPv6: Fix NPE (ticket #992)
2012-07-28 zzz
* Addresses: Treat RFC 4193 addresses fc00::/7 as local
* NetDB: Disable RI verifies for now
2012-07-26 zzz
* Transports:
- Fix IPv6-only option 2nd try
- Treat RFC 4193 addresses fc00::/7 as local
2012-07-25 zzz
* Transports:
- Prefer IPv6 by default
- Fix IPv6-only option
- Don't try NTCP IPv6 addresses unless we have one
- Fix non-%16 SSU padding; enable by default
* Tunnels:
- Make expl. default 3 hops (ticket #966)
- Allow expl. fallback up to -2 hops
2012-07-24 zzz
* GeoIP: Fix lookups, broken in IPv6 branch
* UPnP:
- main() tweaks for debugging
- Fix for devices that return base URLs with trailing '/' (ticket #986)
2012-07-22 zzz
* BuildReplyHandler:
- Make non-static
- Don't pollute Hash cache with build response record hashes
- Use SimpleByteCache
- cleanups
* HashComparator:
- Don't pollute Hash cache with hashes
- cleanups
2012-07-21 zzz
* I2CP:
- Don't NPE when loglevel=warn
- Don't enforce property length limits when inside router JVM
* I2PSnark: Log uncaught error in ThreadedStarter to router log
* I2PThread: Log uncaught error to wrapper log
2012-07-20 zzz
Prop from i2p.i2p.zzz.ipv6:
* Addresses:
- blocklist 192.88.88.0/24 6to4 anycast
- invalidate 2002::/16
- Strip scope from returned IPv6 addresses
* Blocklist:
- Add IPv6 in-memory single list
- Limit in-memory single list size
- Fix dup check in getAddresses()
* CSFI: Pass TransportManager instead of CSFI to GetBidsJob; remove unused methods
* Console:
- Add IPv6 column on /peers
- Other minor /peers cleanup
* FloodfillPeerSelector, ProfileOrganizer: Use 8 bytes for IPv6 check
* GeoIP:
- Use cached IP in RouterAddresses
- Use both NTCP and SSU addresses
* GeoIPv6:
- Handle gzipped input data in merge tool
- Add script to generate compressed data
- Add local additions
- Add compressed data file, generated from Maxmind data fetched 2013-05-24
- Include data in installer and updater
- Update Maxmind license info, now CC-SA 3.0
- Enable GeoIPv6 lookup in CSFI
* NetDb:
- Add floodfillEnabled() to NetworkDatabaseFacade so callers don't
have to cast to FNDF, and Dummy NDF will work
- Remove static FNDF.floodfillEnabled()
* NTCP:
- Move SSU address notification handling from CSFI to NTCPTransport
- Drop NTCPAddress, just use RouterAddress
- Drop _myAddress field, use super's currentAddress
- Bad bind config not fatal
- Fix publishing address when host specified but interface is not
- Republish even if only changing cost
* PacketPusher: Minor optimization
* Peer tests:
- Use only IPv4 peer for Alice and Bob in peer tests; Charlie may be an IPv6 peer.
- Enforce IPv4 (Alice's) address inside PeerTest packet
* RouterAddress and RouterInfo toString() cleanups; don't cache RI in _stringified
* RouterAddress:
- hashCode/equals tweaks
- Add new constructor
- Add add getHost() and deepEquals()
- Compare host string, not IP, in equals()
- Deprecate some setters
- Add warning about setCost()
- Change cost storage from int to short
- Cost range checks
* RouterContext: Fix disabling client manager with i2p.dummyClientFacade=true
* SSU:
- Change from single UDPEndpoint to a List of UDPEndpoints
- Move (single) receive queue from UDPReceiver to PacketHandler
- Multiple transmit queues (one for each UDPEndpoint/UDPSender),
select queue in PacketPusher
- Throw exception on UDPEndpoint.startup() failure
- Remove all _external* fields; use _currentAddresses in super
- Big rework of externalAddressReceived(), rebuildExternalAddress(),
needsRebuild(), and replaceAddress() for multiple addresses and IPv6
- Add caching in UDPAddress
- More IPv6 flavors of utility methods
- Remove two-arg replaceAddress()
- Fixes for i2np.udp.allowLocal, log tweaks, sender/receiver thread name tweaks
- Handle IPv6 in too-close checks
- IPv6 SSU MTU adjustments
- Hash IPv6 addresses in IPThrottler
* SSU Introduction:
- Document that Alice-Bob RelayRequest/RelayResponse may be IPv4 or IPv6,
but don't implement IPv6 yet.
Changes required in IntroductionManager and PacketBuilder to send Alice's
IPv4 address in the RelayRequest packet over IPv6, and to publish
IPv6 introducer IPs.
- Bob-Charlie RelayIntro must be IPv4
- Only offer/accept relay tags as Bob or Charlie if the Bob-Charlie session is IPv4
- Alice-Charlie communication must be IPv4
* SSUDemo:
- Configuration fixes, delete RI on exit, log tweaks, cleanups
- Use IPv6; don't use System properties
- Adapt for NTCP testing too
* Tests:
- New buildTest and prepTest targets
- Fix UDPEndpoint usage in unit tests: Restore receive(); Handle null UDPTransport
- Fix UDPEndpointTestStandalone: init context; Add unit test buildPacket() method to PacketBuilder;
Fix NPE in MessageHistory
* Transports:
- Add new TransportUtil for getting/setting IPv6 config
- Prep for supporting multiple RouterAddresses per-transport
- Prep for multiple address discovery
- Fix multiple-detection code in externalAddressReceived()
- Synchronize tracking of last IP/port
- Don't accept IPv6 address changes from peers
- Remove unused getLocalAddress()
- Pkg private getLocalPort()
- Start transports in a standard order to make testing easier
- When transports learn of interface addresses before being started, save them
and use them at startup
- Pick SSU random port before startListening() and have the TransportManager
pass it to NTCP before starting
- Only restart NTCP after changing addresses when necessary;
prevent thrashing at startup (ticket #459)
- Always bind NTCP if we have port; not just when not firewalled
- Only call rebuildRouterInfo() once at startup
- More checking of min/max SSU port config
- Invalid SSU bind config no longer fatal
- Allow "true" for ipv6 config
- SSU fixes for per-address and IPv6 MTU
- MTU.main() print all interfaces
- Add i2np.disable property for testing
* Transports:
- Sort multiple peer addresses by cost, with adjustment for local IPv6 preference
- Add default IPv6Config for ease of changing later
- Only treat IPv6 addresses as valid if we have a public IPv6 address
* Tunnel GW pumper: Limit threads when testing
* UDPAddress:
- Reduce object churn, check intro key length,
don't look for ihost3, reject ports < 1024, cleanups
- Remove dependency in console; make package private
* UPnP:
- Fix UPnP address received before startListening(), broken by isAlive() check
- Pass device IP back in forward port callback
- Only declare success if forwarded IP is public
2012-07-20 zzz
Prop from i2p.i2p.zzz.test2:
* DHSessionKeyBuilder: Fix for session and mac keys if DH key is between 32 and 63 bytes.
Was: NPE. Now: mac key is hash of session key. Won't ever happen. (Ticket #963)
* I2CP/I2PTunnel locking fixes (partial fixes for tickets 650. 722, 815, 946, 947, 953):
- I2PSocketManagerFactory: New createDisconnectedManager(), javadocs
- I2PSessionImpl: Rewrite state management and locking, prevent multiple
connect() calls, but allow disconnect() to interrupt connect()
- I2PSimpleSession: Changes to match I2PSessionImpl
- I2PTunnelServer: Don't connect in constructor, use createDisconnectedManager()
for a final manager, finals and cleanups
* ClientManager:
- Make classes extensible for router-side test stubs
- Add router-side local-only test implementation, no full router required.
Only tested with external clients, probably doesn't work in-JVM.
- Don't start threads in ClientManager constructor
- Remove unused Reader param in ClientMessageEventListener methods
- Cleanups, volatiles, finals, javadocs
* Translations:
- New varargs method in Translate
- New TranslateReader to translate static files on-the-fly using _("") tagging
- Tag proxy error pages for TranslateReader
- Drop static translated proxy error pages
- Add new i2ptunnel bundle for the proxy alone, shipped in the jar.
- Use TranslateReader in HTTP proxy for error pages
- Move HTTP proxy strings from the web (war) to proxy (jar) bundle so they will be loaded
Fixes translations for the lower half of the proxy pages that weren't accessible in the war.
- Initial translations created by msgmerge from i2ptunnel and routerconsole po files, un-fuzzied
- Tag initialNews.xml for TranslateReader
- Drop static translated initialNews pages
- Add new routerconsole bundle for the news alone, shipped in the jar
- Use TranslateReader in HTTP proxy for initial news
- Initial translations created manually from translated xml filesx
- Add translated proxy error pages and initial news to deletelist.txt
* Transports: Consolidate translation methods in TransportImpl;
ngettext fix for "peers" string
2012-07-19 zzz
* PRNG:
- Don't delay the refiller if we need more (don't limit max output)
- Add FortunaRandomSource.main() to output to stdout for testing e.g. with dieharder
2012-07-19 zab
* Streaming:
- initialize streaming RTT from sample, trac #979, RFC 6298
- store rttDev in TCBCache
* 2013-07-15 0.9.7 released

View File

@ -46,6 +46,7 @@ Friend of the Chinese Floodfill Flooder:159.226.40.3
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:172.16.0.0/12
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:192.0.0.0/24
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:192.0.2.0/24
<a href="http://tools.ietf.org/html/rfc3068">6to4 Anycast</a>:192.88.99.0/24
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:192.168.0.0/16
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:198.18.0.0/15
<a href="http://www.team-cymru.org/Services/Bogons/http.html">The Team Cymru Bogon List v6.8 03 FEB 2011</a>:198.51.100.0/24

View File

@ -4,3 +4,67 @@ certificates/r31453.ovh.net
certificates/75.145.125.59.crt
certificates/forum.i2p2.de.crt
certificates/cowpuncher.drollette.com.crt
# old translated proxy error pages
docs/ahelper-conflict-header_ar.ht
docs/ahelper-conflict-header_de.ht
docs/ahelper-conflict-header_fr.ht
docs/ahelper-conflict-header_nl.ht
docs/ahelper-conflict-header_ru.ht
docs/ahelper-conflict-header_zh.ht
docs/auth-header_de.ht
docs/auth-header_fr.ht
docs/denied-header_ar.ht
docs/denied-header_de.ht
docs/denied-header_fr.ht
docs/denied-header_nl.ht
docs/denied-header_ru.ht
docs/denied-header_zh.ht
docs/dnf-header_de.ht
docs/dnf-header_fr.ht
docs/dnf-header_nl.ht
docs/dnf-header_ru.ht
docs/dnf-header_zh.ht
docs/dnfb-header_ar.ht
docs/dnfb-header_de.ht
docs/dnfb-header_fr.ht
docs/dnfb-header_nl.ht
docs/dnfb-header_ru.ht
docs/dnfb-header_zh.ht
docs/dnfh-header_de.ht
docs/dnfh-header_fr.ht
docs/dnfh-header_nl.ht
docs/dnfh-header_ru.ht
docs/dnfh-header_zh.ht
docs/dnfp-header_ar.ht
docs/dnfp-header_de.ht
docs/dnfp-header_fr.ht
docs/dnfp-header_nl.ht
docs/dnfp-header_ru.ht
docs/dnfp-header_zh.ht
docs/localhost-header_ar.ht
docs/localhost-header_de.ht
docs/localhost-header_fr.ht
docs/localhost-header_nl.ht
docs/localhost-header_ru.ht
docs/localhost-header_zh.ht
docs/noproxy-header_ar.ht
docs/noproxy-header_de.ht
docs/noproxy-header_fr.ht
docs/noproxy-header_nl.ht
docs/noproxy-header_ru.ht
docs/noproxy-header_zh.ht
docs/protocol-header_ar.ht
docs/protocol-header_de.ht
docs/protocol-header_fr.ht
docs/protocol-header_nl.ht
docs/protocol-header_ru.ht
docs/protocol-header_zh.ht
# old translated initial news
docs/initialNews/initialNews_ar.xml
docs/initialNews/initialNews_de.xml
docs/initialNews/initialNews_es.xml
docs/initialNews/initialNews_fr.xml
docs/initialNews/initialNews_nl.xml
docs/initialNews/initialNews_pt.xml
docs/initialNews/initialNews_ru.xml
docs/initialNews/initialNews_sv.xml

View File

@ -0,0 +1,9 @@
# Local geoIPv6 additions
# Format: from IP,to IP,,,country code[,"country name"]
####
# common tunnel brokers
2001:5c0:1000:a::,2001:5c0:1000:a::,,,X1,"Freenet6 anonymous"
2001:5c0:1000:b::,2001:5c0:1000:b::,,,X2,"Freenet6 authenticated"
2001:5c0:1100::,2001:5c0:11ff:ffff:ffff:ffff:ffff:ffff,,,X3,"Freenet6 delegated"
# other interesting addresses
2002::,2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff,,,X4,"IPv4 compatibility"
Can't render this file because it contains an unexpected character in line 2 and column 54.

Binary file not shown.

View File

@ -1,25 +1,22 @@
<div lang="en">
<h3>Congratulations on getting I2P installed!</h3>
<div>
<h3>_("Congratulations on getting I2P installed!")</h3>
<p>
<b>Welcome to I2P!</b>
Please <b>have patience</b> as I2P boots up and finds peers.
<b>_("Welcome to I2P!")</b>
_("Please {0}have patience{1} as I2P boots up and finds peers.", "<b>", "</b>")
</p>
<p>
While you are waiting, please <b>adjust your bandwidth settings</b> on the
<a href="config.jsp">configuration page</a>.
_("While you are waiting, please {0}adjust your bandwidth settings{1} on the {2}configuration page{3}.", "<b>", "</b>", "<a href=\"config.jsp\">", "</a>")
</p>
<p>
Also you can setup your browser to use the I2P proxy to reach eepsites. Just enter 127.0.0.1 (or localhost)
port 4444 as a http proxy into your browser settings. Do not use SOCKS for this. More information
can be found on <a href="https://www.i2p2.de/htproxyports.html">I2P browser proxy setup page</a>.
_("Also you can setup your browser to use the I2P proxy to reach eepsites.")
_("Just enter 127.0.0.1 (or localhost) port 4444 as a http proxy into your browser settings.")
_("Do not use SOCKS for this.")
_("More information can be found on the {0}I2P browser proxy setup page{1}.", "<a href=\"https://www.i2p2.de/htproxyports.html\">", "</a>")
</p>
<p>
Once you have a "shared clients" destination listed on the left,
please <b>check out</b> our
<a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
_("Once you have a \"shared clients\" destination listed on the left, please {0}check out{1} our {2}FAQ{3}.", "<b>", "</b>", "<a href=\"http://www.i2p2.i2p/faq.html\">", "</a>")
</p>
<p>
Point your IRC client to <b>localhost:6668</b> and say hi to us on
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> or <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
_("Point your IRC client to {0}localhost:6668{1} and say hi to us on {2}#i2p-help{3} or {4}#i2p{5}.", "<b>", "</b>", "<a href=\"irc://127.0.0.1:6668/i2p-help\">", "</a>", "<a href=\"irc://127.0.0.1:6668/i2p\">", "</a>")
</p>
</div>

View File

@ -1,20 +0,0 @@
<div lang="ar" dir="rtl">
<h3>Congratulations on getting I2P installed!</h3>
<p>
<b> !I2P مرحبا بك في شبكة</b>
انتظر قليلا بينما يتم ربط الإتصال بباقي أعضاء الشبكة.
</p>
<p>
بسنما يتم الإتصال <b>بتغير بيانات سرعة الشبكة في</b> قم
<a href="config.jsp">صفحة الخيارات</a>.
</p>
<p>
عندما تظهر عبارة "shared clients" على اليسار يمكنك حينها <b>زيارة</b>
<a href="http://www.i2p2.i2p/faq.html">الأسئلة الشائعة</a>.
</p>
<p>IRC اتصل بخادم الدردشة الفورية على
<b>localhost:6668</b>
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> or <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
</div>

View File

@ -1,27 +0,0 @@
<div lang="de">
<h3>Wir gratulieren zur erfolgreichen Installation von I2P!</h3>
<p>
<b>Willkommen im I2P!</b>
Hab noch <b>etwas Geduld</b>, w&auml;hrend I2P startet und weitere I2P-Router findet.
</p>
<p>
Passe bitte in der Zwischenzeit <b>deine Einstellungen zur Bandbreite</b> auf der
<a href="config.jsp">Einstellungsseite</a> an!
</p>
<p>
Auch kannst Du gleich deinen Browser f&uuml;r die Nutzung von I2P einrichten. Setze in den
Einstellungen zum Browser ein HTTP Proxy ein mit 127.0.0.1 (oder localhost) mit Port 4444 als Ziel.
Mehr Informationen gibt es auf der <a href="https://www.i2p2.de/htproxyports.html">I2P browser proxy Setup Seite</a>.
</p>
<p>
Sobald auf der linken Seite eine Verbindung namens "versch. Klienten" aufgelistet ist, kannst Du unsere <a href="http://www.i2p2.i2p/faq_de.html">FAQ</a> besuchen.
</p>
<p>
Verbinde deinen IRC-Klienten mit dem Server auf <b>localhost:6668</b> und schau bei uns im Kanal
<a href="irc://127.0.0.1:6668/i2p-de">#i2p-de</a>, <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> oder <a href="irc://127.0.0.1:6668/i2p">#i2p</a> vorbei!
</p>
<p>
Wir wünschen Dir viel Freude an unserem Netz und hoffen, Deine Erwartungen zu erfüllen.
</p>
</div>

View File

@ -1,21 +0,0 @@
<div lang="es">
<h3>&iexcl;Felicidades!, has instalado el enrutador I2P con &eacute;xito.</h3>
<p>
<b>&iexcl;Bienvenido a I2P!</b><br>
&iexcl;Ten todav&iacute;a <b>paciencia</b> mientras I2P est&eacute; arrancando y encontrando otros enrutadores I2P!
</p>
<p>
Este es el momento ideal para adaptar tu <b>configuraci&oacute;n del ancho de banda</b> en la
<a href="config.jsp">p&aacute;gina de configuraci&oacute;n</a>.
</p>
<p>
En cuanto veas a la izquierda una conexi&oacute;n llamada "clientes diferentes", puedes visitar nuestros <a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
</p>
<p>
&iexcl;Con&eacute;cta tu cliente IRC con el servidor <b>localhost:6668</b> y ven a saludarnos en los canales
<a href="irc://127.0.0.1:6668/i2p-es">#i2p-es</a>, <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> o <a href="irc://127.0.0.1:6668/i2p">#i2p</a>!
</p>
<p>
Esperemos que tengas una buena experiencia con y en I2P.
</p>
</div>

View File

@ -1,20 +0,0 @@
<div lang="fr">
<h3>Merci d'utiliser I2P !</h3>
<p>
<b>Bienvenue sur I2P !</b>
Merci de <b>patienter</b> le temps qu'I2P démarre et trouve des pairs.
</p>
<p>
Pendant ce temps, merci d'<b>adjuster vos réglages de bande passante</b> sur la page de
<a href="config.jsp">configuration</a>.
</p>
<p>
Une fois que vous avez une indication "clients partagés&hellip;" listée sur la gauche,
merci de <b>jeter un œil</b> à la <a href="http://www.i2p2.i2p/faq_fr.html">FAQ</a>.
</p>
<p>
Pointez votre client IRC sur <b>localhost:6668</b> et venez nous faire coucou sur
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p-fr">#i2p-fr</a>
ou <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
</div>

View File

@ -1,19 +0,0 @@
<div lang="nl">
<h3>Gefeliciteerd met de installatie van I2P!</h3>
<p>
<b>Welkom bij I2P!</b>
Heb <b>wat geduld</b> terwijl I2P opstart en peers zoekt.
</p>
<p>
Terwijl je wacht, <b>pas je bandbreedte instellingen aan</b> op de
<a href="config.jsp">configuratie pagina</a>.
</p>
<p>
Wanneer je een "gedeelde clients" destination in de linker lijst hebt,
<b>lees dan aub</b> onze <a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
</p>
<p>
Verbind je IRC client met <b>localhost:6668</b> en zeg Hallo in
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> of <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
</div>

View File

@ -1,21 +0,0 @@
<div lang="pt">
<h3>Parabéns, você instalou o roteador I2P com êxito!</h3>
<p>
<b>Bem-vindo ao I2P!</b><br>
Seja <b>paciente</b> enquanto I2P ainda está iniciando-se e enquanto continuam sendo encontrados outros roteadores I2P!
</p>
<p>
Este é o momento ideal para personalizar a <b>configuração de largura de banda</b> na
<a href="config.jsp">página de configuração</a>.
</p>
<p>
Quando você vê uma conexão no lado esquerdo chamada "shared clients", você pode visitar os nossos <a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
</p>
<p>
Conecte seu cliente de IRC para o servidor <b>localhost:6668</b> e vem para nos cumprimentar aos canais
<a href="irc://127.0.0.1:6668/i2p-br">#i2p-br</a>, <a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> ou <a href="irc://127.0.0.1:6668/i2p">#i2p</a>!
</p>
<p>
Esperamos que você tenha uma boa experiência no I2P.
</p>
</div>

View File

@ -1,16 +0,0 @@
<div lang="ru">
<h3>Поздравляем с успешным завершением установки I2P!</h3>
<p>
<b>Добро пожаловать в I2P!</b> Немного терпения! I2P-маршрутизатору потребуется пара минут для запуска модулей и первого подключения к сети I2P.
</p>
<p>
Пока Вы ждете, самое время зайти в <a href="config.jsp">сетевые настройки</a> и <b>выставить ограничение скорости</b> в соответствии со скоростью Вашего подключения к интернету.
</p>
<p>
Как только в панели слева в разделе «Локальные туннели» появится запись «коллективные клиенты» — I2P готов к работе. Подключайте Ваш IRC-клиент к серверу <b>localhost:6668</b> и заходите сказать нам привет на канал
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> и <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
<p>
<b>Не забудьте заглянуть</b> в наш <a href="http://www.i2p2.i2p/faq_ru.html">FAQ</a>.
</p>
</div>

View File

@ -1,20 +0,0 @@
<div lang="en">
<h3>Congratulations on getting I2P installed!</h3>
<p>
<b>Välkommen till I2P!</b>
<b>Ha tålamod</b> medan I2P startar upp och letar upp peers.
</p>
<p>
Medan du väntar, var god <b>ställ in dina bandbreddd och port inställningar</b>
<a href="config.jsp">konfigurations-sidan</a>.
</p>
<p>
När du har en "delade klienter" distination listad på vänster sida,
<b>kika på</b> vår
<a href="http://www.i2p2.i2p/faq.html">FAQ</a>.
</p>
<p>
Rikta din IRC-klient till <b>localhost:6668</b> och säg hej till oss på
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a> eller <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
</div>

View File

@ -0,0 +1,19 @@
#!/bin/sh
#
# Fetch the latest file from Maxmind, merge with
# our additions, and compress.
#
FILE1=GeoIPv6.csv.gz
FILE2=geoipv6-extras.csv
FILEOUT=geoipv6.dat.gz
rm -f $FILE1 $FILEOUT
wget http://geolite.maxmind.com/download/geoip/database/$FILE1
if [ "$?" -ne "0" ]
then
echo 'Cannot fetch'
exit 1
fi
java -cp ../../build/i2p.jar:../../build/router.jar net.i2p.router.transport.GeoIPv6 $FILE1 $FILE2 $FILEOUT
exit $?

View File

@ -6,26 +6,19 @@ Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>I2P Warning: Destination key conflict</title>
<title>_("Warning: Destination Key Conflict")</title>
<link rel="shortcut icon" href="http://proxy.i2p/themes/console/images/favicon.ico">
<link href="http://proxy.i2p/themes/console/default/console.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="logo">
<a href="http://127.0.0.1:7657/" title="Router Console"><img src="http://proxy.i2p/themes/console/images/i2plogo.png" alt="I2P Router Console" border="0"></a><hr>
<a href="http://127.0.0.1:7657/config.jsp">Configuration</a> <a href="http://127.0.0.1:7657/help.jsp">Help</a> <a href="http://127.0.0.1:7657/susidns/">Addressbook</a>
</div>
<div class="warning" id="warning">
<h3>Warning: Destination Key Conflict</h3>
<h3>_("Warning: Destination Key Conflict")</h3>
<p>
The addresshelper link you followed specifies a different destination key
than a host entry in your host database.
Someone could be trying to impersonate another eepsite,
or people have given two eepsites identical names.
_("The addresshelper link you followed specifies a different destination key than a host entry in your host database.")
_("Someone could be trying to impersonate another eepsite, or people have given two eepsites identical names.")
</p>
<p>
You can resolve the conflict by considering which key you trust,
and either discarding the addresshelper link,
discarding the host entry from your host database,
or naming one of them differently.
_("You can resolve the conflict by considering which key you trust, and either discarding the addresshelper link, discarding the host entry from your host database, or naming one of them differently.")
</p>

View File

@ -1,31 +0,0 @@
HTTP/1.1 409 Conflict
Content-Type: text/html; charset=UTF-8
Cache-control: no-cache
Connection: close
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ar" dir="rtl"><head>
<title>I2P Warning: Destination key conflict</title>
<link rel="shortcut icon" href="http://proxy.i2p/themes/console/images/favicon.ico">
<link href="http://proxy.i2p/themes/console/default/console.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="logo">
<a href="http://127.0.0.1:7657/" title="Router Console"><img src="http://proxy.i2p/themes/console/images/i2plogo.png" alt="I2P Router Console" border="0"></a><hr>
<a href="http://127.0.0.1:7657/config.jsp">اعدادات</a> <a href="http://127.0.0.1:7657/help.jsp">مساعدة</a> <a href="http://127.0.0.1:7657/susidns/">دفتر العناوين</a>
</div>
<div class="warning" id="warning">
<h3>Warning: Destination Key Conflict</h3>
<p>
The addresshelper link you followed specifies a different destination key
than a host entry in your host database.
Someone could be trying to impersonate another eepsite,
or people have given two eepsites identical names.
</p>
<p>
You can resolve the conflict by considering which key you trust,
and either discarding the addresshelper link,
discarding the host entry from your host database,
or naming one of them differently.
</p>

View File

@ -1,30 +0,0 @@
HTTP/1.1 409 Conflict
Content-Type: text/html; charset=UTF-8
Cache-control: no-cache
Connection: close
Proxy-Connection: close
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>I2P-Warnung: kollidierende Ziele</title>
<link rel="shortcut icon" href="http://proxy.i2p/themes/console/images/favicon.ico">
<link href="http://proxy.i2p/themes/console/default/console.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="logo">
<a href="http://127.0.0.1:7657/" title="Routerkonsole"><img src="http://proxy.i2p/themes/console/images/i2plogo.png" alt="I2P Router Console" border="0"></a><hr>
<a href="http://127.0.0.1:7657/config.jsp">Einstellungen</a> <a href="http://127.0.0.1:7657/help.jsp">Hilfe</a> <a href="http://127.0.0.1:7657/susidns/">Adressbuch</a>
</div>
<div class="warning" id="warning">
<h3>Warnung: Zielkonflikt</h3>
<p>
Der Adresshelferverweis, dem Sie folgen wollen, verwendet für diesen Hostnamen ein anderes kryptographisches Ziel
als im zugehörigen Eintrag in Ihrem Routeradressbuch angegeben.
Jemand könnte versuchen, fälschlicherweise eine andere als die gesuchte Eepseite auszugeben.
Möglicherweise haben aber die betreiber beider Eepseiten nur zufällig denselben Namen ausgewählt.
</p>
<p>
Diesen Konflikt können Sie lösen, indem Sie entscheiden, welchem Ziel Sie trauen, das gesuchte zu sein,
und dann entweder den Verweis des Adresshelfers verwerfen, den Eintrag in Ihrem Routeradressbuch löschen,
oder beiden Zielen unterschiedliche Namen zuweisen.
</p>

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