propagate from branch 'i2p.i2p.str4d.test' (head 190d9be59620f8c6f80e0cb2fc4d9fa839edbb4f)

to branch 'i2p.i2p' (head c884db74f90a9d1c33deca6e2fd2e29f6c1ac8fa)
This commit is contained in:
str4d
2012-08-03 21:30:29 +00:00
332 changed files with 37657 additions and 40410 deletions

View File

@ -197,6 +197,7 @@ Applications:
- Guernsey and Isle of Man flags from the Open Clip Art Library, released into the public domain
- All other flag icons: public domain, courtesy mjames@gmail.com http://www.famfamfam.com/
Silk icons: See licenses/LICENSE-SilkIcons.txt
FatCow icons: See licenses/LICENSE-FatCowIcons.txt
GeoIP Data:
Copyright (c) 2008 MaxMind, Inc. All Rights Reserved.
@ -206,6 +207,10 @@ Applications:
"Man with hat over face" & related images licensed under a Creative Commons 2.0 license.
Original photos by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155
I2PSnark light theme:
"Creative Commons Cat" licensed under a Creative Commons Attribution 3.0 Unported License.
Original photo by Boaz Arad. http://www.luxphile.com/2011/01/creative-commons-cat.html
SAM:
Public domain.

View File

@ -115,7 +115,6 @@ import net.i2p.util.SimpleTimer2;
*/
public class BOB {
private final static Log _log = new Log(BOB.class);
public final static String PROP_CONFIG_LOCATION = "BOB.config";
public final static String PROP_BOB_PORT = "BOB.port";
public final static String PROP_BOB_HOST = "BOB.host";
@ -137,7 +136,7 @@ public class BOB {
*/
public static void info(String arg) {
System.out.println("INFO:" + arg);
_log.info(arg);
(new Log(BOB.class)).info(arg);
}
/**
@ -147,7 +146,7 @@ public class BOB {
*/
public static void warn(String arg) {
System.out.println("WARNING:" + arg);
_log.warn(arg);
(new Log(BOB.class)).warn(arg);
}
/**
@ -157,7 +156,7 @@ public class BOB {
*/
public static void error(String arg) {
System.out.println("ERROR: " + arg);
_log.error(arg);
(new Log(BOB.class)).error(arg);
}
/**
@ -185,6 +184,7 @@ public class BOB {
SimpleTimer2 Y2 = SimpleTimer2.getInstance();
i = Y1.hashCode();
i = Y2.hashCode();
Log _log = new Log(BOB.class);
try {
{
File cfg = new File(configLocation);
@ -260,6 +260,7 @@ public class BOB {
i = 0;
boolean g = false;
spin.set(true);
try {
info("BOB is now running.");
listener = new ServerSocket(Integer.parseInt(props.getProperty(PROP_BOB_PORT)), 10, InetAddress.getByName(props.getProperty(PROP_BOB_HOST)));

View File

@ -54,7 +54,7 @@ public class DoCMDS implements Runnable {
// FIX ME
// I need a better way to do versioning, but this will do for now.
public static final String BMAJ = "00", BMIN = "00", BREV = "0F", BEXT = "";
public static final String BMAJ = "00", BMIN = "00", BREV = "10", BEXT = "";
public static final String BOBversion = BMAJ + "." + BMIN + "." + BREV + BEXT;
private Socket server;
private Properties props;

View File

@ -67,7 +67,7 @@ public class ConnectionAcceptor implements Runnable
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
_util.getContext().simpleScheduler().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
}
}
}
@ -82,7 +82,7 @@ public class ConnectionAcceptor implements Runnable
thread = new I2PAppThread(this, "I2PSnark acceptor");
thread.setDaemon(true);
thread.start();
SimpleScheduler.getInstance().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
_util.getContext().simpleScheduler().addPeriodicEvent(new Cleaner(), BAD_CLEAN_INTERVAL);
}
public void halt()
@ -146,7 +146,7 @@ public class ConnectionAcceptor implements Runnable
}
} else {
if (socket.getPeerDestination().equals(_util.getMyDestination())) {
_util.debug("Incoming connection from myself", Snark.ERROR);
_log.error("Incoming connection from myself");
try { socket.close(); } catch (IOException ioe) {}
continue;
}
@ -163,13 +163,13 @@ public class ConnectionAcceptor implements Runnable
catch (I2PException ioe)
{
if (!socketChanged) {
_util.debug("Error while accepting: " + ioe, Snark.ERROR);
_log.error("Error while accepting", ioe);
stop = true;
}
}
catch (IOException ioe)
{
_util.debug("Error while accepting: " + ioe, Snark.ERROR);
_log.error("Error while accepting", ioe);
stop = true;
}
// catch oom?

View File

@ -309,7 +309,7 @@ public class I2PSnarkUtil {
return rv;
} catch (I2PException ie) {
_shitlist.add(dest);
SimpleScheduler.getInstance().addEvent(new Unshitlist(dest), 10*60*1000);
_context.simpleScheduler().addEvent(new Unshitlist(dest), 10*60*1000);
throw new IOException("Unable to reach the peer " + peer + ": " + ie.getMessage());
}
}
@ -538,40 +538,6 @@ public class I2PSnarkUtil {
return buf.toString();
}
/** hook between snark's logger and an i2p log */
void debug(String msg, int snarkDebugLevel) {
debug(msg, snarkDebugLevel, null);
}
void debug(String msg, int snarkDebugLevel, Throwable t) {
if (t instanceof OutOfMemoryError) {
try { Thread.sleep(100); } catch (InterruptedException ie) {}
try {
t.printStackTrace();
} catch (Throwable tt) {}
try {
System.out.println("OOM thread: " + Thread.currentThread().getName());
} catch (Throwable tt) {}
}
switch (snarkDebugLevel) {
case 0:
case 1:
_log.error(msg, t);
break;
case 2:
_log.warn(msg, t);
break;
case 3:
case 4:
_log.info(msg, t);
break;
case 5:
case 6:
default:
_log.debug(msg, t);
break;
}
}
private static final String BUNDLE_NAME = "org.klomp.snark.web.messages";
/** lang in routerconsole.lang property, else current locale */

View File

@ -133,7 +133,7 @@ class PeerCheckerTask implements Runnable
// Check if it still wants pieces from us.
if (!peer.isInterested())
{
if (_log.shouldLog(Log.INFO))
if (_log.shouldLog(Log.DEBUG))
_log.debug("Choke uninterested peer: " + peer);
peer.setChoking(true);
uploaders--;
@ -144,7 +144,7 @@ class PeerCheckerTask implements Runnable
}
else if (overBWLimitChoke)
{
if (_log.shouldLog(Log.INFO))
if (_log.shouldLog(Log.DEBUG))
_log.debug("BW limit (" + upload + "/" + uploaded + "), choke peer: " + peer);
peer.setChoking(true);
uploaders--;

View File

@ -160,7 +160,7 @@ class PeerCoordinator implements PeerListener
// Install a timer to check the uploaders.
// Randomize the first start time so multiple tasks are spread out,
// this will help the behavior with global limits
timer = new CheckEvent(new PeerCheckerTask(_util, this));
timer = new CheckEvent(_util.getContext(), new PeerCheckerTask(_util, this));
timer.schedule((CHECK_PERIOD / 2) + _random.nextInt((int) CHECK_PERIOD));
}
@ -170,8 +170,8 @@ class PeerCoordinator implements PeerListener
*/
private static class CheckEvent extends SimpleTimer2.TimedEvent {
private final PeerCheckerTask _task;
public CheckEvent(PeerCheckerTask task) {
super(SimpleTimer2.getInstance());
public CheckEvent(I2PAppContext ctx, PeerCheckerTask task) {
super(ctx.simpleTimer2());
_task = task;
}
public void timeReached() {

View File

@ -35,6 +35,7 @@ import net.i2p.I2PAppContext;
import net.i2p.client.streaming.I2PServerSocket;
import net.i2p.data.Destination;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
/**
* Main Snark program startup class.
@ -47,29 +48,6 @@ public class Snark
private final static int MIN_PORT = 6881;
private final static int MAX_PORT = 6889;
// Error messages (non-fatal)
public final static int ERROR = 1;
// Warning messages
public final static int WARNING = 2;
// Notices (peer level)
public final static int NOTICE = 3;
// Info messages (protocol policy level)
public final static int INFO = 4;
// Debug info (protocol level)
public final static int DEBUG = 5;
// Very low level stuff (network level)
public final static int ALL = 6;
/**
* What level of debug info to show.
*/
//public static int debug = NOTICE;
// Whether or not to ask the user for commands while sharing
//private static boolean command_interpreter = true;
@ -249,12 +227,13 @@ public class Snark
private TrackerClient trackerclient;
private String rootDataDir = ".";
private final CompleteListener completeListener;
private boolean stopped;
private boolean starting;
private volatile boolean stopped;
private volatile boolean starting;
private byte[] id;
private byte[] infoHash;
private String additionalTrackerURL;
private final I2PSnarkUtil _util;
private final Log _log;
private final PeerCoordinatorSet _peerCoordinatorSet;
private String trackerProblems;
private int trackerSeenPeers;
@ -308,6 +287,7 @@ public class Snark
completeListener = complistener;
_util = util;
_log = util.getContext().logManager().getLog(Snark.class);
_peerCoordinatorSet = peerCoordinatorSet;
acceptor = connectionAcceptor;
@ -318,7 +298,8 @@ public class Snark
activity = "Network setup";
id = generateID();
debug("My peer id: " + PeerID.idencode(id), Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("My peer id: " + PeerID.idencode(id));
/*
* Don't start a tunnel if the torrent isn't going to be started.
@ -403,7 +384,8 @@ public class Snark
try { in.close(); } catch (IOException ioe) {}
}
debug(meta.toString(), INFO);
if (_log.shouldLog(Log.INFO))
_log.info(meta.toString());
// When the metainfo torrent was created from an existing file/dir
// it already exists.
@ -464,6 +446,7 @@ public class Snark
{
completeListener = complistener;
_util = util;
_log = util.getContext().logManager().getLog(Snark.class);
_peerCoordinatorSet = peerCoordinatorSet;
acceptor = connectionAcceptor;
this.torrent = torrent;
@ -531,9 +514,11 @@ public class Snark
fatal("Unable to listen for I2P connections");
else {
Destination d = serversocket.getManager().getSession().getMyDestination();
debug("Listening on I2P destination " + d.toBase64() + " / " + d.calculateHash().toBase64(), NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Listening on I2P destination " + d.toBase64() + " / " + d.calculateHash().toBase64());
}
debug("Starting PeerCoordinator, ConnectionAcceptor, and TrackerClient", NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Starting PeerCoordinator, ConnectionAcceptor, and TrackerClient");
activity = "Collecting pieces";
coordinator = new PeerCoordinator(_util, id, infoHash, meta, storage, this, this);
if (_peerCoordinatorSet != null) {
@ -573,7 +558,8 @@ public class Snark
}
trackerclient.start();
} else {
debug("NOT starting TrackerClient???", NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("NOT starting TrackerClient???");
}
}
@ -1017,22 +1003,13 @@ public class Snark
private static void usage()
{
System.out.println
("Usage: snark [--debug [level]] [--no-commands] [--port <port>]");
("Usage: snark [--no-commands] [--port <port>]");
System.out.println
(" [--eepproxy hostname portnum]");
System.out.println
(" [--i2cp routerHost routerPort ['name=val name=val name=val']]");
System.out.println
(" (<url>|<file>)");
System.out.println
(" --debug\tShows some extra info and stacktraces");
System.out.println
(" level\tHow much debug details to show");
System.out.println
(" \t(defaults to "
+ NOTICE + ", with --debug to "
+ INFO + ", highest level is "
+ ALL + ").");
System.out.println
(" --no-commands\tDon't read interactive commands or show usage info.");
System.out.println
@ -1071,7 +1048,7 @@ public class Snark
*/
private void fatal(String s, Throwable t)
{
_util.debug(s, ERROR, t);
_log.error(s, t);
//System.err.println("snark: " + s + ((t == null) ? "" : (": " + t)));
//if (debug >= INFO && t != null)
// t.printStackTrace();
@ -1083,14 +1060,6 @@ public class Snark
throw new RuntimeException(s, t);
}
/**
* Show debug info if debug is true.
*/
private void debug(String s, int level)
{
_util.debug(s, level, null);
}
/** CoordinatorListener - this does nothing */
public void peerChange(PeerCoordinator coordinator, Peer peer)
{
@ -1168,9 +1137,10 @@ public class Snark
// + " pieces: ");
checking = true;
}
if (!checking)
debug("Got " + (checked ? "" : "BAD ") + "piece: " + num,
Snark.INFO);
if (!checking) {
if (_log.shouldLog(Log.INFO))
_log.info("Got " + (checked ? "" : "BAD ") + "piece: " + num);
}
}
public void storageAllChecked(Storage storage)
@ -1186,7 +1156,8 @@ public class Snark
public void storageCompleted(Storage storage)
{
debug("Completely received " + torrent, Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Completely received " + torrent);
//storage.close();
//System.out.println("Completely received: " + torrent);
if (completeListener != null)
@ -1259,7 +1230,8 @@ public class Snark
total += c.getCurrentUploadRate();
}
long limit = 1024l * _util.getMaxUpBW();
debug("Total up bw: " + total + " Limit: " + limit, Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Total up bw: " + total + " Limit: " + limit);
return total > limit;
}

View File

@ -1728,7 +1728,7 @@ public class SnarkManager implements Snark.CompleteListener {
if (count > 0) {
// Schedule this even for final shutdown, as there's a chance
// that it's just this webapp that is stopping.
SimpleScheduler.getInstance().addEvent(new Disconnector(), 60*1000);
_context.simpleScheduler().addEvent(new Disconnector(), 60*1000);
addMessage(_("Closing I2P tunnel after notifying trackers."));
if (finalShutdown) {
try { Thread.sleep(5*1000); } catch (InterruptedException ie) {}

View File

@ -34,6 +34,7 @@ import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import net.i2p.crypto.SHA1;
import net.i2p.util.Log;
import net.i2p.util.SecureFile;
/**
@ -55,6 +56,7 @@ public class Storage
private final StorageListener listener;
private final I2PSnarkUtil _util;
private final Log _log;
private /* FIXME final FIXME */ BitField bitfield; // BitField to represent the pieces
private int needed; // Number of pieces needed
@ -87,6 +89,7 @@ public class Storage
throws IOException
{
_util = util;
_log = util.getContext().logManager().getLog(Storage.class);
this.metainfo = metainfo;
this.listener = listener;
needed = metainfo.getPieces();
@ -110,6 +113,7 @@ public class Storage
throws IOException
{
_util = util;
_log = util.getContext().logManager().getLog(Storage.class);
this.listener = listener;
// Create names, rafs and lengths arrays.
getFiles(baseFile);
@ -232,8 +236,9 @@ public class Storage
File[] files = f.listFiles();
if (files == null)
{
_util.debug("WARNING: Skipping '" + f
+ "' not a normal file.", Snark.WARNING);
if (_log.shouldLog(Log.WARN))
_log.warn("WARNING: Skipping '" + f
+ "' not a normal file.");
return;
}
for (int i = 0; i < files.length; i++)
@ -457,7 +462,8 @@ public class Storage
if (files == null)
{
// Create base as file.
_util.debug("Creating/Checking file: " + base, Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Creating/Checking file: " + base);
if (!base.createNewFile() && !base.exists())
throw new IOException("Could not create file " + base);
@ -481,7 +487,8 @@ public class Storage
else
{
// Create base as dir.
_util.debug("Creating/Checking directory: " + base, Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Creating/Checking directory: " + base);
if (!base.mkdir() && !base.isDirectory())
throw new IOException("Could not create directory " + base);
@ -540,19 +547,22 @@ public class Storage
bitfield = savedBitField;
needed = metainfo.getPieces() - bitfield.count();
_probablyComplete = complete();
_util.debug("Found saved state and files unchanged, skipping check", Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Found saved state and files unchanged, skipping check");
} else {
// the following sets the needed variable
changed = true;
checkCreateFiles(false);
}
if (complete()) {
_util.debug("Torrent is complete", Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Torrent is complete");
} else {
// fixme saved priorities
if (files != null)
priorities = new int[files.size()];
_util.debug("Still need " + needed + " out of " + metainfo.getPieces() + " pieces", Snark.NOTICE);
if (_log.shouldLog(Log.INFO))
_log.info("Still need " + needed + " out of " + metainfo.getPieces() + " pieces");
}
}
@ -731,7 +741,7 @@ public class Storage
String msg = "File '" + names[i] + "' exists, but has wrong length (expected " +
lengths[i] + " but found " + length + ") - repairing corruption";
SnarkManager.instance().addMessage(msg);
_util.debug(msg, Snark.ERROR);
_log.error(msg);
changed = true;
resume = true;
_probablyComplete = false; // to force RW
@ -844,7 +854,8 @@ public class Storage
*/
private void balloonFile(int nr) throws IOException
{
_util.debug("Ballooning " + nr + ": " + RAFfile[nr], Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Ballooning " + nr + ": " + RAFfile[nr]);
long remaining = lengths[nr];
final int ZEROBLOCKSIZE = (int) Math.min(remaining, 32*1024);
byte[] zeros = new byte[ZEROBLOCKSIZE];
@ -875,7 +886,7 @@ public class Storage
closeRAF(i);
}
} catch (IOException ioe) {
_util.debug("Error closing " + RAFfile[i], Snark.ERROR, ioe);
_log.error("Error closing " + RAFfile[i], ioe);
// gobble gobble
}
}
@ -896,7 +907,8 @@ public class Storage
try {
bs = new byte[len];
} catch (OutOfMemoryError oom) {
_util.debug("Out of memory, can't honor request for piece " + piece, Snark.WARNING, oom);
if (_log.shouldLog(Log.WARN))
_log.warn("Out of memory, can't honor request for piece " + piece, oom);
return null;
}
getUncheckedPiece(piece, bs, off, len);
@ -1000,8 +1012,9 @@ public class Storage
if (needed > 0) {
if (listener != null)
listener.setWantedPieces(this);
_util.debug("WARNING: Not really done, missing " + needed
+ " pieces", Snark.WARNING);
if (_log.shouldLog(Log.WARN))
_log.warn("WARNING: Not really done, missing " + needed
+ " pieces");
}
}

View File

@ -62,7 +62,7 @@ import net.i2p.util.SimpleTimer2;
* @author Mark Wielaard (mark@klomp.org)
*/
public class TrackerClient implements Runnable {
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(TrackerClient.class);
private final Log _log;
private static final String NO_EVENT = "";
private static final String STARTED_EVENT = "started";
private static final String COMPLETED_EVENT = "completed";
@ -116,6 +116,7 @@ public class TrackerClient implements Runnable {
String id = urlencode(snark.getID());
_threadName = "TrackerClient " + id.substring(id.length() - 12);
_util = util;
_log = util.getContext().logManager().getLog(TrackerClient.class);
this.meta = meta;
this.additionalTrackerURL = additionalTrackerURL;
this.coordinator = coordinator;
@ -183,7 +184,7 @@ public class TrackerClient implements Runnable {
private class Runner extends SimpleTimer2.TimedEvent {
public Runner(long delay) {
super(SimpleTimer2.getInstance(), delay);
super(_util.getContext().simpleTimer2(), delay);
}
public void timeReached() {
@ -397,9 +398,10 @@ public class TrackerClient implements Runnable {
catch (IOException ioe)
{
// Probably not fatal (if it doesn't last to long...)
_util.debug
if (_log.shouldLog(Log.WARN))
_log.warn
("WARNING: Could not contact tracker at '"
+ tr.announce + "': " + ioe, Snark.WARNING);
+ tr.announce + "': " + ioe);
tr.trackerProblems = ioe.getMessage();
// don't show secondary tracker problems to the user
if (tr.isPrimary)
@ -421,8 +423,9 @@ public class TrackerClient implements Runnable {
}
}
} else {
_util.debug("Not announcing to " + tr.announce + " last announce was " +
new Date(tr.lastRequestTime) + " interval is " + DataHelper.formatDuration(tr.interval), Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Not announcing to " + tr.announce + " last announce was " +
new Date(tr.lastRequestTime) + " interval is " + DataHelper.formatDuration(tr.interval));
}
if ((!tr.stop) && maxSeenPeers < tr.seenPeers)
maxSeenPeers = tr.seenPeers;
@ -432,7 +435,8 @@ public class TrackerClient implements Runnable {
if (coordinator.needOutboundPeers() && (meta == null || !meta.isPrivate()) && !stop) {
Set<PeerID> pids = coordinator.getPEXPeers();
if (!pids.isEmpty()) {
_util.debug("Got " + pids.size() + " from PEX", Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Got " + pids.size() + " from PEX");
List<Peer> peers = new ArrayList(pids.size());
for (PeerID pID : pids) {
peers.add(new Peer(pID, snark.getID(), snark.getInfoHash(), snark.getMetaInfo()));
@ -448,7 +452,8 @@ public class TrackerClient implements Runnable {
}
}
} else {
_util.debug("Not getting PEX peers", Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Not getting PEX peers");
}
// Get peers from DHT
@ -460,12 +465,14 @@ public class TrackerClient implements Runnable {
else
numwant = _util.getMaxConnections();
List<Hash> hashes = _util.getDHT().getPeers(snark.getInfoHash(), numwant, 2*60*1000);
_util.debug("Got " + hashes + " from DHT", Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Got " + hashes + " from DHT");
// announce ourselves while the token is still good
// FIXME this needs to be in its own thread
if (!stop) {
int good = _util.getDHT().announce(snark.getInfoHash(), 8, 5*60*1000);
_util.debug("Sent " + good + " good announces to DHT", Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Sent " + good + " good announces to DHT");
}
// now try these peers
@ -486,7 +493,8 @@ public class TrackerClient implements Runnable {
}
}
} else {
_util.debug("Not getting DHT peers", Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Not getting DHT peers");
}
@ -497,7 +505,8 @@ public class TrackerClient implements Runnable {
return;
if (!runStarted)
_util.debug(" Retrying in one minute...", Snark.DEBUG);
if (_log.shouldLog(Log.DEBUG))
_log.debug(" Retrying in one minute...");
try {
// Sleep some minutes...
@ -526,7 +535,7 @@ public class TrackerClient implements Runnable {
} // try
catch (Throwable t)
{
_util.debug("TrackerClient: " + t, Snark.ERROR, t);
_log.error("TrackerClient: " + t, t);
if (t instanceof OutOfMemoryError)
throw (OutOfMemoryError)t;
}
@ -619,7 +628,8 @@ public class TrackerClient implements Runnable {
else
buf.append(_util.getMaxConnections());
String s = buf.toString();
_util.debug("Sending TrackerClient request: " + s, Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("Sending TrackerClient request: " + s);
tr.lastRequestTime = System.currentTimeMillis();
// Don't wait for a response to stopped when shutting down
@ -635,7 +645,8 @@ public class TrackerClient implements Runnable {
TrackerInfo info = new TrackerInfo(in, snark.getID(),
snark.getInfoHash(), snark.getMetaInfo());
_util.debug("TrackerClient response: " + info, Snark.INFO);
if (_log.shouldLog(Log.INFO))
_log.info("TrackerClient response: " + info);
String failure = info.getFailureReason();
if (failure != null)

View File

@ -232,7 +232,7 @@ public class I2PSnarkServlet extends DefaultServlet {
//out.write("<meta http-equiv=\"refresh\" content=\"" + delay + ";/i2psnark/" + peerString + "\">\n");
out.write("<script src=\"/js/ajax.js\" type=\"text/javascript\"></script>\n" +
"<script type=\"text/javascript\">\n" +
"var failMessage = \"<div class=\\\"routerdown\\\"><b>" + _("Router is down") + "<\\/b></div>\";\n" +
"var failMessage = \"<div class=\\\"routerdown\\\"><b>" + _("Router is down") + "<\\/b><\\/div>\";\n" +
"function requestAjax1() { ajax(\"/i2psnark/.ajax/xhr1.html" + peerString + "\", \"mainsection\", " + (delay*1000) + "); }\n" +
"function initAjax() { setTimeout(requestAjax1, " + (delay*1000) +"); }\n" +
"</script>\n");
@ -972,24 +972,24 @@ public class I2PSnarkServlet extends DefaultServlet {
String statusString;
if (err != null) {
if (isRunning && curPeers > 0 && !showPeers)
statusString = "<img border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") +
": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning)
statusString = "<img border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else {
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "&hellip;";
statusString = "<img border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error");
}
} else if (snark.isStarting()) {
statusString = "<img border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Starting") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Starting") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Starting");
} else if (remaining == 0 || needed == 0) { // < 0 means no meta size yet
// partial complete or seeding
@ -1005,52 +1005,52 @@ public class I2PSnarkServlet extends DefaultServlet {
txt = _("Complete");
}
if (curPeers > 0 && !showPeers)
statusString = "<img border=\"0\" src=\"" + _imgPath + img + ".png\" title=\"" + txt + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + img + ".png\" title=\"" + txt + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + txt +
": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else
statusString = "<img border=\"0\" src=\"" + _imgPath + img + ".png\" title=\"" + txt + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + img + ".png\" title=\"" + txt + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + txt +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
} else {
statusString = "<img border=\"0\" src=\"" + _imgPath + "complete.png\" title=\"" + _("Complete") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "complete.png\" title=\"" + _("Complete") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Complete");
}
} else {
if (isRunning && curPeers > 0 && downBps > 0 && !showPeers)
statusString = "<img border=\"0\" src=\"" + _imgPath + "downloading.png\" title=\"" + _("OK") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "downloading.png\" title=\"" + _("OK") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("OK") +
": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning && curPeers > 0 && downBps > 0)
statusString = "<img border=\"0\" src=\"" + _imgPath + "downloading.png\" title=\"" + _("OK") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "downloading.png\" title=\"" + _("OK") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("OK") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning && curPeers > 0 && !showPeers)
statusString = "<img border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Stalled") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Stalled") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Stalled") +
": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
else if (isRunning && curPeers > 0)
statusString = "<img border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Stalled") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stalled.png\" title=\"" + _("Stalled") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Stalled") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning && knownPeers > 0)
statusString = "<img border=\"0\" src=\"" + _imgPath + "nopeers.png\" title=\"" + _("No Peers") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "nopeers.png\" title=\"" + _("No Peers") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("No Peers") +
": 0" + thinsp(noThinsp) + knownPeers ;
else if (isRunning)
statusString = "<img border=\"0\" src=\"" + _imgPath + "nopeers.png\" title=\"" + _("No Peers") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "nopeers.png\" title=\"" + _("No Peers") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("No Peers");
else
statusString = "<img border=\"0\" src=\"" + _imgPath + "stopped.png\" title=\"" + _("Stopped") + "\"></td>" +
statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "stopped.png\" title=\"" + _("Stopped") + "\"></td>" +
"<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Stopped");
}
@ -1098,7 +1098,7 @@ public class I2PSnarkServlet extends DefaultServlet {
else
icon = "magnet";
if (isValid) {
out.write(toImg(icon, _("Info")));
out.write(toImg(icon));
out.write("</a>");
} else {
out.write(toImg(icon));

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -74,6 +74,9 @@ 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()
*
* @param privData Base64-encoded private key data,
* format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
* @throws IllegalArgumentException if the I2CP configuration is b0rked so
@ -87,6 +90,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
}
/**
* Warning, blocks in constructor while connecting to router and building tunnels;
* TODO move that to startRunning()
*
* @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
@ -111,6 +117,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
}
/**
* Warning, blocks in constructor 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
@ -124,6 +133,8 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
}
/**
* Non-blocking
*
* @param sktMgr the existing socket manager
* @since 0.8.9
*/
@ -142,6 +153,9 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
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
@ -236,6 +250,7 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
/**
* Start running the I2PTunnelServer.
*
* TODO: Wait to connect to router until here.
*/
public void startRunning() {
// prevent JVM exit when running outside the router

View File

@ -156,8 +156,8 @@ public class TunnelController implements Logging {
}
String type = getType();
if ( (type == null) || (type.length() <= 0) ) {
if (_log.shouldLog(Log.WARN))
_log.warn("Cannot start the tunnel - no type specified");
if (_log.shouldLog(Log.ERROR))
_log.error("Cannot start the tunnel - no type specified");
return;
}
// Config options may have changed since instantiation, so do this again.
@ -455,6 +455,25 @@ public class TunnelController implements Logging {
}
}
_config = props;
// Set up some per-type defaults
// This really isn't the best spot to do this but for servers in particular,
// it's hard to override settings in the subclass since the session connect
// is done in the I2PTunnelServer constructor.
String type = getType();
if (type != null) {
if (type.equals("httpserver") || type.equals("streamrserver")) {
if (!_config.containsKey("option.shouldBundleReplyInfo"))
_config.setProperty("option.shouldBundleReplyInfo", "false");
} else if (type.contains("irc") || type.equals("streamrclient")) {
// maybe a bad idea for ircclient if DCC is enabled
if (!_config.containsKey("option.crypto.tagsToSend"))
_config.setProperty("option.crypto.tagsToSend", "20");
if (!_config.containsKey("option.crypto.lowTagThreshold"))
_config.setProperty("option.crypto.lowTagThreshold", "14");
}
}
// tell i2ptunnel, who will tell the TunnelTask, who will tell the SocketManager
setSessionOptions();
if (_running && _sessions != null) {
@ -467,6 +486,9 @@ public class TunnelController implements Logging {
}
}
/**
* @return a copy
*/
public Properties getConfig(String prefix) {
Properties rv = new Properties();
for (Map.Entry e : _config.entrySet()) {

View File

@ -22,7 +22,7 @@
<link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<% if (editBean.allowCSS()) {
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico">
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
<link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }

View File

@ -22,7 +22,7 @@
<link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<% if (editBean.allowCSS()) {
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico">
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
<link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }

View File

@ -24,7 +24,7 @@
<link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<% if (indexBean.allowCSS()) {
%><link rel="icon" href="<%=indexBean.getTheme()%>images/favicon.ico">
%><link rel="icon" href="<%=indexBean.getTheme()%>images/favicon.ico" />
<link href="<%=indexBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
<link href="<%=indexBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }

View File

@ -57,7 +57,7 @@
<link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<% if (editBean.allowCSS()) {
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico">
%><link rel="icon" href="<%=editBean.getTheme()%>images/favicon.ico" />
<link href="<%=editBean.getTheme()%>default.css" rel="stylesheet" type="text/css" />
<link href="<%=editBean.getTheme()%>i2ptunnel.css" rel="stylesheet" type="text/css" />
<% }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -72,7 +72,13 @@ public class ConfigHomeHandler extends FormHandler {
}
name = DataHelper.escapeHTML(name).replace(",", "&#44;"); // HomeHelper.S
url = DataHelper.escapeHTML(url).replace(",", "&#44;");
HomeHelper.App app = new HomeHelper.App(name, "", url, "/themes/console/images/itoopie_sm.png");
HomeHelper.App app = null;
if ("1".equals(group))
app = new HomeHelper.App(name, "", url, "/themes/console/images/eepsite.png");
else if ("2".equals(group))
app = new HomeHelper.App(name, "", url, "/themes/console/images/title_window.png");
else
app = new HomeHelper.App(name, "", url, "/themes/console/images/question.png");
apps.add(app);
addFormNotice(_("Added") + ": " + app.name);
} else {

View File

@ -25,14 +25,14 @@ public class HomeHelper extends HelperBase {
static final String DEFAULT_SERVICES =
_x("Addressbook") + S + _x("Manage your I2P hosts file here (I2P domain name resolution)") + S + "/dns" + S + I + "book_addresses.png" + S +
_x("Configure Bandwidth") + S + _x("I2P Bandwidth Configuration") + S + "/config" + S + I + "wrench_orange.png" + S +
_x("Configure Bandwidth") + S + _x("I2P Bandwidth Configuration") + S + "/config" + S + I + "action_log.png" + S +
_x("Configure Language") + S + _x("Console Language Selection") + S + "/configui" + S + I + "wrench_orange.png" + S +
_x("Customize Home Page") + S + _x("I2P Home Page Configuration") + S + "/confighome" + S + I + "wrench_orange.png" + S +
_x("Email") + S + _x("Anonymous webmail client") + S + "/webmail" + S + I + "email.png" + S +
_x("Help") + S + _x("I2P Router Help") + S + "/help" + S + I + "help.png" + S +
_x("Router Console") + S + _x("I2P Router Console") + S + "/console" + S + I + "wrench_orange.png" + S +
_x("Torrents") + S + _x("Built-in anonymous BitTorrent Client") + S + "/torrents" + S + I + "film.png" + S +
_x("Website") + S + _x("Local web server") + S + "http://127.0.0.1:7658/" + S + I + "server.png" + S +
_x("Customize Home Page") + S + _x("I2P Home Page Configuration") + S + "/confighome" + S + I + "home_page.png" + S +
_x("Email") + S + _x("Anonymous webmail client") + S + "/susimail/susimail" + S + I + "email.png" + S +
_x("Help") + S + _x("I2P Router Help") + S + "/help" + S + I + "support.png" + S +
_x("Router Console") + S + _x("I2P Router Console") + S + "/console" + S + I + "toolbox.png" + S +
_x("Torrents") + S + _x("Built-in anonymous BitTorrent Client") + S + "/i2psnark/" + S + I + "magnet.png" + S +
_x("Website") + S + _x("Local web server") + S + "http://127.0.0.1:7658/" + S + I + "server_32x32.png" + S +
"";
static final String DEFAULT_FAVORITES =
@ -41,20 +41,20 @@ public class HomeHelper extends HelperBase {
_x("Dev Forum") + S + _x("Development forum") + S + "http://zzz.i2p/" + S + I + "eepsite.png" + S +
_x("diftracker") + S + _x("Bittorrent tracker") + S + "http://diftracker.i2p/" + S + I + "eepsite.png" + S +
"echelon.i2p" + S + _x("I2P Applications") + S + "http://echelon.i2p/" + S + I + "eepsite.png" + S +
_x("FAQ") + S + _x("Frequently Asked Questions") + S + "http://www.i2p2.i2p/faq" + S + I + "help.png" + S +
_x("FAQ") + S + _x("Frequently Asked Questions") + S + "http://www.i2p2.i2p/faq" + S + I + "question.png" + S +
_x("Forum") + S + _x("Community forum") + S + "http://forum.i2p/" + S + I + "eepsite.png" + S +
_x("Anonymous Git Hosting") + S + _x("A public anonymous Git hosting site - supports pulling via Git and HTTP and pushing via SSH") + S + "http://git.repo.i2p/" + S + I + "git-logo.png" + S +
"Ident " + _x("Microblog") + S + _x("Your premier microblogging service on I2P") + S + "http://id3nt.i2p/" + S + I + "ident_icon_blue.png" + S +
_x("Javadocs") + S + _x("Technical documentation") + S + "http://i2p-javadocs.i2p/" + S + I + "book.png" + S +
//_x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "book.png" + S +
_x("Javadocs") + S + _x("Technical documentation") + S + "http://i2p-javadocs.i2p/" + S + I + "education.png" + S +
//_x("Key Server") + S + _x("OpenPGP Keyserver") + S + "http://keys.i2p/" + S + I + "education.png" + S +
_x("killyourtv.i2p") + S + _x("Debian and Tahoe-LAFS repositories") + S + "http://killyourtv.i2p/" + S + I + "eepsite.png" + S +
_x("Pastebin") + S + _x("I2P Pastebin") + S + "http://pastethis.i2p/" + S + I + "eepsite.png" + S +
"Planet I2P" + S + _x("I2P News") + S + "http://planet.i2p/" + S + I + "eepsite.png" + S +
_x("Plugins") + S + _x("Add-on directory") + S + "http://plugins.i2p/" + S + I + "plugin.png" + S +
_x("Postman's Tracker") + S + _x("Bittorrent tracker") + S + "http://tracker2.postman.i2p/" + S + I + "eepsite.png" + S +
_x("Project Website") + S + _x("I2P home page") + S + "http://www.i2p2.i2p/" + S + I + "help.png" + S +
_x("Project Website") + S + _x("I2P home page") + S + "http://www.i2p2.i2p/" + S + I + "info_rhombus.png" + S +
"stats.i2p" + S + _x("I2P Netowrk Statistics") + S + "http://stats.i2p/cgi-bin/dashboard.cgi" + S + I + "eepsite.png" + S +
_x("Technical Docs") + S + _x("Technical documentation") + S + "http://www.i2p2.i2p/how" + S + I + "book.png" + S +
_x("Technical Docs") + S + _x("Technical documentation") + S + "http://www.i2p2.i2p/how" + S + I + "education.png" + S +
_x("Trac Wiki") + S + S + "http://trac.i2p2.i2p/" + S + I + "eepsite.png" + S +
_x("Ugha's Wiki") + S + S + "http://ugha.i2p/" + S + I + "eepsite.png" + S +
_x("Sponge's main site") + S + _x("Seedless and the Robert BitTorrent applications") + S + "http://sponge.i2p/" + S + I + "eepsite.png" + S +

View File

@ -123,7 +123,7 @@ public class PluginUpdateChecker extends UpdateHandler {
}
private void scheduleStatusClean(String msg) {
SimpleScheduler.getInstance().addEvent(new Cleaner(msg), 20*60*1000);
_context.simpleScheduler().addEvent(new Cleaner(msg), 20*60*1000);
}
private class Cleaner implements SimpleTimer.TimedEvent {

View File

@ -98,7 +98,7 @@ public class PluginUpdateHandler extends UpdateHandler {
}
private void scheduleStatusClean(String msg) {
SimpleScheduler.getInstance().addEvent(new Cleaner(msg), 20*60*1000);
_context.simpleScheduler().addEvent(new Cleaner(msg), 20*60*1000);
}
private class Cleaner implements SimpleTimer.TimedEvent {

View File

@ -156,13 +156,13 @@ public class SummaryBarRenderer {
"<hr class=\"b\"><table><tr><td>" +
"<a href=\"/webmail\" target=\"_top\" title=\"")
"<a href=\"/susimail/susimail\" target=\"_blank\" title=\"")
.append(_("Anonymous webmail client"))
.append("\">")
.append(_("Email"))
.append("</a>\n" +
"<a href=\"/torrents\" target=\"_top\" title=\"")
"<a href=\"/i2psnark/\" target=\"_blank\" title=\"")
.append(_("Built-in anonymous BitTorrent Client"))
.append("\">")
.append(_("Torrents"))

View File

@ -64,9 +64,9 @@ public class SummaryHelper extends HelperBase {
"NewsHeadings" + S +
"UpdateStatus" + S +
"NetworkReachability" + S +
"RestartStatus" + S +
"FirewallAndReseedStatus" + S +
"Destinations" + S +
"RestartStatus" + S +
"";
/**
@ -748,12 +748,13 @@ public class SummaryHelper extends HelperBase {
public List<String> getSummaryBarSections(String page) {
String config = "";
if ("home".equals(page))
if ("home".equals(page)) {
config = _context.getProperty(PROP_SUMMARYBAR + page, DEFAULT_MINIMAL);
else
config = _context.getProperty(PROP_SUMMARYBAR + page, null);
} else {
config = _context.getProperty(PROP_SUMMARYBAR + page);
if (config == null)
config = _context.getProperty(PROP_SUMMARYBAR + "default", DEFAULT_FULL);
}
return Arrays.asList(config.split("" + S));
}

View File

@ -23,7 +23,7 @@
// update disable boolean
intl.setDisableRefresh(d);
}
if (!intl.getDisableRefresh())
if (false && !intl.getDisableRefresh())
out.print("<noscript><iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\"></noscript>\n");
}
%>
@ -42,9 +42,9 @@
}
// d and allowIFrame defined above
if (!intl.getDisableRefresh()) {
if (false && !intl.getDisableRefresh()) {
out.print("</div><noscript></iframe></noscript>\n");
} else if (allowIFrame) {
} else if (false && allowIFrame) {
// since we don't have an iframe this will reload the base page, and
// the new delay will be passed to the iframe above
out.print("<noscript><div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n" +

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -279,7 +279,7 @@ class Connection {
void sendReset() {
if (_disconnectScheduledOn < 0) {
_disconnectScheduledOn = _context.clock().now();
SimpleScheduler.getInstance().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
_context.simpleScheduler().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
}
long now = _context.clock().now();
if (_resetSentOn + 10*1000 > now) return; // don't send resets too fast
@ -534,7 +534,7 @@ class Connection {
void resetReceived() {
if (_disconnectScheduledOn < 0) {
_disconnectScheduledOn = _context.clock().now();
SimpleScheduler.getInstance().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
_context.simpleScheduler().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
}
_resetReceived = true;
_outputStream.streamErrorOccurred(new IOException("Reset received"));
@ -578,7 +578,7 @@ class Connection {
if (removeFromConMgr) {
if (_disconnectScheduledOn < 0) {
_disconnectScheduledOn = _context.clock().now();
SimpleScheduler.getInstance().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
_context.simpleScheduler().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
}
}
_connected = false;
@ -796,7 +796,7 @@ class Connection {
_closeSentOn = when;
if (_disconnectScheduledOn < 0) {
_disconnectScheduledOn = _context.clock().now();
SimpleScheduler.getInstance().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
_context.simpleScheduler().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
}
}
public long getCloseReceivedOn() { return _closeReceivedOn; }

View File

@ -78,7 +78,7 @@ class ConnectionHandler {
// also check if expiration of the head is long past for overload detection with peek() ?
boolean success = _synQueue.offer(packet); // fail immediately if full
if (success) {
SimpleScheduler.getInstance().addEvent(new TimeoutSyn(packet), _acceptTimeout);
_context.simpleScheduler().addEvent(new TimeoutSyn(packet), _acceptTimeout);
} else {
if (_log.shouldLog(Log.WARN))
_log.warn("Dropping new SYN request, as the queue is full");

View File

@ -184,7 +184,7 @@ class ConnectionPacketHandler {
// take note of congestion
if (_log.shouldLog(Log.WARN))
_log.warn("congestion.. dup " + packet);
SimpleScheduler.getInstance().addEvent(new AckDup(con), con.getOptions().getSendAckDelay());
_context.simpleScheduler().addEvent(new AckDup(con), con.getOptions().getSendAckDelay());
//con.setNextSendTime(_context.clock().now() + con.getOptions().getSendAckDelay());
//fastAck = true;
} else {

View File

@ -17,7 +17,7 @@ abstract class SchedulerImpl implements TaskScheduler {
}
protected void reschedule(long msToWait, Connection con) {
SimpleScheduler.getInstance().addEvent(con.getConnectionEvent(), msToWait);
_context.simpleScheduler().addEvent(con.getConnectionEvent(), msToWait);
}
@Override

View File

@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-25 12:35+0000\n"
"POT-Creation-Date: 2012-07-26 19:55+0000\n"
"PO-Revision-Date: 2012-03-11 02:03+0000\n"
"Last-Translator: D.A. Loader <>\n"
"Language-Team: German (http://www.transifex.net/projects/p/I2P/language/"
@ -77,60 +77,60 @@ msgstr "unterschrieben"
msgid "Type {0}"
msgstr "Typ {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:202
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] "Ein Suchergebnis in der gefilterten Liste"
msgstr[1] "{0} Suchergebnisse in der gefilterten Liste"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "Die gefilterte Liste enthält einen Eintrag."
msgstr[1] "Die gefilterte Liste enthält {0} Einträge."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:211
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] "Die Suche erzielte einen Treffer."
msgstr[1] "Die Suche erzielte {0} Treffer."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:220
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "Das Adressbuch enthält einen Eintrag."
msgstr[1] "Das Adressbuch enthält {0} Einträge."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Showing {0} of {1}"
msgstr "Zeige {0} von {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412
msgid "Add"
msgstr "Hinzufügen"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410
msgid "Replace"
msgstr "Ersetzen"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238
#, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr "Der Name {0} ist bereits im Adressbuch und nicht geändert."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240
#, java-format
msgid ""
@ -140,63 +140,63 @@ msgstr ""
"Der Name {0} ist mit einem anderen Ziel bereits im Adressbuch. Klicken Sie "
"auf \"Ersetzen\", um den alten Eintrag zu überschreiben!"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:312
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
#, java-format
msgid "Destination added for {0}."
msgstr "Ziel hinzugefügt für {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255
#, java-format
msgid "Destination changed for {0}."
msgstr "Ziel geändert für {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:316
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
msgid "Warning - host name does not end with \".i2p\""
msgstr "Warnung - Hostname darf nicht auf \".i2p enden\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265
msgid "Invalid Base 64 destination."
msgstr "Ungültiges Basis-64 Ziel"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:327
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:271
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr "Ungültiger Hostname \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:330
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274
msgid "Please enter a host name and destination"
msgstr "Bitte geben Sie einen Hostnamen und ein Ziel ein!"
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:355
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:325
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274
msgid "Delete Entry"
msgstr "Eintrag löschen"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:347
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351
msgid "Delete Selected"
msgstr "Ausgewähltes löschen"
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:348
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295
#, java-format
msgid "Destination {0} deleted."
msgstr "Ziel {0} gelöscht"
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:351
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298
#, java-format
msgid "1 destination deleted."
@ -204,24 +204,24 @@ msgid_plural "{0} destinations deleted."
msgstr[0] "Ein Ziel gelöscht"
msgstr[1] "{0} Ziele gelöscht"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:353
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:323
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300
msgid "No entries selected to delete."
msgstr "Es wurden keine Einträge zum Löschen ausgewählt."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:361
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
msgid "Address book saved."
msgstr "Adressbuch gespeichert"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:364
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
msgid "ERROR: Could not write addressbook file."
msgstr "FEHLER: Konnte Adressbuchdatei nicht schreiben."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:369
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:339
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
@ -230,9 +230,9 @@ msgstr ""
"laden\"-Schalter in Ihrem Browser genutzt. Bitte neu senden!"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Save"
msgstr "Speichern"
@ -241,9 +241,9 @@ msgid "Configuration saved."
msgstr "Einstellungen gespeichert"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "Reload"
msgstr "Neu laden"
@ -270,18 +270,18 @@ msgstr "Konnte das Ziel für {0} nicht dem Domainnamenservice {1} hinzufügen"
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr "Konnte das Ziel für {0} nicht aus dem Domainnamenservice {1} löschen"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:115
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
"Abonnement gespeichert, aktualisiere jetzt das Adressbuch von untenstehenden "
"Aboquellen."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:120
msgid "Subscriptions saved."
msgstr "Abonnementquellen gespeichert"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:124
msgid "Subscriptions reloaded."
msgstr "Abonnementquellen neu geladen"
@ -289,166 +289,166 @@ msgstr "Abonnementquellen neu geladen"
msgid "address book"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:133
msgid "Overview"
msgstr "Übersicht"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "Address books"
msgstr "Adressbücher"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "private"
msgstr "privat"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "master"
msgstr "Master"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "router"
msgstr "Router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "published"
msgstr "veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Subscriptions"
msgstr "Abonnements"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:131
msgid "Configuration"
msgstr "Einstellungen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:134
msgid "Address book"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:139
msgid "Storage"
msgstr "Speicherort"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "Filter"
msgstr "Filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:175
msgid "other"
msgstr "andere"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "all"
msgstr "alle"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:191
msgid "Current filter"
msgstr "derzeitige Filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:192
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:196
msgid "clear filter"
msgstr "Filter löschen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:213
msgid "Search"
msgstr "Suche"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
msgid "Name"
msgstr "Name"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:248
msgid "Links"
msgstr "Links"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:266
msgid "Destination"
msgstr "Ziel"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:286
msgid "Mark for deletion"
msgstr "zum Löschen markieren"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:303
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "Base 32 address"
msgstr "Adresse (Basis32)"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:311
msgid "More information on this entry"
msgstr "Weitere Informationen über diesen Eintrag"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:310
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "details"
msgstr "Details"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:349
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Cancel"
msgstr "Abbruch"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:383
msgid "This address book is empty."
msgstr "Dieses Adressbuch ist leer."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
msgid "Add new destination"
msgstr "Füge neues Ziel hinzu"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:165
msgid "Host Name"
msgstr "Hostname"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
msgid "configuration"
msgstr "Einstellungen"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "Hints"
msgstr "Hinweise"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
@ -458,7 +458,7 @@ msgstr ""
"Adressbuchs - normalerweise ~/.i2p/addressbook/ (Linux) oder %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
@ -466,7 +466,7 @@ msgstr ""
"Falls Sie manuell Einträge zum Adressbuch hinzufügen möchten, fügen Sie "
"diese zum privaten oder zum Master-Adressbuch hinzu!"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
@ -474,7 +474,7 @@ msgstr ""
"Das Router-Adressbuch und das veröffentlichte Adressbuch werden von der "
"Adressbuch-Anwendung aktualisiert."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
@ -482,7 +482,7 @@ msgstr ""
"Falls Sie das Adressbuch veröffentlichen, erscheinen dort ALLE Ziele aus dem "
"Master- und dem Router-Adressbuch."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
@ -490,20 +490,20 @@ msgstr ""
"Benutzen Sie das private Adressbuch für private Ziele. Diese werden nicht "
"veröffentlicht."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Options"
msgstr "Optionen"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"Datei mit der Liste von Abonnement-URLs (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Update interval in hours"
msgstr "Aktualisierungsintervall in Stunden"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
@ -511,31 +511,31 @@ msgstr ""
"Ihre öffentliche hosts.txt-Datei (Wählen Sie einen Pfad in Ihrem Webserver "
"Wurzelverzeichnis!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid "Your hosts.txt (don't change)"
msgstr "Ihre hosts.txt (nicht ändern)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid "Your personal addressbook, these hosts will be published"
msgstr "Ihr persönliches Adressbuch - diese Hosteinträge werden veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "Your private addressbook, it is never published"
msgstr "Ihr privates Adressbuch - dieses wird nie veröffentlicht"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:179
msgid "Port for your eepProxy (no need to change)"
msgstr "Port zu Ihrem EepProxy (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:181
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Hostname zu Ihrem EepProxy (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:183
msgid "Whether to update the published addressbook"
msgstr "Soll Ihr veröffentlichtes Adressbuch aktualisiert werden?"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:185
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
@ -543,7 +543,7 @@ msgstr ""
"Datei, die die etags-Kopfzeilen der bereits aktualisierten Abonnement-URLs "
"enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:187
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
@ -551,85 +551,89 @@ msgstr ""
"Datei, welche die Zeitstempel der letzten Modifikation für jede bereits "
"aktualisierte Abonnement-URL enthält (braucht nicht geändert zu werden)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:189
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
"Berichte zu Aktivitäten werden in dieser Datei gespeichert. (Ändern Sie es "
"zu /dev/null, wenn Sie möchten!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:191
msgid "Name of the theme to use (defaults to 'light')"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "Adressbuch"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:181
msgid "Encoded Name"
msgstr "kodierter Name"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197
msgid "Base 32 Address"
msgstr "Basis32-Adresse"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:203
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "Base 64 Hash"
msgstr "Base 64 Hash"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:209
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "Address Helper"
msgstr "Adresshelfer"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "link"
msgstr "Link"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
msgid "Public Key"
msgstr "Öffentlicher Schlüssel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "ElGamal 2048 bit"
msgstr "ElGamal 2048 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
msgid "Signing Key"
msgstr "Authentifizierungsschlüssel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:228
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "DSA 1024 bit"
msgstr "DSA 1024 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
msgid "Certificate"
msgstr "Zertifikat"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
msgid "Added Date"
msgstr "Datum hinzugefügt"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
msgid "Source"
msgstr "Quelle"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
msgid "Last Modified"
msgstr "Zuletzt geändert:"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
msgid "Notes"
msgstr "Anmerkungen"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
msgid "Introduction"
msgstr "Einleitung - SusiDNS"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid "What is the addressbook?"
msgstr "Was ist das Adressbuch?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid "The addressbook application is part of your I2P installation."
msgstr "Das Adressbuch ist ein Teil Ihrer I2P-Installation."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
@ -637,7 +641,7 @@ msgstr ""
"Es aktualisiert regelmäßig Ihre hosts.txt-Datei aus verteilten Quellen oder "
"den \"Abonnementquellen\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
@ -645,7 +649,7 @@ msgstr ""
"In der Standardkonfiguration besteht lediglich ein Abonnement tu www.i2p2."
"i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
@ -653,7 +657,7 @@ msgstr ""
"Anderen Seiten zu Folgen ist einfach, füge sie einfach zu deiner <a href="
"\"subscriptions\">Subscriptions</a> Datei hinzu."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:140
msgid ""
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
@ -662,11 +666,11 @@ msgstr ""
"\"http://www.i2p2.i2p/naming.html\">die Erläuterungen auf www.i2p2.i2p</a> "
"verwiesen."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:142
msgid "How does the addressbook application work?"
msgstr "Wie funktioniert das Adressbuch?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:144
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
@ -674,13 +678,13 @@ msgstr ""
"Die Adressbuch-Anwendung bezieht regelmäßig Informationen von deinen "
"Abonnements und inkorporiert deren Inhalt in dein \"Router\"-Adressbuch."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr "Dann fügt sie noch den Inhalt des \"Master\"-Adressbuches hinzu."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:146
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
@ -689,7 +693,7 @@ msgstr ""
"Routeradressbuch nun in das \"veröffentlichte\" Adressbuch geschrieben, "
"welches öffentlich erreichbar ist, wenn du eine Eepsite betreibst."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:148
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
@ -697,7 +701,7 @@ msgstr ""
"Der Router benutzt ferner ein privates Adressbuch (nicht im Bild), welches "
"weder veröffentlich noch mit den anderen zusammengeführt wird."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
@ -705,7 +709,7 @@ msgstr ""
"Hosts aus dem privaten Adressbuch können von dir besucht werden, ihrer "
"Adressen werden jedoch nie an andere weitergegeben."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:150
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
@ -717,21 +721,21 @@ msgstr ""
msgid "subscriptions"
msgstr "Abonnements"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid "The subscription file contains a list of i2p URLs."
msgstr "Die Abonnementdatei enthält eine Liste von I2P-URLs."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:148
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"Die Adressbuchanwendung prüft diese Liste regelmäßig auf neue Eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "Those URLs refer to published hosts.txt files."
msgstr "Diese URLs verweisen auf veröffentlichte hosts.txt-Dateien."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:150
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
@ -739,7 +743,7 @@ msgstr ""
"Das Standardabonnement ist die hosts.txt-Datei von www.i2p2.i2p, welche "
"nicht regelmäßig aktualisiert wird."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
@ -747,6 +751,6 @@ msgstr ""
"Somit ist es eine gute Idee, weitere Abonnements von Seiten mit den neuesten "
"Adressen hinzuzufügen."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
msgid "See the FAQ for a list of subscription URLs."
msgstr "Schauen Sie in den FAQ nach einer Liste von Abonnement-URLs!"

View File

@ -5,6 +5,7 @@
#
# Translators:
# blabla, 2011.
# <blabla@trash-mail.com>, 2012.
# Carlos Diaz <cedpren@gmail.com>, 2011.
# foo <foo@bar>, 2009.
# mixxy, 2011.
@ -14,11 +15,11 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-25 12:34+0000\n"
"PO-Revision-Date: 2012-03-16 19:24+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
"language/es/)\n"
"POT-Creation-Date: 2012-07-26 19:45+0000\n"
"PO-Revision-Date: 2012-07-21 20:04+0000\n"
"Last-Translator: blabla <blabla@trash-mail.com>\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"
@ -78,7 +79,7 @@ msgstr "Firmado"
msgid "Type {0}"
msgstr "Tipo {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:202
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
@ -87,47 +88,47 @@ msgstr[0] ""
msgstr[1] ""
"{0} resultados para la búsqueda dentro de la lista de elementos filtrados."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "La lista de elementos filtrados contiene una entrada."
msgstr[1] "La lista de elementos filtrados contiene {0} entradas."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:211
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] "Un resultado para la búsqueda."
msgstr[1] "{0} resultados para la búsqueda"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:220
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "La libreta de direcciones contiene una entrada."
msgstr[1] "La libreta de direcciones contiente {0} entradas."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Showing {0} of {1}"
msgstr "Mostrando {0} de {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412
msgid "Add"
msgstr "Agregar"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410
msgid "Replace"
msgstr "Reemplazar"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238
#, java-format
msgid "Host name {0} is already in address book, unchanged."
@ -135,7 +136,7 @@ msgstr ""
"El nombre de host {0} ya se encuentra en la libreta de direcciones, "
"exactamente igual."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240
#, java-format
msgid ""
@ -146,63 +147,63 @@ msgstr ""
"con una dirección de destino diferente. Haz click en \"Reemplazar\" para "
"sobreescribirla."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:312
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
#, java-format
msgid "Destination added for {0}."
msgstr "Destino añadido para {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255
#, java-format
msgid "Destination changed for {0}."
msgstr "Destino cambiado para {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:316
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
msgid "Warning - host name does not end with \".i2p\""
msgstr "Advertencia - El nombre del host no termina en \".i2p\"."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265
msgid "Invalid Base 64 destination."
msgstr "Destino en Base 64 no válido"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:327
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:271
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr "Nombre del host inválido \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:330
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274
msgid "Please enter a host name and destination"
msgstr "Por favor, ¡introduce un nombre de host y destino!"
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:355
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:325
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274
msgid "Delete Entry"
msgstr "Borrar entrada"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:347
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351
msgid "Delete Selected"
msgstr "Eliminar seleccionados"
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:348
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295
#, java-format
msgid "Destination {0} deleted."
msgstr "Destino {0} eliminado."
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:351
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298
#, java-format
msgid "1 destination deleted."
@ -210,24 +211,24 @@ msgid_plural "{0} destinations deleted."
msgstr[0] "Una dirección de destino ha sido eliminada."
msgstr[1] "{0} direcciones de destino han sido eliminadas."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:353
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:323
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300
msgid "No entries selected to delete."
msgstr "No hay entradas seleccionadas para eliminar."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:361
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
msgid "Address book saved."
msgstr "La libreta de direcciones ha sido guardada."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:364
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
msgid "ERROR: Could not write addressbook file."
msgstr "ERROR: No se pudo escribir el archivo de la libreta direcciones."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:369
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:339
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
@ -237,9 +238,9 @@ msgstr ""
"¡vuelve a enviarlo!"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Save"
msgstr "Guardar"
@ -248,9 +249,9 @@ msgid "Configuration saved."
msgstr "Configuración guardada."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "Reload"
msgstr "Recargar"
@ -279,18 +280,18 @@ msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr ""
"Error al borrar la dirección de destino {0} del servicio de nombrado {1}"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:115
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
"Suscripciones guardadas, actualizando la libreta de direcciones a partir de "
"las fuentes de suscripción ahora."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:120
msgid "Subscriptions saved."
msgstr "Suscripciones guardadas."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:124
msgid "Subscriptions reloaded."
msgstr "Suscripciones recargadas."
@ -298,166 +299,166 @@ msgstr "Suscripciones recargadas."
msgid "address book"
msgstr "libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:133
msgid "Overview"
msgstr "Resumen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "Address books"
msgstr "Libretas de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "private"
msgstr "privado"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "master"
msgstr "principal"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "router"
msgstr "router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "published"
msgstr "publicado"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Subscriptions"
msgstr "Suscripciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:131
msgid "Configuration"
msgstr "Configuración"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:134
msgid "Address book"
msgstr "Libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:139
msgid "Storage"
msgstr "Almacenamiento"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "Filter"
msgstr "Filtro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:175
msgid "other"
msgstr "otros"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "all"
msgstr "todos"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:187
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:191
msgid "Current filter"
msgstr "Filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:192
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:196
msgid "clear filter"
msgstr "filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:213
msgid "Search"
msgstr "Buscar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
msgid "Name"
msgstr "Nombre"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:248
msgid "Links"
msgstr "Vínculos"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:262
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:266
msgid "Destination"
msgstr "Destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:286
msgid "Mark for deletion"
msgstr "Marcar para eliminar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:303
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "Base 32 address"
msgstr "Dirección a base de 32"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:311
msgid "More information on this entry"
msgstr "Más información sobre esta entrada"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:310
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "details"
msgstr "detalles"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:349
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Cancel"
msgstr "Cancelar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:379
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:383
msgid "This address book is empty."
msgstr "Esta libreta de direcciones está vacía."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
msgid "Add new destination"
msgstr "Añadir nuevo destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:165
msgid "Host Name"
msgstr "Nombre de Host"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
msgid "configuration"
msgstr "configuración"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "Hints"
msgstr "Consejos"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
@ -467,7 +468,7 @@ msgstr ""
"directorio de trabajo de la libreta de direcciones, que es normalmente ~/."
"i2p/addressbook/ (Linux) o %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
@ -475,7 +476,7 @@ msgstr ""
"Si deseas agregar manualmente líneas a una libreta de direcciones, añádelos "
"a la libreta de direcciones privada o maestra."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
@ -483,7 +484,7 @@ msgstr ""
"La libreta de direcciones del router y la libreta de direcciones publicada "
"son actualizadas por la aplicación libreta de direcciones."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
@ -491,7 +492,7 @@ msgstr ""
"Al publicar tu libro de direcciones, TODOS los destinos de la libreta "
"maestra y la libreta de direcciones del router aparecen ahí."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
@ -499,21 +500,21 @@ msgstr ""
"Utiliza la libreta de direcciones privada para destinos privados, éstos no "
"serán publicados."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Options"
msgstr "Opciones"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"El archivo que contiene la lista de suscripciones URL (no es necesario "
"cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Update interval in hours"
msgstr "Intervalo de actualización en horas"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
@ -521,31 +522,31 @@ msgstr ""
"Tu archivo hosts.txt público (¡elije una ruta dentro de la raíz de "
"documentos de tu servidor web!)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid "Your hosts.txt (don't change)"
msgstr "Tu hosts.txt (no cambiar)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid "Your personal addressbook, these hosts will be published"
msgstr "Tu libreta de direcciones personal, estos hosts serán publicados"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "Your private addressbook, it is never published"
msgstr "Tu libreta de direcciones privada, nunca se publica"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:179
msgid "Port for your eepProxy (no need to change)"
msgstr "Puerto para tu eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:181
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Nombre de la host para tu eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:183
msgid "Whether to update the published addressbook"
msgstr "Sea para actualizar la libreta de direcciones publicadas"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:185
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
@ -553,7 +554,7 @@ msgstr ""
"Archivo que contiene la cabecera de los etags desde la URL de subscripciones "
"capturada (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:187
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
@ -561,86 +562,90 @@ msgstr ""
"Archivo que contiene la fecha y hora de modificación para cada URL de "
"suscripción capturada (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:189
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
"El archivo en el que se guarda el registro de actividad (Cámbialo a /dev/"
"null si quieres)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:191
msgid "Name of the theme to use (defaults to 'light')"
msgstr "Nombre del tema escogido (por defecto: 'luminoso')"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:181
msgid "Encoded Name"
msgstr "Nombre codificado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197
msgid "Base 32 Address"
msgstr "Dirección a base de 32"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:203
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "Base 64 Hash"
msgstr "Hash en base 64"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:209
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "Address Helper"
msgstr "Manejador de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:216
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "link"
msgstr "vínculo"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
msgid "Public Key"
msgstr "Clave pública"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:222
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "ElGamal 2048 bit"
msgstr "ElGamal de 2048 bits"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
msgid "Signing Key"
msgstr "Clave de firmado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:228
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "DSA 1024 bit"
msgstr "DSA de 1024 bits"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
msgid "Certificate"
msgstr "Certificado"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
msgid "Added Date"
msgstr "Fecha añadida"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
msgid "Source"
msgstr "Fuente"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
msgid "Last Modified"
msgstr "Modificado por última vez"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:256
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
msgid "Notes"
msgstr "Notas"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
msgid "Introduction"
msgstr "Introducción"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid "What is the addressbook?"
msgstr "¿Qué es la libreta de direcciones?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid "The addressbook application is part of your I2P installation."
msgstr ""
"La aplicación de libreta de direcciones es parte de tu instalación de I2P."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
@ -648,7 +653,7 @@ msgstr ""
"Actualiza constantemente su archivo hosts.txt desde fuentes distribuidas o "
"\"suscripciones\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
@ -656,7 +661,7 @@ msgstr ""
"En la configuración por defecto, la libreta de direcciones sólo está "
"suscrita a www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
@ -664,7 +669,7 @@ msgstr ""
"Suscribirse a otras páginas es fácil, sólo añádelas a tu archivo de <a href="
"\"subscriptions\">subscripciones</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:140
msgid ""
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
@ -672,11 +677,11 @@ msgstr ""
"Para mayor información acerca del nombrado en I2P, consulta <a href=\"http://"
"www.i2p2.i2p/naming.html\">la información general en www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:142
msgid "How does the addressbook application work?"
msgstr "¿Cómo funciona la libreta de direcciones?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:144
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
@ -684,7 +689,7 @@ msgstr ""
"La aplicación de libreta de direcciones examina tus suscripciones e "
"incorpora su contenido a tu libreta de direcciones del \"router\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
@ -692,7 +697,7 @@ msgstr ""
"Luego también incluye los contenidos de tu libreta de direcciones \"principal"
"\" en aquella del router."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:146
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
@ -701,7 +706,7 @@ msgstr ""
"contenidos a la libreta de direcciones \"publicada\", la cual estará "
"disponible públicamente si estás corriendo un sitio i2p própio."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:148
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
@ -709,7 +714,7 @@ msgstr ""
"El router también utiliza una libreta de direcciones privada (no mostrada en "
"la figura), la cual ni se incorpora a ninguna otra libreta ni se publica."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
msgid ""
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
@ -717,7 +722,7 @@ msgstr ""
"Puedes visitar a los hosts que aparecen en tu libreta de direcciones "
"privada, pero sus direcciones no se distribuyen a terceros."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:150
msgid ""
"The private address book can also be used for aliases of hosts in your other "
"address books."
@ -729,22 +734,22 @@ msgstr ""
msgid "subscriptions"
msgstr "suscripciones"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid "The subscription file contains a list of i2p URLs."
msgstr "El archivo de suscripción contiene una lista de URLs I2P."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:148
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"La aplicación de libreta de direcciones comprueba regularmente esta lista en "
"busca de nuevos eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "Those URLs refer to published hosts.txt files."
msgstr "Esas URLs referencian a los archivos hosts.txt publicados."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:150
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
@ -752,7 +757,7 @@ msgstr ""
"La suscripción por defecto es el hosts.txt de www.i2p2.i2p, que se actualiza "
"con poca frecuencia."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
@ -760,7 +765,7 @@ msgstr ""
"Por lo tanto, es una buena idea agregar suscripciones adicionales a sitios "
"que tengan las direcciones más recientes."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
msgid "See the FAQ for a list of subscription URLs."
msgstr ""
"Ver las preguntas frecuentes para obtener una lista de direcciones URL de "

File diff suppressed because it is too large Load Diff

View File

@ -9,220 +9,227 @@
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2012-03-07 00:52+0000\n"
"PO-Revision-Date: 2012-03-09 18:23+0000\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-26 19:11+0000\n"
"PO-Revision-Date: 2012-07-23 16:33+0000\n"
"Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/language/sv_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"
"Language: sv_SE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:131
#: ../src/java/src/i2p/susi/dns/AddressBean.java:130
#, java-format
msgid "Host name \"{0}\" contains illegal character {1}"
msgstr " Värdnamn \"{0}\" innehåller ogiltigttecken {1}"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:144
#: ../src/java/src/i2p/susi/dns/AddressBean.java:146
#: ../src/java/src/i2p/susi/dns/AddressBean.java:153
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
#, java-format
msgid "Host name cannot start with \"{0}\""
msgstr " Värdnamn kan inte börja med \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:148
#: ../src/java/src/i2p/susi/dns/AddressBean.java:150
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
#, java-format
msgid "Host name cannot end with \"{0}\""
msgstr " Värdnamn kan inte avslutas med \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:155
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
#, java-format
msgid "Host name cannot contain \"{0}\""
msgstr " Värdnamn kan inte innehålla \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:158
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
#, java-format
msgid ""
"Host name \"{0}\" requires conversion to ASCII but the conversion library is"
" unavailable in this JVM"
msgstr "Värdnamnet \"{0}\" kräver konvertering till ASCII men konverterings biblioteket är inte tillgängligt i denna JVM"
"Host name \"{0}\" requires conversion to ASCII but the conversion library is "
"unavailable in this JVM"
msgstr ""
"Värdnamnet \"{0}\" kräver konvertering till ASCII men konverterings "
"biblioteket är inte tillgängligt i denna JVM"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
#: ../src/java/src/i2p/susi/dns/AddressBean.java:218
msgid "None"
msgstr "Ingen"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:227
#: ../src/java/src/i2p/susi/dns/AddressBean.java:226
msgid "Hashcash"
msgstr "Hashcash"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:229
#: ../src/java/src/i2p/susi/dns/AddressBean.java:228
msgid "Hidden"
msgstr "Dold"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:231
#: ../src/java/src/i2p/susi/dns/AddressBean.java:230
msgid "Signed"
msgstr "Signerad"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:233
#: ../src/java/src/i2p/susi/dns/AddressBean.java:232
#, java-format
msgid "Type {0}"
msgstr "Typ {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:233
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:202
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] "Ett resultat för sökning i filtrerlistan."
msgstr[1] "{0} resultat för sökning i filtrerlistan ."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:237
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "Filtrerlistan innehåller 1 post."
msgstr[1] "Filtrerlistan innehåller {0} poster."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:242
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:211
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] "Ett resultat på sökningen."
msgstr[1] "{0} resultat på sökningen."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:251
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:220
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "Adressboken innehåller 1 post."
msgstr[1] "Adressboken innehåller {0} poster."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Showing {0} of {1}"
msgstr "Visar {0} av {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:406
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:412
msgid "Add"
msgstr "Lägg till"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:268
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:227
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:239
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:410
msgid "Replace"
msgstr "Ersätt "
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:267
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:238
#, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr "Värdnamnet {0} finns redan i adressboken, oförändrat."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:240
#, java-format
msgid ""
"Host name {0} is already in address book with a different destination. Click"
" \"Replace\" to overwrite."
msgstr "Värdnamnet {0} finns redan i adressboken med en annan destination. Klicka på \"Ersätt\"för att skriva över."
"Host name {0} is already in address book with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
"Värdnamnet {0} finns redan i adressboken med en annan destination. Klicka på "
"\"Ersätt\"för att skriva över."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
#, java-format
msgid "Destination added for {0}."
msgstr "Mål till lagt för {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:255
#, java-format
msgid "Destination changed for {0}."
msgstr "Målet ändrat för {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:317
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
msgid "Warning - host name does not end with \".i2p\""
msgstr "Varning - värdnamn slutar inte med \".i2p\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:322
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:265
msgid "Invalid Base 64 destination."
msgstr "Ogiltigt Base 64 mål"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:271
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr "Ogiltigt värdnamn \"{0}\"."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:300
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:274
msgid "Please enter a host name and destination"
msgstr "Ange värdnamn och destination"
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:356
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:268
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:325
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:303
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:274
msgid "Delete Entry"
msgstr "Ta bort post"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:335
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:351
msgid "Delete Selected"
msgstr "Radera valda"
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:349
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:295
#, java-format
msgid "Destination {0} deleted."
msgstr "mål {0} raderat."
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:298
#, java-format
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
msgstr[0] "1 mål raderat."
msgstr[1] "{0} mål raderade."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:323
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:300
msgid "No entries selected to delete."
msgstr "Inga uppgifter valda för radering."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:362
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:331
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
msgid "Address book saved."
msgstr "Adressbok sparad."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:365
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:334
msgid "ERROR: Could not write addressbook file."
msgstr "FEL: Kunde inte skriva till adressboks filen."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:370
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:339
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
msgid ""
"Invalid form submission, probably because you used the \"back\" or "
"\"reload\" button on your browser. Please resubmit."
msgstr "Felaktigt formulär, förmodligen för att du använde \"Bakåt \" eller \"Uppdaterings\" knappen i din webbläsare. Försök skicka igen."
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"Felaktigt formulär, förmodligen för att du använde \"Bakåt \" eller "
"\"Uppdaterings\" knappen i din webbläsare. Försök skicka igen."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:103
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
msgid "Save"
msgstr "Spara"
@ -231,9 +238,9 @@ msgid "Configuration saved."
msgstr "Inställningarna sparas."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:137
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:122
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
msgid "Reload"
msgstr "Ladda om"
@ -241,456 +248,497 @@ msgstr "Ladda om"
msgid "Configuration reloaded."
msgstr "Konfiguration laddas om."
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:105
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:101
#, java-format
msgid "{0} address book in {1} database"
msgstr "{0} adressboken i {1} databas"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:252
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:248
msgid "Manually added via SusiDNS"
msgstr "Manuellt tillagda via SusiDNS"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:266
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr "Kunde inte lägga till målet för {0} till namntjänsten {1}"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:290
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:286
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr "Det gick inte att ta bort målet för {0} från namntjänsten {1}"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:115
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr "Abonnemang sparade, uppdatering adressbok från abonnemangs källorna nu."
msgstr ""
"Abonnemang sparade, uppdatering adressbok från abonnemangs källorna nu."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:120
msgid "Subscriptions saved."
msgstr "Abonnemang sprade"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:124
msgid "Subscriptions reloaded."
msgstr "Abonnemang laddas om."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
msgid "address book"
msgstr "adressboken"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:133
msgid "Overview"
msgstr "Översikt"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:113
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
msgid "Address books"
msgstr "Adressböcker"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:115
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
msgid "private"
msgstr "privat"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
msgid "master"
msgstr "master"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:119
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
msgid "router"
msgstr "router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:127
msgid "published"
msgstr "publicerad"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:129
msgid "Subscriptions"
msgstr "Abonnemang"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:131
msgid "Configuration"
msgstr "Konfiguration"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:134
msgid "Address book"
msgstr "Adressbok"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:139
msgid "Storage"
msgstr "Förvaring"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "Filter"
msgstr "Filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:175
msgid "other"
msgstr "andra"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "all"
msgstr "alla"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:191
msgid "Current filter"
msgstr "Nuvarande filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:196
msgid "clear filter"
msgstr "rensa filter"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:203
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:209
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:213
msgid "Search"
msgstr "Sök"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:246
msgid "Name"
msgstr "Namn"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:248
msgid "Links"
msgstr "Länkar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:244
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:250
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:404
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:266
msgid "Destination"
msgstr "Mål"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:280
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:286
msgid "Mark for deletion"
msgstr "Markera för att raderas"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:301
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:307
msgid "Base 32 address"
msgstr "Base 32 adress"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:305
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:311
msgid "More information on this entry"
msgstr "Mer information om den här posten"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:308
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "details"
msgstr "detaljer"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:343
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:402
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:349
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:408
msgid "Cancel"
msgstr "Avbryt"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:377
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:383
msgid "This address book is empty."
msgstr "Denna adressbok är tom"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:398
msgid "Add new destination"
msgstr "Lägg till nytt mål"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:394
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:400
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:165
msgid "Host Name"
msgstr "Värdnamn"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:119
msgid "configuration"
msgstr "konfiguration"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
msgid "Hints"
msgstr "Tips"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or "
"%APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "Fil och katalog sökvägar anges här i förhållande till adressboken arbetskatalog, som normalt är ~/.i2p/addressbook/ (Linux) eller %APPDATA%\\I2P\\addressbook\\ (Windows)."
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"Fil och katalog sökvägar anges här i förhållande till adressboken "
"arbetskatalog, som normalt är ~/.i2p/addressbook/ (Linux) eller %APPDATA%"
"\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
msgid ""
"If you want to manually add lines to an addressbook, add them to the private"
" or master addressbooks."
msgstr "Om du manuellt vill lägga till rader i en adressboken, lägg till dem i den privata eller master adressboken."
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"Om du manuellt vill lägga till rader i en adressboken, lägg till dem i den "
"privata eller master adressboken."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr "Routerns adressbok och den publicerade adressboken uppdateras av adressboksprogrammet."
msgstr ""
"Routerns adressbok och den publicerade adressboken uppdateras av "
"adressboksprogrammet."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr "När du publicerar din adressbok, Kommer samtliga destinationer från master och routerns adressböcker visas där."
msgstr ""
"När du publicerar din adressbok, Kommer samtliga destinationer från master "
"och routerns adressböcker visas där."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:149
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr "Använd privata adressboken för privata mål, dessa inte publiceras inte."
msgstr ""
"Använd privata adressboken för privata mål, dessa inte publiceras inte."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:151
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
msgid "Options"
msgstr "Alternativ"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:153
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "Fil som innehåller en förteckning över prenumerations URLer (ingen anledning att ändra)"
msgstr ""
"Fil som innehåller en förteckning över prenumerations URLer (ingen anledning "
"att ändra)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:155
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
msgid "Update interval in hours"
msgstr "Uppdaterings intervall i timmar"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:157
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr "Din publika hosts.txt fil (välj en sökväg till din webbservers dokumentrot)"
msgstr ""
"Din publika hosts.txt fil (välj en sökväg till din webbservers dokumentrot)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:159
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
msgid "Your hosts.txt (don't change)"
msgstr "Din hosts.tx (ändra inte)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:161
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
msgid "Your personal addressbook, these hosts will be published"
msgstr "Din personliga adressbok, dessa värdar kommer att publiceras"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:177
msgid "Your private addressbook, it is never published"
msgstr "Din privata adressbok, den publiceras aldrig"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:165
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:179
msgid "Port for your eepProxy (no need to change)"
msgstr "Port för din eepProxy (du behöver inte ändra)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:167
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:181
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Värd namn fär din eepProxy (du behöver inte ändra)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:169
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:183
msgid "Whether to update the published addressbook"
msgstr "Huruvida du vill uppdatera den publicerade adressboken"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:171
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:185
msgid ""
"File containing the etags header from the fetched subscription URLs (no need"
" to change)"
msgstr "Fil som innehåller etags header från hämtade prenumeration URLer (du behöver inte ändra)"
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
"Fil som innehåller etags header från hämtade prenumeration URLer (du behöver "
"inte ändra)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:173
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:187
msgid ""
"File containing the modification timestamp for each fetched subscription URL"
" (no need to change)"
msgstr "Fil som innehåller en ändring tidsstämpeln för varje hämtade prenumeration URL (behävs inte ändras)"
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
"Fil som innehåller en ändring tidsstämpeln för varje hämtade prenumeration "
"URL (behävs inte ändras)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:189
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "Fil loggaktivitet sparas till (ändra till / dev / null om du vill)"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:191
msgid "Name of the theme to use (defaults to 'light')"
msgstr "Namn på temat som används (förvalt som 'ljus')"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
msgid "addressbook"
msgstr "adressbok"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:175
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:181
msgid "Encoded Name"
msgstr "Kodat namn"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:191
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:197
msgid "Base 32 Address"
msgstr "Base 32 Adress"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "Base 64 Hash"
msgstr "Bas 64 Hash"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "Address Helper"
msgstr "Adress hjälp"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:214
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
msgid "link"
msgstr "länk"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:218
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
msgid "Public Key"
msgstr "Publik nyckel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:220
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
msgid "ElGamal 2048 bit"
msgstr "ElGamal 2048 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:224
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
msgid "Signing Key"
msgstr "Signeringsnyckel"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
msgid "DSA 1024 bit"
msgstr "DSA 1024 bit"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:230
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
msgid "Certificate"
msgstr "Certifikat"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:236
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
msgid "Added Date"
msgstr "Datum för tillagd"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
msgid "Source"
msgstr "Källa"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:248
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
msgid "Last Modified"
msgstr "Senast modifierad"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:254
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:260
msgid "Notes"
msgstr "Anteckningar"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:100
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:110
msgid "Introduction"
msgstr "Inledning"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
msgid "What is the addressbook?"
msgstr "Vad är adressboken?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
msgid "The addressbook application is part of your I2P installation."
msgstr "Adressboksprogrammet en del av din I2P installation."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr "Den uppdaterar din regelbundet hosts.txt fil från distribuerade källor eller \"subscriptions\"."
msgstr ""
"Den uppdaterar din regelbundet hosts.txt fil från distribuerade källor eller "
"\"subscriptions\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
msgid ""
"In the default configuration, the address book is only subscribed to "
"www.i2p2.i2p."
msgstr "I standardkonfigurationen prenumererar adressboken bara på www.i2p2.i2p."
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
msgstr ""
"I standardkonfigurationen prenumererar adressboken bara på www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:138
msgid ""
"Subscribing to additional sites is easy, just add them to your <a "
"href=\"subscriptions\">subscriptions</a> file."
msgstr "Att prenumerera på ytterligare siter är enkelt, lägg bara till dem i din <a href=\"subscriptions\">subscriptions</a> fil. "
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions\">subscriptions</a> file."
msgstr ""
"Att prenumerera på ytterligare siter är enkelt, lägg bara till dem i din <a "
"href=\"subscriptions\">subscriptions</a> fil. "
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:126
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:140
msgid ""
"For more information on naming in I2P, see <a "
"href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "För mer information om namngivning i I2P, se <a href=\"http://www.i2p2.i2p/naming.html\"> översikten på www.i2p2.i2p </a>."
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"För mer information om namngivning i I2P, se <a href=\"http://www.i2p2.i2p/"
"naming.html\"> översikten på www.i2p2.i2p </a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:142
msgid "How does the addressbook application work?"
msgstr "Hur fungerar adressboksprogrammet?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:144
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
msgstr "Adressboksprogrammet kontaktar med jämna mellanrum dina prenumerationer och sammanfogar deras innehåll med din \"router\" adressbok."
msgstr ""
"Adressboksprogrammet kontaktar med jämna mellanrum dina prenumerationer och "
"sammanfogar deras innehåll med din \"router\" adressbok."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr "Då sammanfogas \"master\" adressboken med routeradressboken också."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:146
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an "
"eepsite."
msgstr "Om konfigurerad så skrivit router adressboken till \"published\" adressboken, som är tillgänglig om du kör en eepsite."
"address book, which will be publicly available if you are running an eepsite."
msgstr ""
"Om konfigurerad så skrivit router adressboken till \"published\" "
"adressboken, som är tillgänglig om du kör en eepsite."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:134
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:148
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr "Routern använder också den privat adressbok (syns ej på bilden) som inte är samman kopplade eller publicerad."
msgstr ""
"Routern använder också den privat adressbok (syns ej på bilden) som inte är "
"samman kopplade eller publicerad."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
msgid ""
"Hosts in the private address book can be accessed by you but their addresses"
" are never distributed to others."
msgstr "Värdar i den privata adressboken kan nås av dig, men adresserna delas aldrig ut till andra."
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"Värdar i den privata adressboken kan nås av dig, men adresserna delas "
"aldrig ut till andra."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:150
msgid ""
"The private address book can also be used for aliases of hosts in your other"
" address books."
msgstr "Den privata adressboken kan också användas för alias för värdar i andra adressböcker."
"The private address book can also be used for aliases of hosts in your other "
"address books."
msgstr ""
"Den privata adressboken kan också användas för alias för värdar i andra "
"adressböcker."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:109
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:111
msgid "subscriptions"
msgstr "abonnemang"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
msgid "The subscription file contains a list of i2p URLs."
msgstr "Abonnemangs filen innehåller lista över I2P webbadresser."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:148
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr "Adressboks programet kontrollerar regelbundet listan för nya eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
msgid "Those URLs refer to published hosts.txt files."
msgstr "Dessa URLer hänvisar till publicerade hosts.txt filer."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:150
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr "Den förvalda prenumeration är hosts.txt från www.i2p2.i2p uppdateras sällan."
msgstr ""
"Den förvalda prenumeration är hosts.txt från www.i2p2.i2p uppdateras sällan."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr "Så det är bra idé att lägga till ytterligare prenumerationer till sajter som har de senaste adresserna."
msgstr ""
"Så det är bra idé att lägga till ytterligare prenumerationer till sajter som "
"har de senaste adresserna."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:147
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
msgid "See the FAQ for a list of subscription URLs."
msgstr "Se FAQ för en lista över prenumerations URLer."

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-25 12:35+0000\n"
"POT-Creation-Date: 2012-07-26 19:55+0000\n"
"PO-Revision-Date: 2012-02-19 14:04+0000\n"
"Last-Translator: D.A. Loader <>\n"
"Language-Team: German (http://www.transifex.net/projects/p/I2P/language/"
@ -25,428 +25,428 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/src/i2p/susi/webmail/WebMail.java:435
#: src/src/i2p/susi/webmail/WebMail.java:439
msgid "unknown"
msgstr "unbekannt"
#: src/src/i2p/susi/webmail/WebMail.java:454
#: src/src/i2p/susi/webmail/WebMail.java:458
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Warnung: keine Übertragungskodierung gefunden, Rückgriff auf 7-bit"
#: src/src/i2p/susi/webmail/WebMail.java:459
#: src/src/i2p/susi/webmail/WebMail.java:463
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "kein Kodierer für Kodierung \\''{0}\\'' gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:465
#: src/src/i2p/susi/webmail/WebMail.java:469
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Warnung: kein Zeichensatz gefunden; Rückgriff auf US-ASCII"
#: src/src/i2p/susi/webmail/WebMail.java:479
#: src/src/i2p/susi/webmail/WebMail.java:483
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Zeichensatz \\''{0}\\'' nicht unterstützt"
#: src/src/i2p/susi/webmail/WebMail.java:483
#: src/src/i2p/susi/webmail/WebMail.java:487
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Teil ({0}) aufgrund von {1} nicht angezeigt"
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "Download"
msgstr "Herunterladen"
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "File is packed into a zipfile for security reasons."
msgstr "Die Datei wurde aus Sicherheitsgründen in ein Zip-Archiv gepackt."
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
#, java-format
msgid "attachment ({0})."
msgstr "Anhang ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:510
#: src/src/i2p/susi/webmail/WebMail.java:514
#, java-format
msgid "Attachment ({0})."
msgstr "Anhang ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:560
#: src/src/i2p/susi/webmail/WebMail.java:564
msgid "Need username for authentication."
msgstr "Benutzername zur Authentifizierung benötigt"
#: src/src/i2p/susi/webmail/WebMail.java:564
#: src/src/i2p/susi/webmail/WebMail.java:568
msgid "Need password for authentication."
msgstr "Passwort zur Authentifizierung benötigt"
#: src/src/i2p/susi/webmail/WebMail.java:568
#: src/src/i2p/susi/webmail/WebMail.java:572
msgid "Need hostname for connect."
msgstr "Host-Name für die Verbindung benötigt"
#: src/src/i2p/susi/webmail/WebMail.java:573
#: src/src/i2p/susi/webmail/WebMail.java:577
msgid "Need port number for pop3 connect."
msgstr "POP3-Port für die Verbindung benötigt"
#: src/src/i2p/susi/webmail/WebMail.java:580
#: src/src/i2p/susi/webmail/WebMail.java:584
msgid "POP3 port number is not in range 0..65535."
msgstr "Der POP3-Port liegt nicht im Bereich 0-65535."
#: src/src/i2p/susi/webmail/WebMail.java:586
#: src/src/i2p/susi/webmail/WebMail.java:590
msgid "POP3 port number is invalid."
msgstr "ungültiger POP3-Port"
#: src/src/i2p/susi/webmail/WebMail.java:592
#: src/src/i2p/susi/webmail/WebMail.java:596
msgid "Need port number for smtp connect."
msgstr "SMTP-Port für die SMTP-Verbindung benötigt"
#: src/src/i2p/susi/webmail/WebMail.java:599
#: src/src/i2p/susi/webmail/WebMail.java:603
msgid "SMTP port number is not in range 0..65535."
msgstr "Der SMTP-Port liegt nicht im Bereich 0-65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
#: src/src/i2p/susi/webmail/WebMail.java:609
msgid "SMTP port number is invalid."
msgstr "ungültiger SMTP-Port"
#: src/src/i2p/susi/webmail/WebMail.java:652
#: src/src/i2p/susi/webmail/WebMail.java:656
msgid "User logged out."
msgstr "Benutzer wurde abgemeldet"
#: src/src/i2p/susi/webmail/WebMail.java:656
#: src/src/i2p/susi/webmail/WebMail.java:660
msgid "Internal error, lost connection."
msgstr "interner Fehler; Verbindung unterbrochen"
#: src/src/i2p/susi/webmail/WebMail.java:752
#: src/src/i2p/susi/webmail/WebMail.java:756
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Am {0} schrieb {1}:"
#: src/src/i2p/susi/webmail/WebMail.java:799
#: src/src/i2p/susi/webmail/WebMail.java:803
msgid "begin forwarded mail"
msgstr "Anfang weitergeleiteter Nachricht"
#: src/src/i2p/susi/webmail/WebMail.java:821
#: src/src/i2p/susi/webmail/WebMail.java:825
msgid "end forwarded mail"
msgstr "Ende weitergeleiteter Nachricht"
#: src/src/i2p/susi/webmail/WebMail.java:828
#: src/src/i2p/susi/webmail/WebMail.java:1701
#: src/src/i2p/susi/webmail/WebMail.java:832
#: src/src/i2p/susi/webmail/WebMail.java:1707
msgid "Could not fetch mail body."
msgstr "konnte den Körper der Nachricht nicht holen"
#: src/src/i2p/susi/webmail/WebMail.java:856
#: src/src/i2p/susi/webmail/WebMail.java:860
msgid "Message id not valid."
msgstr "ungültige Nachrichten-ID"
#: src/src/i2p/susi/webmail/WebMail.java:939
#: src/src/i2p/susi/webmail/WebMail.java:943
#, java-format
msgid "No Encoding found for {0}"
msgstr "keine Kodierung für {0} gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:943
#: src/src/i2p/susi/webmail/WebMail.java:947
#, java-format
msgid "Could not encode data: {0}"
msgstr "Konte Daten nicht kodieren: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:948
#: src/src/i2p/susi/webmail/WebMail.java:952
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Fehler beim Lesen der hochzuladenen Datei: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1026
#: src/src/i2p/susi/webmail/WebMail.java:1030
msgid "Error parsing download parameter."
msgstr "Fehler beim Parsen des Download-Parameters"
#: src/src/i2p/susi/webmail/WebMail.java:1070
#: src/src/i2p/susi/webmail/WebMail.java:1074
msgid "Invalid pagesize number, resetting to default value."
msgstr "ungültige Seitengröße, wird auf Standardwert zurückgesetzt"
#: src/src/i2p/susi/webmail/WebMail.java:1094
#: src/src/i2p/susi/webmail/WebMail.java:1098
msgid "No messages marked for deletion."
msgstr "Keine Nachrichten zum Löschen markiert"
#: src/src/i2p/susi/webmail/WebMail.java:1114
#: src/src/i2p/susi/webmail/WebMail.java:1118
#, java-format
msgid "Error deleting message: {0}"
msgstr "Fehler beim Löschen der Nachricht: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1125
#: src/src/i2p/susi/webmail/WebMail.java:1129
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "Eine Nachricht gelöscht"
msgstr[1] "{0} Nachrichten gelöscht"
#: src/src/i2p/susi/webmail/WebMail.java:1248
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1254
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Login"
msgstr "Anmelden"
#: src/src/i2p/susi/webmail/WebMail.java:1250
#: src/src/i2p/susi/webmail/WebMail.java:1256
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "Eine Nachricht"
msgstr[1] "{0} Nachrichten"
#: src/src/i2p/susi/webmail/WebMail.java:1252
#: src/src/i2p/susi/webmail/WebMail.java:1258
msgid "Show Message"
msgstr "Nachricht anzeigen"
#: src/src/i2p/susi/webmail/WebMail.java:1314
#: src/src/i2p/susi/webmail/WebMail.java:1320
#, java-format
msgid "Error decoding content: {0}"
msgstr "Fehler beim Dekodieren des Inhalts: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1319
#: src/src/i2p/susi/webmail/WebMail.java:1325
msgid "Error decoding content: No encoder found."
msgstr "Fehler bei der Dekodierung: kein Kodierer gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1366
#: src/src/i2p/susi/webmail/WebMail.java:1372
msgid "no subject"
msgstr "kein Betreff"
#: src/src/i2p/susi/webmail/WebMail.java:1383
#: src/src/i2p/susi/webmail/WebMail.java:1389
msgid "Found no valid sender address."
msgstr "Keine gültige Absenderadresse vorgefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1389
#: src/src/i2p/susi/webmail/WebMail.java:1395
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "keine gültige Adresse in \\''{0}\\''"
#: src/src/i2p/susi/webmail/WebMail.java:1408
#: src/src/i2p/susi/webmail/WebMail.java:1414
msgid "No recipients found."
msgstr "keine Empfänger gefunden"
#: src/src/i2p/susi/webmail/WebMail.java:1415
#: src/src/i2p/susi/webmail/WebMail.java:1421
msgid "Quoted printable encoder not available."
msgstr "Der angegebene druckbare Kodierer ist nicht verfügbar."
#: src/src/i2p/susi/webmail/WebMail.java:1420
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Header line encoder not available."
msgstr "Kodierer für die Kopfzeilen nicht verfügbar"
#: src/src/i2p/susi/webmail/WebMail.java:1471
#: src/src/i2p/susi/webmail/WebMail.java:1477
msgid "Mail sent."
msgstr "Mail versandt."
#: src/src/i2p/susi/webmail/WebMail.java:1510
#: src/src/i2p/susi/webmail/WebMail.java:1516
msgid "Send"
msgstr "Senden"
#: src/src/i2p/susi/webmail/WebMail.java:1511
#: src/src/i2p/susi/webmail/WebMail.java:1517
msgid "Cancel"
msgstr "Abbruch"
#: src/src/i2p/susi/webmail/WebMail.java:1512
#: src/src/i2p/susi/webmail/WebMail.java:1518
msgid "Delete Attachment"
msgstr "Anhang löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1513
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
#: src/src/i2p/susi/webmail/WebMail.java:1519
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Reload Config"
msgstr "Einstellungen neu laden"
#: src/src/i2p/susi/webmail/WebMail.java:1514
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
#: src/src/i2p/susi/webmail/WebMail.java:1520
#: src/src/i2p/susi/webmail/WebMail.java:1614
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Logout"
msgstr "Abmelden"
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1543
#: src/src/i2p/susi/webmail/WebMail.java:1699
msgid "From:"
msgstr "Von:"
#: src/src/i2p/susi/webmail/WebMail.java:1538
#: src/src/i2p/susi/webmail/WebMail.java:1544
msgid "To:"
msgstr "An:"
#: src/src/i2p/susi/webmail/WebMail.java:1539
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Cc:"
msgstr "Kopie an:"
#: src/src/i2p/susi/webmail/WebMail.java:1540
#: src/src/i2p/susi/webmail/WebMail.java:1546
msgid "Bcc:"
msgstr "Blindkopie an:"
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1695
#: src/src/i2p/susi/webmail/WebMail.java:1547
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Subject:"
msgstr "Betreff:"
#: src/src/i2p/susi/webmail/WebMail.java:1542
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Bcc to self"
msgstr "Blindkopie zurück?"
#: src/src/i2p/susi/webmail/WebMail.java:1545
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "New Attachment:"
msgstr "Neuer Anhang:"
#: src/src/i2p/susi/webmail/WebMail.java:1545
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Upload File"
msgstr "Datei hochladen"
#: src/src/i2p/susi/webmail/WebMail.java:1551
#: src/src/i2p/susi/webmail/WebMail.java:1557
msgid "Attachments:"
msgstr "Anhänge:"
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1574
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "User"
msgstr "Benutzer"
#: src/src/i2p/susi/webmail/WebMail.java:1575
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "Password"
msgstr "Passwort"
#: src/src/i2p/susi/webmail/WebMail.java:1580
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1581
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "POP3-Port"
msgstr "POP3-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1582
#: src/src/i2p/susi/webmail/WebMail.java:1588
msgid "SMTP-Port"
msgstr "SMTP-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Reset"
msgstr "Zurücksetzen"
#: src/src/i2p/susi/webmail/WebMail.java:1586
#: src/src/i2p/susi/webmail/WebMail.java:1592
msgid "Learn about I2P mail"
msgstr "Erfahre etwas über I2P Mail"
#: src/src/i2p/susi/webmail/WebMail.java:1587
#: src/src/i2p/susi/webmail/WebMail.java:1593
msgid "Create Account"
msgstr "Konto anlegen"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Really delete the marked messages?"
msgstr "Sollen die markierten Nachrichten wirklich gelöscht werden?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Yes, really delete them!"
msgstr "Ja, löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "New"
msgstr "Verfassen"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reply"
msgstr "Antworten"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reply All"
msgstr "Allen antworten"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Forward"
msgstr "Weiterleiten"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1690
msgid "Delete"
msgstr "Löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Check Mail"
msgstr "Nachrichten abrufen"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1616
msgid "Sender"
msgstr "Absender"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1617
msgid "Subject"
msgstr "Betreff"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1618
msgid "Date"
msgstr "Datum"
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1619
msgid "Size"
msgstr "Größe"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#: src/src/i2p/susi/webmail/WebMail.java:1645
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1644
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "Mark All"
msgstr "Alles markieren"
#: src/src/i2p/susi/webmail/WebMail.java:1645
#: src/src/i2p/susi/webmail/WebMail.java:1651
msgid "Invert Selection"
msgstr "Markierung umkehren"
#: src/src/i2p/susi/webmail/WebMail.java:1646
#: src/src/i2p/susi/webmail/WebMail.java:1652
msgid "Clear"
msgstr "Verwerfen"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
msgid "First"
msgstr "erste"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1691
msgid "Previous"
msgstr "vorherige"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#: src/src/i2p/susi/webmail/WebMail.java:1657
#, java-format
msgid "Page {0} of {1}"
msgstr "Seite {0} von {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
msgid "Last"
msgstr "letzte"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1692
msgid "Next"
msgstr "nächste"
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1663
msgid "Pagesize:"
msgstr "Seitengröße"
#: src/src/i2p/susi/webmail/WebMail.java:1658
#: src/src/i2p/susi/webmail/WebMail.java:1664
msgid "Set"
msgstr "festlegen"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Really delete this message?"
msgstr "Diese Nachricht wirklich löschen?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Yes, really delete it!"
msgstr "Ja, wirklich löschen"
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "Back to Folder"
msgstr "Zurück zur Übersicht"
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1700
msgid "Date:"
msgstr "Datum:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
#: src/src/i2p/susi/webmail/WebMail.java:1711
msgid "Could not fetch mail."
msgstr "Konnte Nachrichten nicht abrufen."

View File

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-25 12:34+0000\n"
"POT-Creation-Date: 2012-07-26 19:46+0000\n"
"PO-Revision-Date: 2011-12-18 10:48+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/I2P/"
@ -25,432 +25,432 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/src/i2p/susi/webmail/WebMail.java:435
#: src/src/i2p/susi/webmail/WebMail.java:439
msgid "unknown"
msgstr "desconocido"
#: src/src/i2p/susi/webmail/WebMail.java:454
#: src/src/i2p/susi/webmail/WebMail.java:458
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr ""
"Aviso: No se encuentra codificación de transferencia, volviendo a 7 bits."
#: src/src/i2p/susi/webmail/WebMail.java:459
#: src/src/i2p/susi/webmail/WebMail.java:463
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\."
#: src/src/i2p/susi/webmail/WebMail.java:465
#: src/src/i2p/susi/webmail/WebMail.java:469
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr ""
"Aviso: no se ha encontrado el juego de caracteres, volviendo a US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:479
#: src/src/i2p/susi/webmail/WebMail.java:483
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "juego de caracteres \\''{0}\\''no soportado."
#: src/src/i2p/susi/webmail/WebMail.java:483
#: src/src/i2p/susi/webmail/WebMail.java:487
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "La parte ({0}) no se muestra, debido a {1}"
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "Download"
msgstr "Descarga"
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "File is packed into a zipfile for security reasons."
msgstr ""
"El archivo está empaquetado en un archivo zip por razones de seguridad."
#: src/src/i2p/susi/webmail/WebMail.java:506
#: src/src/i2p/susi/webmail/WebMail.java:510
#, java-format
msgid "attachment ({0})."
msgstr "adjunto ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:510
#: src/src/i2p/susi/webmail/WebMail.java:514
#, java-format
msgid "Attachment ({0})."
msgstr "Adjunto ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:560
#: src/src/i2p/susi/webmail/WebMail.java:564
msgid "Need username for authentication."
msgstr "Es necesario un nombre de usuario para la autenticación."
#: src/src/i2p/susi/webmail/WebMail.java:564
#: src/src/i2p/susi/webmail/WebMail.java:568
msgid "Need password for authentication."
msgstr "Es necesaria una contraseña para la autenticación."
#: src/src/i2p/susi/webmail/WebMail.java:568
#: src/src/i2p/susi/webmail/WebMail.java:572
msgid "Need hostname for connect."
msgstr "Es necesario un nombre de host para la conexión."
#: src/src/i2p/susi/webmail/WebMail.java:573
#: src/src/i2p/susi/webmail/WebMail.java:577
msgid "Need port number for pop3 connect."
msgstr "Es necesario el número de puerto para conectar pop3."
#: src/src/i2p/susi/webmail/WebMail.java:580
#: src/src/i2p/susi/webmail/WebMail.java:584
msgid "POP3 port number is not in range 0..65535."
msgstr "El puerto POP3 no está en el rango 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:586
#: src/src/i2p/susi/webmail/WebMail.java:590
msgid "POP3 port number is invalid."
msgstr "El puerto POP3 no es válido."
#: src/src/i2p/susi/webmail/WebMail.java:592
#: src/src/i2p/susi/webmail/WebMail.java:596
msgid "Need port number for smtp connect."
msgstr "Es necesario el número de puerto para conectar smtp."
#: src/src/i2p/susi/webmail/WebMail.java:599
#: src/src/i2p/susi/webmail/WebMail.java:603
msgid "SMTP port number is not in range 0..65535."
msgstr "El puerto SMTP no está en el rango 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
#: src/src/i2p/susi/webmail/WebMail.java:609
msgid "SMTP port number is invalid."
msgstr "El puerto SMTP no es válido."
#: src/src/i2p/susi/webmail/WebMail.java:652
#: src/src/i2p/susi/webmail/WebMail.java:656
msgid "User logged out."
msgstr "Usuario desconectado."
#: src/src/i2p/susi/webmail/WebMail.java:656
#: src/src/i2p/susi/webmail/WebMail.java:660
msgid "Internal error, lost connection."
msgstr "Error interno, pérdida de conexión."
#: src/src/i2p/susi/webmail/WebMail.java:752
#: src/src/i2p/susi/webmail/WebMail.java:756
#, java-format
msgid "On {0} {1} wrote:"
msgstr "En {0} {1} escribió:"
#: src/src/i2p/susi/webmail/WebMail.java:799
#: src/src/i2p/susi/webmail/WebMail.java:803
msgid "begin forwarded mail"
msgstr "comenzar correo reenviado"
#: src/src/i2p/susi/webmail/WebMail.java:821
#: src/src/i2p/susi/webmail/WebMail.java:825
msgid "end forwarded mail"
msgstr "final del correo reenviado"
#: src/src/i2p/susi/webmail/WebMail.java:828
#: src/src/i2p/susi/webmail/WebMail.java:1701
#: src/src/i2p/susi/webmail/WebMail.java:832
#: src/src/i2p/susi/webmail/WebMail.java:1707
msgid "Could not fetch mail body."
msgstr "No se pudo obtener el cuerpo del correo."
#: src/src/i2p/susi/webmail/WebMail.java:856
#: src/src/i2p/susi/webmail/WebMail.java:860
msgid "Message id not valid."
msgstr "ID del mensaje no válida."
#: src/src/i2p/susi/webmail/WebMail.java:939
#: src/src/i2p/susi/webmail/WebMail.java:943
#, java-format
msgid "No Encoding found for {0}"
msgstr "No se ha encontrado codificación para {0}"
#: src/src/i2p/susi/webmail/WebMail.java:943
#: src/src/i2p/susi/webmail/WebMail.java:947
#, java-format
msgid "Could not encode data: {0}"
msgstr "No se pudo codificar los datos: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:948
#: src/src/i2p/susi/webmail/WebMail.java:952
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Error al leer el archivo subido: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1026
#: src/src/i2p/susi/webmail/WebMail.java:1030
msgid "Error parsing download parameter."
msgstr "Error al analizar parámetros de descarga."
#: src/src/i2p/susi/webmail/WebMail.java:1070
#: src/src/i2p/susi/webmail/WebMail.java:1074
msgid "Invalid pagesize number, resetting to default value."
msgstr ""
"Tamaño de página no válida, restableciendo los valores predeterminados."
#: src/src/i2p/susi/webmail/WebMail.java:1094
#: src/src/i2p/susi/webmail/WebMail.java:1098
msgid "No messages marked for deletion."
msgstr "No hay mensajes marcados para su eliminación."
#: src/src/i2p/susi/webmail/WebMail.java:1114
#: src/src/i2p/susi/webmail/WebMail.java:1118
#, java-format
msgid "Error deleting message: {0}"
msgstr "Error al eliminar el mensaje: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1125
#: src/src/i2p/susi/webmail/WebMail.java:1129
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "1 mensaje eliminado."
msgstr[1] "{0} mensajes eliminados."
#: src/src/i2p/susi/webmail/WebMail.java:1248
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1254
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Login"
msgstr "Iniciar sesión"
#: src/src/i2p/susi/webmail/WebMail.java:1250
#: src/src/i2p/susi/webmail/WebMail.java:1256
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 Mensaje"
msgstr[1] "{0} Mensajes"
#: src/src/i2p/susi/webmail/WebMail.java:1252
#: src/src/i2p/susi/webmail/WebMail.java:1258
msgid "Show Message"
msgstr "Mostrar mensaje"
#: src/src/i2p/susi/webmail/WebMail.java:1314
#: src/src/i2p/susi/webmail/WebMail.java:1320
#, java-format
msgid "Error decoding content: {0}"
msgstr "Error al descodificar el contenido: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1319
#: src/src/i2p/susi/webmail/WebMail.java:1325
msgid "Error decoding content: No encoder found."
msgstr "Error al descodificar el contenido: No se ha encontrado codificador."
#: src/src/i2p/susi/webmail/WebMail.java:1366
#: src/src/i2p/susi/webmail/WebMail.java:1372
msgid "no subject"
msgstr "sin asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1383
#: src/src/i2p/susi/webmail/WebMail.java:1389
msgid "Found no valid sender address."
msgstr "No se ha encontrado una dirección de remitente válida."
#: src/src/i2p/susi/webmail/WebMail.java:1389
#: src/src/i2p/susi/webmail/WebMail.java:1395
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "No se ha encontrado ninguna dirección válida en \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1408
#: src/src/i2p/susi/webmail/WebMail.java:1414
msgid "No recipients found."
msgstr "No se han encontrado destinatarios."
#: src/src/i2p/susi/webmail/WebMail.java:1415
#: src/src/i2p/susi/webmail/WebMail.java:1421
msgid "Quoted printable encoder not available."
msgstr "El codificador imprimible citado no está disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1420
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Header line encoder not available."
msgstr "El codificador de línea de encabezado no está disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1471
#: src/src/i2p/susi/webmail/WebMail.java:1477
msgid "Mail sent."
msgstr "Correo enviado."
#: src/src/i2p/susi/webmail/WebMail.java:1510
#: src/src/i2p/susi/webmail/WebMail.java:1516
msgid "Send"
msgstr "Enviar"
#: src/src/i2p/susi/webmail/WebMail.java:1511
#: src/src/i2p/susi/webmail/WebMail.java:1517
msgid "Cancel"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1512
#: src/src/i2p/susi/webmail/WebMail.java:1518
msgid "Delete Attachment"
msgstr "Eliminar datos adjuntos"
#: src/src/i2p/susi/webmail/WebMail.java:1513
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
#: src/src/i2p/susi/webmail/WebMail.java:1519
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Reload Config"
msgstr "Recargar la configuración"
#: src/src/i2p/susi/webmail/WebMail.java:1514
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
#: src/src/i2p/susi/webmail/WebMail.java:1520
#: src/src/i2p/susi/webmail/WebMail.java:1614
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Logout"
msgstr "Desconectarse"
#: src/src/i2p/susi/webmail/WebMail.java:1537
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1543
#: src/src/i2p/susi/webmail/WebMail.java:1699
msgid "From:"
msgstr "De:"
#: src/src/i2p/susi/webmail/WebMail.java:1538
#: src/src/i2p/susi/webmail/WebMail.java:1544
msgid "To:"
msgstr "Para:"
#: src/src/i2p/susi/webmail/WebMail.java:1539
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1540
#: src/src/i2p/susi/webmail/WebMail.java:1546
msgid "Bcc:"
msgstr "CCO:"
#: src/src/i2p/susi/webmail/WebMail.java:1541
#: src/src/i2p/susi/webmail/WebMail.java:1695
#: src/src/i2p/susi/webmail/WebMail.java:1547
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Subject:"
msgstr "Asunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1542
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Bcc to self"
msgstr "CCO a mí mism@"
#: src/src/i2p/susi/webmail/WebMail.java:1545
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "New Attachment:"
msgstr "Nuevo Archivo adjunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1545
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Upload File"
msgstr "Subir Archivo"
#: src/src/i2p/susi/webmail/WebMail.java:1551
#: src/src/i2p/susi/webmail/WebMail.java:1557
msgid "Attachments:"
msgstr "Archivos adjuntos:"
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1574
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "User"
msgstr "Usuario"
#: src/src/i2p/susi/webmail/WebMail.java:1575
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "Password"
msgstr "Contraseña"
#: src/src/i2p/susi/webmail/WebMail.java:1580
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1581
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "POP3-Port"
msgstr "Puerto-POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1582
#: src/src/i2p/susi/webmail/WebMail.java:1588
msgid "SMTP-Port"
msgstr "Puerto-SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Reset"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1586
#: src/src/i2p/susi/webmail/WebMail.java:1592
msgid "Learn about I2P mail"
msgstr "Aprende sobre I2P mail"
#: src/src/i2p/susi/webmail/WebMail.java:1587
#: src/src/i2p/susi/webmail/WebMail.java:1593
msgid "Create Account"
msgstr "Crear una cuenta"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Really delete the marked messages?"
msgstr "¿Realmente deseas borrar los mensajes marcados?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Yes, really delete them!"
msgstr "Sí, realmente eliminarlos!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "New"
msgstr "Nuevo"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reply"
msgstr "Responder"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reply All"
msgstr "Responder a todos"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Forward"
msgstr "Reenviar"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1690
msgid "Delete"
msgstr "Eliminar"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Check Mail"
msgstr "Comprobar correo"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1616
msgid "Sender"
msgstr "Remitente"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1617
msgid "Subject"
msgstr "Asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1618
msgid "Date"
msgstr "Fecha"
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1619
msgid "Size"
msgstr "Tamaño"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#: src/src/i2p/susi/webmail/WebMail.java:1645
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1644
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "Mark All"
msgstr "Marcar todos"
#: src/src/i2p/susi/webmail/WebMail.java:1645
#: src/src/i2p/susi/webmail/WebMail.java:1651
msgid "Invert Selection"
msgstr "Invertir selección"
#: src/src/i2p/susi/webmail/WebMail.java:1646
#: src/src/i2p/susi/webmail/WebMail.java:1652
msgid "Clear"
msgstr "Despejar"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
msgid "First"
msgstr "Primero"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1691
msgid "Previous"
msgstr "Anterior"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#: src/src/i2p/susi/webmail/WebMail.java:1657
#, java-format
msgid "Page {0} of {1}"
msgstr "Página {0} de {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
msgid "Last"
msgstr "Última"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1692
msgid "Next"
msgstr "Siguiente"
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1663
msgid "Pagesize:"
msgstr "Tamaño de página:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
#: src/src/i2p/susi/webmail/WebMail.java:1664
msgid "Set"
msgstr "Establecer"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Really delete this message?"
msgstr "¿Realmente deseas borrar este mensaje?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Yes, really delete it!"
msgstr "Sí, ¡bórralo!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "Back to Folder"
msgstr "Volver a carpeta"
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1700
msgid "Date:"
msgstr "Fecha:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
#: src/src/i2p/susi/webmail/WebMail.java:1711
msgid "Could not fetch mail."
msgstr "No se pudo descargar el correo."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susimail\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-24 16:49+0000\n"
"POT-Creation-Date: 2012-07-26 19:14+0000\n"
"PO-Revision-Date: 2011-04-09 03:06+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
@ -18,424 +18,428 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n >= 2)\n"
#: src/src/i2p/susi/webmail/WebMail.java:454
#: src/src/i2p/susi/webmail/WebMail.java:439
msgid "unknown"
msgstr "inconnu"
#: src/src/i2p/susi/webmail/WebMail.java:473
#: src/src/i2p/susi/webmail/WebMail.java:458
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits."
#: src/src/i2p/susi/webmail/WebMail.java:478
#: src/src/i2p/susi/webmail/WebMail.java:463
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Pas d''encodeur trouvé pour encoder \"{0}\"."
#: src/src/i2p/susi/webmail/WebMail.java:484
#: src/src/i2p/susi/webmail/WebMail.java:469
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Avertissement: aucun jeu de caractères trouvé, retour en ASCII-US"
#: src/src/i2p/susi/webmail/WebMail.java:498
#: src/src/i2p/susi/webmail/WebMail.java:483
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Jeu de caractères \\''{0}\\'' non pris en charge."
#: src/src/i2p/susi/webmail/WebMail.java:502
#: src/src/i2p/susi/webmail/WebMail.java:487
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Partie ({0}) non affichée car {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "Download"
msgstr "Télécharger"
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "File is packed into a zipfile for security reasons."
msgstr "Fichier compressé en zip par sécurité."
#: src/src/i2p/susi/webmail/WebMail.java:525
#: src/src/i2p/susi/webmail/WebMail.java:510
#, java-format
msgid "attachment ({0})."
msgstr "pièce jointe ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:529
#: src/src/i2p/susi/webmail/WebMail.java:514
#, java-format
msgid "Attachment ({0})."
msgstr "Pièce jointe ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:579
#: src/src/i2p/susi/webmail/WebMail.java:564
msgid "Need username for authentication."
msgstr "Identifiant requis pour l'authentification."
#: src/src/i2p/susi/webmail/WebMail.java:583
#: src/src/i2p/susi/webmail/WebMail.java:568
msgid "Need password for authentication."
msgstr "Mot de passe requis pour l'authentification."
#: src/src/i2p/susi/webmail/WebMail.java:587
#: src/src/i2p/susi/webmail/WebMail.java:572
msgid "Need hostname for connect."
msgstr "Nom d'hôte requis pour la connexion."
#: src/src/i2p/susi/webmail/WebMail.java:592
#: src/src/i2p/susi/webmail/WebMail.java:577
msgid "Need port number for pop3 connect."
msgstr "Port requis pour la connexion POP3."
#: src/src/i2p/susi/webmail/WebMail.java:599
#: src/src/i2p/susi/webmail/WebMail.java:584
msgid "POP3 port number is not in range 0..65535."
msgstr "Le port POP3 n'est pas compris entre 0 et 65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
#: src/src/i2p/susi/webmail/WebMail.java:590
msgid "POP3 port number is invalid."
msgstr "Port POP3 incorrect."
#: src/src/i2p/susi/webmail/WebMail.java:611
#: src/src/i2p/susi/webmail/WebMail.java:596
msgid "Need port number for smtp connect."
msgstr "Port requis pour la connexion SMTP."
#: src/src/i2p/susi/webmail/WebMail.java:618
#: src/src/i2p/susi/webmail/WebMail.java:603
msgid "SMTP port number is not in range 0..65535."
msgstr "Le port SMTP n'est pas compris entre 0 et 65535."
#: src/src/i2p/susi/webmail/WebMail.java:624
#: src/src/i2p/susi/webmail/WebMail.java:609
msgid "SMTP port number is invalid."
msgstr "Port SMTP incorrect."
#: src/src/i2p/susi/webmail/WebMail.java:671
#: src/src/i2p/susi/webmail/WebMail.java:656
msgid "User logged out."
msgstr "Utilisateur déconnecté."
#: src/src/i2p/susi/webmail/WebMail.java:675
#: src/src/i2p/susi/webmail/WebMail.java:660
msgid "Internal error, lost connection."
msgstr "Erreur interne, connexion perdue."
#: src/src/i2p/susi/webmail/WebMail.java:771
#: src/src/i2p/susi/webmail/WebMail.java:756
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Sur {0} {1} écrit:"
#: src/src/i2p/susi/webmail/WebMail.java:818
#: src/src/i2p/susi/webmail/WebMail.java:803
msgid "begin forwarded mail"
msgstr "tranfert du message commencé"
#: src/src/i2p/susi/webmail/WebMail.java:840
#: src/src/i2p/susi/webmail/WebMail.java:825
msgid "end forwarded mail"
msgstr "tranfert du message terminé"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
#: src/src/i2p/susi/webmail/WebMail.java:832
#: src/src/i2p/susi/webmail/WebMail.java:1707
msgid "Could not fetch mail body."
msgstr "Impossible de ramener le corps du message."
#: src/src/i2p/susi/webmail/WebMail.java:875
#: src/src/i2p/susi/webmail/WebMail.java:860
msgid "Message id not valid."
msgstr "ID de message incorrecte."
#: src/src/i2p/susi/webmail/WebMail.java:958
#: src/src/i2p/susi/webmail/WebMail.java:943
#, java-format
msgid "No Encoding found for {0}"
msgstr "Pas d''encodage trouvé pour {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#: src/src/i2p/susi/webmail/WebMail.java:947
#, java-format
msgid "Could not encode data: {0}"
msgstr "Impossible d''encoder les données: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#: src/src/i2p/susi/webmail/WebMail.java:952
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Erreur de lecture du fichier envoyé: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
#: src/src/i2p/susi/webmail/WebMail.java:1030
msgid "Error parsing download parameter."
msgstr "Erreur d'analyse des paramètres de téléchargement."
#: src/src/i2p/susi/webmail/WebMail.java:1089
#: src/src/i2p/susi/webmail/WebMail.java:1074
msgid "Invalid pagesize number, resetting to default value."
msgstr "Taille de page incorrecte: réinitialisation à la valeur par défaut."
#: src/src/i2p/susi/webmail/WebMail.java:1113
#: src/src/i2p/susi/webmail/WebMail.java:1098
msgid "No messages marked for deletion."
msgstr "Aucun message marqué pour suppression"
#: src/src/i2p/susi/webmail/WebMail.java:1133
#: src/src/i2p/susi/webmail/WebMail.java:1118
#, java-format
msgid "Error deleting message: {0}"
msgstr "Erreur de suppression du message: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#: src/src/i2p/susi/webmail/WebMail.java:1129
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "{0} message supprimé"
msgstr[1] "{0} messages supprimés"
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
#: src/src/i2p/susi/webmail/WebMail.java:1254
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Login"
msgstr "Identification"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#: src/src/i2p/susi/webmail/WebMail.java:1256
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "{0} Message"
msgstr[1] "{0} Messages"
#: src/src/i2p/susi/webmail/WebMail.java:1268
#: src/src/i2p/susi/webmail/WebMail.java:1258
msgid "Show Message"
msgstr "Afficher le message"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#: src/src/i2p/susi/webmail/WebMail.java:1320
#, java-format
msgid "Error decoding content: {0}"
msgstr "Erreur de décodage de contenu: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
#: src/src/i2p/susi/webmail/WebMail.java:1325
msgid "Error decoding content: No encoder found."
msgstr "Erreur de décodage de contenu: pas d'encodeur trouvé."
#: src/src/i2p/susi/webmail/WebMail.java:1377
#: src/src/i2p/susi/webmail/WebMail.java:1372
msgid "no subject"
msgstr "pas d'objet"
#: src/src/i2p/susi/webmail/WebMail.java:1394
#: src/src/i2p/susi/webmail/WebMail.java:1389
msgid "Found no valid sender address."
msgstr "Adresse d'expéditeur correcte non trouvée"
#: src/src/i2p/susi/webmail/WebMail.java:1400
#: src/src/i2p/susi/webmail/WebMail.java:1395
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Pas d''adresse correcte dans \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1419
#: src/src/i2p/susi/webmail/WebMail.java:1414
msgid "No recipients found."
msgstr "Pas de destinataire trouvé."
#: src/src/i2p/susi/webmail/WebMail.java:1426
#: src/src/i2p/susi/webmail/WebMail.java:1421
msgid "Quoted printable encoder not available."
msgstr "Encodeur \"Quoted printable\" non disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1431
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Header line encoder not available."
msgstr "Ligne d'en-tête \"Encodeur\" non disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1482
#: src/src/i2p/susi/webmail/WebMail.java:1477
msgid "Mail sent."
msgstr "Message envoyé."
#: src/src/i2p/susi/webmail/WebMail.java:1519
#: src/src/i2p/susi/webmail/WebMail.java:1516
msgid "Send"
msgstr "Envoyer"
#: src/src/i2p/susi/webmail/WebMail.java:1520
#: src/src/i2p/susi/webmail/WebMail.java:1517
msgid "Cancel"
msgstr "Annuler"
#: src/src/i2p/susi/webmail/WebMail.java:1521
#: src/src/i2p/susi/webmail/WebMail.java:1518
msgid "Delete Attachment"
msgstr "Supprimer la pièce jointe"
#: src/src/i2p/susi/webmail/WebMail.java:1522
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
#: src/src/i2p/susi/webmail/WebMail.java:1519
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Reload Config"
msgstr "Recharger la configuration"
#: src/src/i2p/susi/webmail/WebMail.java:1523
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
#: src/src/i2p/susi/webmail/WebMail.java:1520
#: src/src/i2p/susi/webmail/WebMail.java:1614
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Logout"
msgstr "Déconnexion"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
#: src/src/i2p/susi/webmail/WebMail.java:1543
#: src/src/i2p/susi/webmail/WebMail.java:1699
msgid "From:"
msgstr "De:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
#: src/src/i2p/susi/webmail/WebMail.java:1544
msgid "To:"
msgstr "À:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
#: src/src/i2p/susi/webmail/WebMail.java:1546
msgid "Bcc:"
msgstr "Cci:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
#: src/src/i2p/susi/webmail/WebMail.java:1547
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Subject:"
msgstr "Objet:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Bcc to self"
msgstr "Cci à moi-même"
#: src/src/i2p/susi/webmail/WebMail.java:1554
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "New Attachment:"
msgstr "Nouvelle pièce jointe:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Upload File"
msgstr "Envoyer le fichier"
#: src/src/i2p/susi/webmail/WebMail.java:1560
#: src/src/i2p/susi/webmail/WebMail.java:1557
msgid "Attachments:"
msgstr "Pièces jointes:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "User"
msgstr "Utilisateur"
#: src/src/i2p/susi/webmail/WebMail.java:1583
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "Password"
msgstr "Mot de passe"
#: src/src/i2p/susi/webmail/WebMail.java:1584
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Host"
msgstr "Hôte"
#: src/src/i2p/susi/webmail/WebMail.java:1585
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "POP3-Port"
msgstr "Port POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1586
#: src/src/i2p/susi/webmail/WebMail.java:1588
msgid "SMTP-Port"
msgstr "Port SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Créer un compte"
#: src/src/i2p/susi/webmail/WebMail.java:1587
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Reset"
msgstr "Remise à zéro"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1592
msgid "Learn about I2P mail"
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1593
msgid "Create Account"
msgstr "Créer un compte"
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Really delete the marked messages?"
msgstr "voulez-vous vraiment supprimer les messages marqués?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Yes, really delete them!"
msgstr "Oui, suppression!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "New"
msgstr "Nouveau message"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reply"
msgstr "Répondre"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reply All"
msgstr "Répondre à tous"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Forward"
msgstr "Transférer"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1690
msgid "Delete"
msgstr "Supprimer"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Check Mail"
msgstr "Relever le courrier"
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1616
msgid "Sender"
msgstr "De"
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1617
msgid "Subject"
msgstr "Objet"
#: src/src/i2p/susi/webmail/WebMail.java:1612
#: src/src/i2p/susi/webmail/WebMail.java:1618
msgid "Date"
msgstr "Date"
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1619
msgid "Size"
msgstr "Taille"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#: src/src/i2p/susi/webmail/WebMail.java:1645
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "{0} octet"
msgstr[1] "{0} octets"
#: src/src/i2p/susi/webmail/WebMail.java:1644
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "Mark All"
msgstr "Tout cocher"
#: src/src/i2p/susi/webmail/WebMail.java:1645
#: src/src/i2p/susi/webmail/WebMail.java:1651
msgid "Invert Selection"
msgstr "Inverser la sélection"
#: src/src/i2p/susi/webmail/WebMail.java:1646
#: src/src/i2p/susi/webmail/WebMail.java:1652
msgid "Clear"
msgstr "Effacer"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
msgid "First"
msgstr "Premier"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1691
msgid "Previous"
msgstr "Précédent"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#: src/src/i2p/susi/webmail/WebMail.java:1657
#, java-format
msgid "Page {0} of {1}"
msgstr "Page {0} sur {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
msgid "Last"
msgstr "Dernier"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1692
msgid "Next"
msgstr "Suivant"
#: src/src/i2p/susi/webmail/WebMail.java:1657
#: src/src/i2p/susi/webmail/WebMail.java:1663
msgid "Pagesize:"
msgstr "Taille de page:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
#: src/src/i2p/susi/webmail/WebMail.java:1664
msgid "Set"
msgstr "Définir"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Really delete this message?"
msgstr "Voulez-vous vraiment supprimer ce message?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Yes, really delete it!"
msgstr "Oui, supprimer!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "Back to Folder"
msgstr "Retour au dossier"
#: src/src/i2p/susi/webmail/WebMail.java:1694
#: src/src/i2p/susi/webmail/WebMail.java:1700
msgid "Date:"
msgstr "Date:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
#: src/src/i2p/susi/webmail/WebMail.java:1711
msgid "Could not fetch mail."
msgstr "Impossible de ramener le courrier."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-12-15 20:14+0000\n"
"POT-Creation-Date: 2012-07-26 19:11+0000\n"
"PO-Revision-Date: 2011-12-13 14:16+0000\n"
"Last-Translator: Martin Svensson <digitalmannen@gmail.com>\n"
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/"
@ -20,429 +20,429 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/src/i2p/susi/webmail/WebMail.java:455
#: src/src/i2p/susi/webmail/WebMail.java:439
msgid "unknown"
msgstr "okänd"
#: src/src/i2p/susi/webmail/WebMail.java:474
#: src/src/i2p/susi/webmail/WebMail.java:458
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr ""
"Varning: ingen överförings kodning hittats, återgår till att använda 7bit."
#: src/src/i2p/susi/webmail/WebMail.java:479
#: src/src/i2p/susi/webmail/WebMail.java:463
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Ingen encoder hittades för kodning \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:485
#: src/src/i2p/susi/webmail/WebMail.java:469
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Varning: ingen teckenuppsättning hittats, återgår till US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:499
#: src/src/i2p/susi/webmail/WebMail.java:483
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Teckenuppsättning \\''{0}\\' stöds inte."
#: src/src/i2p/susi/webmail/WebMail.java:503
#: src/src/i2p/susi/webmail/WebMail.java:487
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Del ({0}) visas inte på grund av {1}"
#: src/src/i2p/susi/webmail/WebMail.java:526
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "Download"
msgstr "Hämta"
#: src/src/i2p/susi/webmail/WebMail.java:526
#: src/src/i2p/susi/webmail/WebMail.java:510
msgid "File is packed into a zipfile for security reasons."
msgstr "Filen packas till zipfil av säkerhetsskäl."
#: src/src/i2p/susi/webmail/WebMail.java:526
#: src/src/i2p/susi/webmail/WebMail.java:510
#, java-format
msgid "attachment ({0})."
msgstr "bilaga ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:530
#: src/src/i2p/susi/webmail/WebMail.java:514
#, java-format
msgid "Attachment ({0})."
msgstr "Bilaga ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:580
#: src/src/i2p/susi/webmail/WebMail.java:564
msgid "Need username for authentication."
msgstr "Behöver användarnamn för autentisering."
#: src/src/i2p/susi/webmail/WebMail.java:584
#: src/src/i2p/susi/webmail/WebMail.java:568
msgid "Need password for authentication."
msgstr "Behöver lösenord för autentisering."
#: src/src/i2p/susi/webmail/WebMail.java:588
#: src/src/i2p/susi/webmail/WebMail.java:572
msgid "Need hostname for connect."
msgstr "Behöver värd namn för att ansluta."
#: src/src/i2p/susi/webmail/WebMail.java:593
#: src/src/i2p/susi/webmail/WebMail.java:577
msgid "Need port number for pop3 connect."
msgstr "Behöver portnummer för POP3 anslutning."
#: src/src/i2p/susi/webmail/WebMail.java:600
#: src/src/i2p/susi/webmail/WebMail.java:584
msgid "POP3 port number is not in range 0..65535."
msgstr "POP3 portnummer är inte inom intervallet 0 .. 65535."
#: src/src/i2p/susi/webmail/WebMail.java:606
#: src/src/i2p/susi/webmail/WebMail.java:590
msgid "POP3 port number is invalid."
msgstr "POP3 portnummer är ogiltigt"
#: src/src/i2p/susi/webmail/WebMail.java:612
#: src/src/i2p/susi/webmail/WebMail.java:596
msgid "Need port number for smtp connect."
msgstr "Behöver portnummer för SMTP anslutning."
#: src/src/i2p/susi/webmail/WebMail.java:619
#: src/src/i2p/susi/webmail/WebMail.java:603
msgid "SMTP port number is not in range 0..65535."
msgstr "SMTP portnumret är inte inom intervallet 0 .. 65535."
#: src/src/i2p/susi/webmail/WebMail.java:625
#: src/src/i2p/susi/webmail/WebMail.java:609
msgid "SMTP port number is invalid."
msgstr "SMTP portnummer ör ogiltigt"
#: src/src/i2p/susi/webmail/WebMail.java:672
#: src/src/i2p/susi/webmail/WebMail.java:656
msgid "User logged out."
msgstr "Användare loggade ut."
#: src/src/i2p/susi/webmail/WebMail.java:676
#: src/src/i2p/susi/webmail/WebMail.java:660
msgid "Internal error, lost connection."
msgstr "Internt fel, tappade anslutningen."
#: src/src/i2p/susi/webmail/WebMail.java:772
#: src/src/i2p/susi/webmail/WebMail.java:756
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Den {0} {1} skrev:"
#: src/src/i2p/susi/webmail/WebMail.java:819
#: src/src/i2p/susi/webmail/WebMail.java:803
msgid "begin forwarded mail"
msgstr "börjar vidarebefordra e-post"
#: src/src/i2p/susi/webmail/WebMail.java:841
#: src/src/i2p/susi/webmail/WebMail.java:825
msgid "end forwarded mail"
msgstr "slutar vidarebefordra e-post"
#: src/src/i2p/susi/webmail/WebMail.java:848
#: src/src/i2p/susi/webmail/WebMail.java:1720
#: src/src/i2p/susi/webmail/WebMail.java:832
#: src/src/i2p/susi/webmail/WebMail.java:1707
msgid "Could not fetch mail body."
msgstr "Kunde inte hämta e-postets brödtext."
#: src/src/i2p/susi/webmail/WebMail.java:876
#: src/src/i2p/susi/webmail/WebMail.java:860
msgid "Message id not valid."
msgstr "Meddelande id är inte giltigt"
#: src/src/i2p/susi/webmail/WebMail.java:959
#: src/src/i2p/susi/webmail/WebMail.java:943
#, java-format
msgid "No Encoding found for {0}"
msgstr "Ingen teckenkodning hittades för {0}"
#: src/src/i2p/susi/webmail/WebMail.java:963
#: src/src/i2p/susi/webmail/WebMail.java:947
#, java-format
msgid "Could not encode data: {0}"
msgstr "Kunde inte koda data: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:968
#: src/src/i2p/susi/webmail/WebMail.java:952
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Fel vid läsning av uppladdad fil: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1046
#: src/src/i2p/susi/webmail/WebMail.java:1030
msgid "Error parsing download parameter."
msgstr "Fel vid tolkning av nedladdnings parameter."
#: src/src/i2p/susi/webmail/WebMail.java:1090
#: src/src/i2p/susi/webmail/WebMail.java:1074
msgid "Invalid pagesize number, resetting to default value."
msgstr "Ogiltigt sidstorleks antal, återställer till standard värde."
#: src/src/i2p/susi/webmail/WebMail.java:1114
#: src/src/i2p/susi/webmail/WebMail.java:1098
msgid "No messages marked for deletion."
msgstr "Inga meddelanden var märkta för radering"
#: src/src/i2p/susi/webmail/WebMail.java:1134
#: src/src/i2p/susi/webmail/WebMail.java:1118
#, java-format
msgid "Error deleting message: {0}"
msgstr "Fel vid raderande av meddelande: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1145
#: src/src/i2p/susi/webmail/WebMail.java:1129
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "1 meddelande raderart."
msgstr[1] "{0} meddelanden raderade"
#: src/src/i2p/susi/webmail/WebMail.java:1267
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1254
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Login"
msgstr "Logga in"
#: src/src/i2p/susi/webmail/WebMail.java:1269
#: src/src/i2p/susi/webmail/WebMail.java:1256
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 meddelande"
msgstr[1] "{0} meddelanden"
#: src/src/i2p/susi/webmail/WebMail.java:1271
#: src/src/i2p/susi/webmail/WebMail.java:1258
msgid "Show Message"
msgstr "Visa meddelande"
#: src/src/i2p/susi/webmail/WebMail.java:1333
#: src/src/i2p/susi/webmail/WebMail.java:1320
#, java-format
msgid "Error decoding content: {0}"
msgstr "Fel vid avkodning av innehåll: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1338
#: src/src/i2p/susi/webmail/WebMail.java:1325
msgid "Error decoding content: No encoder found."
msgstr "Fel vid avkodning av innehåll: Ingen encoder hittades."
#: src/src/i2p/susi/webmail/WebMail.java:1385
#: src/src/i2p/susi/webmail/WebMail.java:1372
msgid "no subject"
msgstr "inget ämne"
#: src/src/i2p/susi/webmail/WebMail.java:1402
#: src/src/i2p/susi/webmail/WebMail.java:1389
msgid "Found no valid sender address."
msgstr "Hittade ingen giltig avsändaradress."
#: src/src/i2p/susi/webmail/WebMail.java:1408
#: src/src/i2p/susi/webmail/WebMail.java:1395
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Hittade ingen giltig adress i \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1427
#: src/src/i2p/susi/webmail/WebMail.java:1414
msgid "No recipients found."
msgstr "Inga mottagare funna"
#: src/src/i2p/susi/webmail/WebMail.java:1434
#: src/src/i2p/susi/webmail/WebMail.java:1421
msgid "Quoted printable encoder not available."
msgstr "Citerad utskrivbar encoder inte tillgänglig."
#: src/src/i2p/susi/webmail/WebMail.java:1439
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Header line encoder not available."
msgstr "Header radens encoder är inte tillgänglig."
#: src/src/i2p/susi/webmail/WebMail.java:1490
#: src/src/i2p/susi/webmail/WebMail.java:1477
msgid "Mail sent."
msgstr "E-post skickat"
#: src/src/i2p/susi/webmail/WebMail.java:1529
#: src/src/i2p/susi/webmail/WebMail.java:1516
msgid "Send"
msgstr "Skicka"
#: src/src/i2p/susi/webmail/WebMail.java:1530
#: src/src/i2p/susi/webmail/WebMail.java:1517
msgid "Cancel"
msgstr "Avbryt"
#: src/src/i2p/susi/webmail/WebMail.java:1531
#: src/src/i2p/susi/webmail/WebMail.java:1518
msgid "Delete Attachment"
msgstr "Radera bilaga"
#: src/src/i2p/susi/webmail/WebMail.java:1532
#: src/src/i2p/susi/webmail/WebMail.java:1626
#: src/src/i2p/susi/webmail/WebMail.java:1707
#: src/src/i2p/susi/webmail/WebMail.java:1519
#: src/src/i2p/susi/webmail/WebMail.java:1613
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Reload Config"
msgstr "Ladda om konfiguration"
#: src/src/i2p/susi/webmail/WebMail.java:1533
#: src/src/i2p/susi/webmail/WebMail.java:1627
#: src/src/i2p/susi/webmail/WebMail.java:1708
#: src/src/i2p/susi/webmail/WebMail.java:1520
#: src/src/i2p/susi/webmail/WebMail.java:1614
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Logout"
msgstr "Logga ut"
#: src/src/i2p/susi/webmail/WebMail.java:1556
#: src/src/i2p/susi/webmail/WebMail.java:1712
#: src/src/i2p/susi/webmail/WebMail.java:1543
#: src/src/i2p/susi/webmail/WebMail.java:1699
msgid "From:"
msgstr "Från:"
#: src/src/i2p/susi/webmail/WebMail.java:1557
#: src/src/i2p/susi/webmail/WebMail.java:1544
msgid "To:"
msgstr "Till:"
#: src/src/i2p/susi/webmail/WebMail.java:1558
#: src/src/i2p/susi/webmail/WebMail.java:1545
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1559
#: src/src/i2p/susi/webmail/WebMail.java:1546
msgid "Bcc:"
msgstr "Bcc:"
#: src/src/i2p/susi/webmail/WebMail.java:1560
#: src/src/i2p/susi/webmail/WebMail.java:1714
#: src/src/i2p/susi/webmail/WebMail.java:1547
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Subject:"
msgstr "Ärende:"
#: src/src/i2p/susi/webmail/WebMail.java:1561
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Bcc to self"
msgstr "Bcc till själv"
#: src/src/i2p/susi/webmail/WebMail.java:1564
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "New Attachment:"
msgstr "Ny bilaga:"
#: src/src/i2p/susi/webmail/WebMail.java:1564
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Upload File"
msgstr "Ladda upp fil"
#: src/src/i2p/susi/webmail/WebMail.java:1570
#: src/src/i2p/susi/webmail/WebMail.java:1557
msgid "Attachments:"
msgstr "Bilagor:"
#. current postman hq length limits 16/12, new postman version 32/32
#: src/src/i2p/susi/webmail/WebMail.java:1593
#: src/src/i2p/susi/webmail/WebMail.java:1580
msgid "User"
msgstr "Användare"
#: src/src/i2p/susi/webmail/WebMail.java:1594
#: src/src/i2p/susi/webmail/WebMail.java:1581
msgid "Password"
msgstr "Lösenord"
#: src/src/i2p/susi/webmail/WebMail.java:1599
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "Host"
msgstr "Värd"
#: src/src/i2p/susi/webmail/WebMail.java:1600
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "POP3-Port"
msgstr "POP3-port"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1588
msgid "SMTP-Port"
msgstr "SMTP-port"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1591
msgid "Reset"
msgstr "Återställ"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1592
msgid "Learn about I2P mail"
msgstr "Lär mer om I2P e-post"
#: src/src/i2p/susi/webmail/WebMail.java:1606
#: src/src/i2p/susi/webmail/WebMail.java:1593
msgid "Create Account"
msgstr "Skapa konto"
#: src/src/i2p/susi/webmail/WebMail.java:1618
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Really delete the marked messages?"
msgstr "Vill du verkligen radera valda meddelanden?"
#: src/src/i2p/susi/webmail/WebMail.java:1618
#: src/src/i2p/susi/webmail/WebMail.java:1605
msgid "Yes, really delete them!"
msgstr "Ja, radera dem!"
#: src/src/i2p/susi/webmail/WebMail.java:1620
#: src/src/i2p/susi/webmail/WebMail.java:1699
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "New"
msgstr "Ny"
#: src/src/i2p/susi/webmail/WebMail.java:1621
#: src/src/i2p/susi/webmail/WebMail.java:1700
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Reply"
msgstr "Svara"
#: src/src/i2p/susi/webmail/WebMail.java:1622
#: src/src/i2p/susi/webmail/WebMail.java:1701
#: src/src/i2p/susi/webmail/WebMail.java:1609
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reply All"
msgstr "Svara alla"
#: src/src/i2p/susi/webmail/WebMail.java:1623
#: src/src/i2p/susi/webmail/WebMail.java:1702
#: src/src/i2p/susi/webmail/WebMail.java:1610
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Forward"
msgstr "Vidarebefodera"
#: src/src/i2p/susi/webmail/WebMail.java:1624
#: src/src/i2p/susi/webmail/WebMail.java:1703
#: src/src/i2p/susi/webmail/WebMail.java:1611
#: src/src/i2p/susi/webmail/WebMail.java:1690
msgid "Delete"
msgstr "Radera"
#: src/src/i2p/susi/webmail/WebMail.java:1625
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Check Mail"
msgstr "Kolla e-post"
#: src/src/i2p/susi/webmail/WebMail.java:1629
#: src/src/i2p/susi/webmail/WebMail.java:1616
msgid "Sender"
msgstr "Avsändare"
#: src/src/i2p/susi/webmail/WebMail.java:1630
#: src/src/i2p/susi/webmail/WebMail.java:1617
msgid "Subject"
msgstr "Ärende"
#: src/src/i2p/susi/webmail/WebMail.java:1631
#: src/src/i2p/susi/webmail/WebMail.java:1618
msgid "Date"
msgstr "Datum"
#: src/src/i2p/susi/webmail/WebMail.java:1632
#: src/src/i2p/susi/webmail/WebMail.java:1619
msgid "Size"
msgstr "Storlek"
#: src/src/i2p/susi/webmail/WebMail.java:1658
#: src/src/i2p/susi/webmail/WebMail.java:1645
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1663
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "Mark All"
msgstr "Markera alla"
#: src/src/i2p/susi/webmail/WebMail.java:1664
#: src/src/i2p/susi/webmail/WebMail.java:1651
msgid "Invert Selection"
msgstr "Invertera urvalet"
#: src/src/i2p/susi/webmail/WebMail.java:1665
#: src/src/i2p/susi/webmail/WebMail.java:1652
msgid "Clear"
msgstr "Rensa "
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1669
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
msgid "First"
msgstr "Första"
#: src/src/i2p/susi/webmail/WebMail.java:1668
#: src/src/i2p/susi/webmail/WebMail.java:1669
#: src/src/i2p/susi/webmail/WebMail.java:1704
#: src/src/i2p/susi/webmail/WebMail.java:1655
#: src/src/i2p/susi/webmail/WebMail.java:1656
#: src/src/i2p/susi/webmail/WebMail.java:1691
msgid "Previous"
msgstr "Föregående"
#: src/src/i2p/susi/webmail/WebMail.java:1670
#: src/src/i2p/susi/webmail/WebMail.java:1657
#, java-format
msgid "Page {0} of {1}"
msgstr "Sida {0} av {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1672
#: src/src/i2p/susi/webmail/WebMail.java:1673
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
msgid "Last"
msgstr "Sista"
#: src/src/i2p/susi/webmail/WebMail.java:1672
#: src/src/i2p/susi/webmail/WebMail.java:1673
#: src/src/i2p/susi/webmail/WebMail.java:1705
#: src/src/i2p/susi/webmail/WebMail.java:1659
#: src/src/i2p/susi/webmail/WebMail.java:1660
#: src/src/i2p/susi/webmail/WebMail.java:1692
msgid "Next"
msgstr "Nästa"
#: src/src/i2p/susi/webmail/WebMail.java:1676
#: src/src/i2p/susi/webmail/WebMail.java:1663
msgid "Pagesize:"
msgstr "Pagesize:"
#: src/src/i2p/susi/webmail/WebMail.java:1677
#: src/src/i2p/susi/webmail/WebMail.java:1664
msgid "Set"
msgstr "Ställ"
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Really delete this message?"
msgstr "Vill du verkligen radera detta meddelande?"
#: src/src/i2p/susi/webmail/WebMail.java:1687
#: src/src/i2p/susi/webmail/WebMail.java:1674
msgid "Yes, really delete it!"
msgstr "Ja, radera det verkligen!"
#: src/src/i2p/susi/webmail/WebMail.java:1706
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "Back to Folder"
msgstr "Tillbaka till mapp"
#: src/src/i2p/susi/webmail/WebMail.java:1713
#: src/src/i2p/susi/webmail/WebMail.java:1700
msgid "Date:"
msgstr "Datum:"
#: src/src/i2p/susi/webmail/WebMail.java:1724
#: src/src/i2p/susi/webmail/WebMail.java:1711
msgid "Could not fetch mail."
msgstr "Kunde inte hämta e-post."

View File

@ -24,3 +24,14 @@ build.built-by=unknown
# Uncomment the next line to prevent building EXEs (changing it to false will have no impact)
#noExe=true
# Change this to false if you don't have gettext
# Note that this does not prevent gettext from running if installed; to be fixed
require.gettext=true
# Additional classpath if required
#javac.classpathe=/PATH/TO/pack200.jar
# Optional compiler args
# This one keeps gcj a lot quieter
#javac.compilerargs=-warn:-unchecked,raw,unused,serial

View File

@ -1,21 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<project basedir="." default="all" name="i2p">
<!-- Things you might want to change -->
<!-- This keeps gcj a lot quieter -->
<!--
<property name="javac.compilerargs" value="-warn:-unchecked,raw,unused,serial" />
-->
<!-- Additional classpath. No longer required; we find pack200 classes at runtime.
See core/java/src/net/i2p/util/FileUtil.java for more info.
-->
<!--
<property name="javac.classpath" value="/PATH/TO/pack200.jar" />
-->
<!-- change this to false if you don't have gettext -->
<property name="require.gettext" value="true" />
<!-- Include property files so that values can be easily overridden. Currently just useful for javadoc hosters -->
<!-- Include property files so that values can be easily overridden.
Users should create an override.properties file to make changes.
-->
<property file="override.properties"/>
<property file="build.properties"/>
@ -125,6 +113,11 @@
<ant dir="apps/addressbook/" target="war" />
</target>
<!-- jar only (no war) for Android -->
<target name="buildI2PTunnelJar" depends="buildStreaming" >
<ant dir="apps/i2ptunnel/java/" target="jar" />
</target>
<target name="buildI2PTunnel" depends="buildStreaming, buildJetty" >
<ant dir="apps/i2ptunnel/java/" target="build" />
</target>
@ -420,9 +413,9 @@
splitindex="true"
doctitle="I2P Javadocs for Release ${release.number} Build ${i2p.build.number}${build.extra}"
windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
<group title="Core SDK (i2p.jar)" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:org.xlattice.crypto.filters:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
<group title="Core SDK (i2p.jar)" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
<group title="Streaming Library" packages="net.i2p.client.streaming" />
<group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject" />
<group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject:org.xlattice.crypto.filters" />
<group title="Router Console" packages="net.i2p.router.web" />
<!-- apps and bridges starting here, alphabetical please -->
<group title="Addressbook Application" packages="net.i2p.addressbook" />
@ -489,11 +482,11 @@
splitindex="true"
doctitle="I2P Unit Test Javadocs for Release ${release.number} Build ${i2p.build.number}${build.extra}"
windowtitle="I2P Anonymous Network - Java Documentation - Version ${release.number}">
<group title="Core SDK" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:org.xlattice.crypto.filters:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
<group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject" />
<group title="Core SDK" packages="net.i2p:net.i2p.*:net.i2p.client:net.i2p.client.*:net.i2p.internal:net.i2p.internal.*:freenet.support.CPUInformation:org.bouncycastle.crypto:org.bouncycastle.crypto.*:gnu.crypto.*:gnu.gettext:org:com.nettgryppa.security:net.metanotion:net.metanotion.*" />
<group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject:org.xlattice.crypto.filters" />
<sourcepath>
<pathelement location="core/java/test" />
<pathelement location="router/java/test" />
<pathelement location="core/java/test/junit" />
<pathelement location="router/java/test/junit" />
</sourcepath>
<classpath>
<pathelement location="build/i2p.jar" />
@ -1028,12 +1021,6 @@
</exec>
</target>
<target name="updateTest" depends="prepupdate">
<ant dir="core/java/" target="jarTest" />
<copy file="core/java/build/i2ptest.jar" todir="pkg-temp/lib" />
<zip destfile="i2pupdate.zip" basedir="pkg-temp" />
</target>
<target name="prepupdate" depends="build2, prepupdateSmall, prepConsoleDocUpdates, prepCertificates, prep-script-translation">
<copy file="build/BOB.jar" todir="pkg-temp/lib/" />
<copy file="build/sam.jar" todir="pkg-temp/lib/" />
@ -1292,25 +1279,30 @@
</target>
<!-- end custom installers -->
<!-- unit tests -->
<target name="updateTest" depends="prepupdate">
<ant dir="core/java/" target="jarTest" />
<copy file="core/java/build/i2ptest.jar" todir="pkg-temp/lib" />
<zip destfile="i2pupdate.zip" basedir="pkg-temp" />
</target>
<target name="test" depends="buildProperties, jbigi" >
<mkdir dir="reports/core/junit/" />
<ant dir="core/java/" target="test" />
</target>
<target name="junit.report" depends="buildProperties" >
<ant dir="core/java/" target="junit.report" />
</target>
<target name="clover.report" depends="buildProperties" >
<target name="clover.report" depends="buildProperties" if="with.clover">
<ant dir="core/java/" target="clover.report" />
</target>
<target name="test.report" depends="junit.report, clover.report"/>
<target name="cobertura.report" depends="buildProperties" if="with.cobertura">
<ant dir="core/java/" target="cobertura.report" />
</target>
<target name="test.report" depends="junit.report, clover.report, cobertura.report"/>
<target name="fulltest" depends="buildProperties" >
<ant dir="core/java/" target="fulltest" />
<ant dir="router/java/" target="fulltest" />
</target>
<target name="fullclovertest" depends="buildProperties" >
<ant dir="core/java/" target="fullclovertest" />
<ant dir="router/java/" target="fullclovertest" />
</target>
<!-- end unit tests -->
<target name="testscripts" >
<exec executable="tests/scripts/checkcerts.sh" failonerror="true" />

View File

@ -28,17 +28,6 @@
</javac>
</target>
<target name="compileTest">
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<!-- junit classes are in ant runtime -->
<javac srcdir="./src:./test" debug="true" source="1.5" target="1.5" deprecation="on"
includeAntRuntime="true"
destdir="./build/obj" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="listChangedFiles" if="mtn.available" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
@ -73,56 +62,165 @@
</uptodate>
</target>
<target name="jarTest" depends="compileTest">
<jar destfile="./build/i2ptest.jar" basedir="./build/obj" includes="**/*.class" />
</target>
<target name="javadoc">
<mkdir dir="./build" />
<mkdir dir="./build/javadoc" />
<javadoc sourcepath="./src:./test" destdir="./build/javadoc" packagenames="*" use="true" splitindex="true" windowtitle="I2P SDK" />
<javadoc sourcepath="./src:./test/junit" destdir="./build/javadoc" packagenames="*" use="true" splitindex="true" windowtitle="I2P SDK" />
</target>
<target name="prepareTest" depends="compileTest" if="with.cobertura">
<!-- scala paths -->
<target name="scala.init">
<property name="scala-library.jar" value="${scalatest.libs}/scala-library.jar" />
<property name="scalatest.jar" value="${scalatest.libs}/scalatest.jar" />
<taskdef resource="scala/tools/ant/antlib.xml">
<classpath>
<pathelement location="${scalatest.libs}/scala-compiler.jar" />
<pathelement location="${scala-library.jar}" />
</classpath>
</taskdef>
</target>
<!-- unit tests -->
<target name="scalatest.compileTest" depends="jar, scala.init">
<mkdir dir="./build" />
<mkdir dir="./build/obj_scala" />
<scalac srcdir="./test/scalatest" destdir="./build/obj_scala" deprecation="on" >
<classpath>
<pathelement location="${scala-library.jar}" />
<pathelement location="${scalatest.jar}" />
<pathelement location="./build/i2p.jar" />
</classpath>
</scalac>
</target>
<target name="junit.compileTest" depends="compile">
<mkdir dir="./build" />
<mkdir dir="./build/obj" />
<!-- junit and hamcrest classes should be in ant runtime -->
<javac srcdir="./test/junit" debug="true" source="1.5" target="1.5" deprecation="on"
includeAntRuntime="true"
destdir="./build/obj" >
<compilerarg line="${javac.compilerargs}" />
</javac>
</target>
<target name="jarTest" depends="junit.compileTest">
<jar destfile="./build/i2ptest.jar" basedir="./build/obj" includes="**/*.class" />
</target>
<!-- preparation of code coverage tool of choice -->
<target name="prepareClover" depends="compile" if="with.clover">
<taskdef resource="clovertasks"/>
<mkdir dir="../../reports/core/clover" />
<clover-setup initString="../../reports/core/clover/coverage.db"/>
</target>
<target name="prepareCobertura" depends="compile" if="with.cobertura">
<taskdef classpath="${with.cobertura}" resource="tasks.properties" onerror="report" />
<mkdir dir="./build/obj_test" />
<cobertura-instrument todir="./build/obj_test">
<mkdir dir="./build/obj_cobertura" />
<delete file="./cobertura.ser" />
<cobertura-instrument todir="./build/obj_cobertura">
<fileset dir="./build/obj">
<include name="**/*.class"/>
<!-- exclude Test classes -->
<exclude name="**/*Test.class" />
<exclude name="**/*TestSuite.class" />
<!-- specific excludes -->
<exclude name="**/AllCoreTests.class" />
<exclude name="**/stat/SimpleStatDumper.class" />
<exclude name="**/stat/SizeMeasure.class" />
<exclude name="**/stat/StatLogSplitter.class" />
<!-- exclude anything not in net.i2p.* -->
<exclude name="com/nettgryppa/**/*.class" />
<exclude name="freenet/**/*.class" />
<exclude name="gnu/**/*.class" />
<exclude name="net/metanotion/**/*.class" />
<exclude name="org/bouncycastle/**/*.class" />
<exclude name="org/xlattice/**/*.class" />
</fileset>
</cobertura-instrument>
</target>
<target name="test" depends="clean, compileTest, prepareTest">
<target name="prepareTest" depends="prepareClover, prepareCobertura" />
<!-- end preparation of code coverage tool -->
<target name="scalatest.test" depends="clean, scalatest.compileTest, prepareTest">
<mkdir dir="../../reports/core/scalatest/" />
<delete>
<fileset dir="../../reports/core/scalatest">
<include name="TEST-*.xml"/>
</fileset>
</delete>
<taskdef name="scalatest" classname="org.scalatest.tools.ScalaTestAntTask">
<classpath>
<pathelement location="${scala-library.jar}" />
<pathelement location="${scalatest.jar}" />
<pathelement location="./build/obj_cobertura" />
<pathelement location="./build/obj" />
<pathelement location="../../build/jbigi.jar" />
<pathelement location="${with.clover}" />
<pathelement location="${with.cobertura}" />
</classpath>
</taskdef>
<scalatest runpath="./build/obj_scala" fork="yes" maxmemory="384M">
<tagsToExclude>
SlowTests
</tagsToExclude>
<reporter type="stdout" />
<reporter type="junitxml" directory="../../reports/core/scalatest/" />
</scalatest>
<!-- fetch the real hostname of this machine -->
<exec executable="hostname" outputproperty="host.name"/>
<!-- set if unset -->
<property name="host.fakename" value="i2ptester" />
<!-- replace hostname that junit inserts into reports with fake one -->
<replace dir="../../reports/core/scalatest/" token="${host.name}" value="${host.fakename}"/>
</target>
<target name="junit.test" depends="clean, junit.compileTest, prepareTest">
<mkdir dir="../../reports/core/junit/" />
<delete>
<fileset dir="../../reports/core/junit">
<include name="TEST-*.xml"/>
</fileset>
</delete>
<mkdir dir="../../reports/" />
<mkdir dir="../../reports/core/" />
<mkdir dir="../../reports/core/junit/" />
<junit printsummary="on" fork="yes" maxmemory="384m">
<sysproperty key="net.sourceforge.cobertura.datafile" file="./cobertura.ser" />
<classpath>
<pathelement path="${classpath}" />
<pathelement location="./build/obj_test" />
<pathelement location="${ant.home}/lib/hamcrest-core.jar" />
<pathelement location="${ant.home}/lib/hamcrest-library.jar" />
<pathelement location="${ant.home}/lib/hamcrest-integration.jar" />
<pathelement location="./build/obj_cobertura" />
<pathelement location="./build/obj" />
<pathelement location="../../build/jbigi.jar" />
<pathelement location="${with.clover}" />
<pathelement location="${with.cobertura}" />
</classpath>
<batchtest todir="../../reports/core/junit/">
<fileset dir="./test/">
<fileset dir="./test/junit/">
<include name="**/*Test.java" />
<exclude name="**/ElGamalAESEngineTest.java" />
<exclude name="**/StructureTest.java" />
<!-- temporarily exclude slow tests -->
<exclude name="**/HMACSHA256Test.java" />
<exclude name="**/SHA1HashTest.java" />
<exclude name="**/SHA256Test.java" />
<exclude name="**/DataHelperTest.java" />
<!-- end of slow tests -->
</fileset>
</batchtest>
<formatter type="xml"/>
</junit>
<!-- fetch the real hostname of this machine -->
<exec executable="hostname" outputproperty="host.name"/>
<!-- set if unset -->
<property name="host.fakename" value="i2ptester" />
<!-- replace hostname that junit inserts into reports with fake one -->
<replace dir="../../reports/core/junit/" token="${host.name}" value="${host.fakename}"/>
</target>
<target name="cobertura" depends="test" if="with.cobertura">
<mkdir dir="../../reports/core/cobertura" />
<cobertura-report format="xml" srcdir="./src" destdir="../../reports/core/cobertura" />
<delete file="./cobertura.ser" />
<target name="test" depends="scalatest.test"/>
<!-- test reports -->
<target name="scalatest.report">
<junitreport todir="../../reports/core/scalatest">
<fileset dir="../../reports/core/scalatest">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="../../reports/core/html/scalatest"/>
</junitreport>
</target>
<target name="junit.report">
<junitreport todir="../../reports/core/junit">
@ -132,8 +230,25 @@
<report format="frames" todir="../../reports/core/html/junit"/>
</junitreport>
</target>
<target name="test.report" depends="junit.report"/>
<target name="fulltest" depends="test, junit.report" />
<target name="clover.report" depends="test" if="with.clover">
<clover-report>
<current outfile="../../reports/core/html/clover">
<format type="html"/>
</current>
</clover-report>
</target>
<target name="cobertura.report" depends="test" if="with.cobertura">
<mkdir dir="../../reports/core/cobertura" />
<cobertura-report format="xml" srcdir="./src" destdir="../../reports/core/cobertura" />
<mkdir dir="../../reports/core/html/cobertura" />
<cobertura-report format="html" srcdir="./src" destdir="../../reports/core/html/cobertura" />
<delete file="./cobertura.ser" />
</target>
<target name="test.report" depends="scalatest.report, clover.report, cobertura.report"/>
<!-- end test reports -->
<target name="fulltest" depends="test, test.report" />
<!-- end unit tests -->
<target name="clean">
<delete dir="./build" />
</target>

View File

@ -16,7 +16,7 @@ package net.i2p;
public class CoreVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = "0.9";
public final static String VERSION = "0.9.1";
public static void main(String args[]) {
System.out.println("I2P Core version: " + VERSION);

View File

@ -110,10 +110,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
private final Object _leaseSetWait = new Object();
/** whether the session connection has already been closed (or not yet opened) */
protected boolean _closed;
protected volatile boolean _closed;
/** whether the session connection is in the process of being closed */
protected boolean _closing;
protected volatile boolean _closing;
/** have we received the current date from the router yet? */
private boolean _dateReceived;
@ -121,7 +121,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
private final Object _dateReceivedLock = new Object();
/** whether the session connection is in the process of being opened */
protected boolean _opening;
protected volatile boolean _opening;
/** monitor for waiting until opened */
private final Object _openingWait = new Object();
@ -477,7 +477,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
* @since 0.9.1
*/
private void startVerifyUsage() {
SimpleScheduler.getInstance().addEvent(new VerifyUsage(), VERIFY_USAGE_TIME);
_context.simpleScheduler().addEvent(new VerifyUsage(), VERIFY_USAGE_TIME);
}
/**
@ -501,7 +501,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
toCheck.clear();
}
toCheck.addAll(_availableMessages.keySet());
SimpleScheduler.getInstance().addEvent(this, VERIFY_USAGE_TIME);
_context.simpleScheduler().addEvent(this, VERIFY_USAGE_TIME);
}
}
@ -967,7 +967,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa
boolean close = Boolean.valueOf(_options.getProperty("i2cp.closeOnIdle")).booleanValue();
if (reduce || close) {
updateActivity();
SimpleScheduler.getInstance().addEvent(new SessionIdleTimer(_context, this, reduce, close), SessionIdleTimer.MINIMUM_TIME);
_context.simpleScheduler().addEvent(new SessionIdleTimer(_context, this, reduce, close), SessionIdleTimer.MINIMUM_TIME);
}
}

View File

@ -112,6 +112,6 @@ class SessionIdleTimer implements SimpleTimer.TimedEvent {
} else {
nextDelay = _minimumTime - (now - lastActivity);
}
SimpleScheduler.getInstance().addEvent(this, nextDelay);
_context.simpleScheduler().addEvent(this, nextDelay);
}
}

View File

@ -394,7 +394,8 @@ public class ElGamalAESEngine {
*
* @param target public key to which the data should be encrypted.
* @param key session key to use during encryption
* @param tagsForDelivery session tags to be associated with the key (or newKey if specified), or null
* @param tagsForDelivery session tags to be associated with the key (or newKey if specified), or null;
* 200 max enforced at receiver
* @param currentTag sessionTag to use, or null if it should use ElG (i.e. new session)
* @param newKey key to be delivered to the target, with which the tagsForDelivery should be associated, or null
* @param paddedSize minimum size in bytes of the body after padding it (if less than the
@ -423,6 +424,30 @@ public class ElGamalAESEngine {
* Encrypt the data to the target using the given key and deliver the specified tags
* No new session key
* This is the one called from GarlicMessageBuilder and is the primary entry point.
*
* Re: padded size: The AES block adds at least 39 bytes of overhead to the data, and
* that is included in the minimum size calculation.
*
* In the router, we always use garlic messages. A garlic message with a single
* clove and zero data is about 84 bytes, so that's 123 bytes minimum. So any paddingSize
* <= 128 is a no-op as every message will be at least 128 bytes
* (Streaming, if used, adds more overhead).
*
* Outside the router, with a client using its own message format, the minimum size
* is 48, so any paddingSize <= 48 is a no-op.
*
* Not included in the minimum is a 32-byte session tag for an existing session,
* or a 514-byte ElGamal block and several 32-byte session tags for a new session.
* So the returned encrypted data will be at least 32 bytes larger than paddedSize.
*
* @param target public key to which the data should be encrypted.
* @param key session key to use during encryption
* @param tagsForDelivery session tags to be associated with the key or null;
* 200 max enforced at receiver
* @param currentTag sessionTag to use, or null if it should use ElG (i.e. new session)
* @param paddedSize minimum size in bytes of the body after padding it (if less than the
* body's real size, no bytes are appended but the body is not truncated)
*
*/
public byte[] encrypt(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery,
SessionTag currentTag, long paddedSize) {

View File

@ -24,14 +24,14 @@ import net.i2p.data.SessionTag;
* unknown (and hence always forces a full ElGamal encryption for each message).
* A more intelligent subclass should manage and persist keys and tags.
*
* TODO if we aren't going to use this for testing, make it abstract.
*/
public class SessionKeyManager {
/** session key managers must be created through an app context */
protected SessionKeyManager(I2PAppContext context) { // nop
}
/** see above */
private SessionKeyManager() { // nop
/**
* Make this public if you need a dummy SessionKeyManager for testing
*/
protected SessionKeyManager(I2PAppContext context) { // nop
}
/**
@ -88,6 +88,31 @@ public class SessionKeyManager {
return null;
}
/**
* How many to send, IF we need to.
* @since 0.9.2
*/
public int getTagsToSend() { return 0; };
/**
* @since 0.9.2
*/
public int getLowThreshold() { return 0; };
/**
* @return true if we have less than the threshold or what we have is about to expire
* @since 0.9.2
*/
public boolean shouldSendTags(PublicKey target, SessionKey key) {
return shouldSendTags(target, key, getLowThreshold());
}
/**
* @return true if we have less than the threshold or what we have is about to expire
* @since 0.9.2
*/
public boolean shouldSendTags(PublicKey target, SessionKey key, int lowThreshold) { return false; }
/**
* Determine (approximately) how many available session tags for the current target
* have been confirmed and are available

View File

@ -85,27 +85,74 @@ public class TransientSessionKeyManager extends SessionKeyManager {
/** for debugging */
private final AtomicInteger _rcvTagSetID = new AtomicInteger();
private final AtomicInteger _sentTagSetID = new AtomicInteger();
private final int _tagsToSend;
private final int _lowThreshold;
/**
* Let session tags sit around for 10 minutes before expiring them. We can now have such a large
* Let session tags sit around for this long before expiring them. We can now have such a large
* value since there is the persistent session key manager. This value is for outbound tags -
* inbound tags are managed by SESSION_LIFETIME_MAX_MS
*
*/
public final static long SESSION_TAG_DURATION_MS = 10 * 60 * 1000;
private final static long SESSION_TAG_DURATION_MS = 12 * 60 * 1000;
/**
* Keep unused inbound session tags around for up to 12 minutes (2 minutes longer than
* Keep unused inbound session tags around for this long (a few minutes longer than
* session tags are used on the outbound side so that no reasonable network lag
* can cause failed decrypts)
*
*/
public final static long SESSION_LIFETIME_MAX_MS = SESSION_TAG_DURATION_MS + 5 * 60 * 1000;
private final static long SESSION_LIFETIME_MAX_MS = SESSION_TAG_DURATION_MS + 3 * 60 * 1000;
/**
* Time to send more if we are this close to expiration
*/
private static final long SESSION_TAG_EXPIRATION_WINDOW = 90 * 1000;
/**
* a few MB? how about 16MB!
* This is the max size of _inboundTagSets.
*/
public final static int MAX_INBOUND_SESSION_TAGS = 500 * 1000; // this will consume at most a few MB
/**
* This was 100 since 0.6.1.10 (50 before that). It's important because:
* <pre>
* - Tags are 32 bytes. So it previously added 3200 bytes to an initial message.
* - Too many tags adds a huge overhead to short-duration connections
* (like http, datagrams, etc.)
* - Large messages have a much higher chance of being dropped due to
* one of their 1KB fragments being discarded by a tunnel participant.
* - This reduces the effective maximum datagram size because the client
* doesn't know when tags will be bundled, so the tag size must be
* subtracted from the maximum I2NP size or transport limit.
* </pre>
*
* Issues with too small a value:
* <pre>
* - When tags are sent, a reply leaseset (~1KB) is always bundled.
* Maybe don't need to bundle more than every minute or so
* rather than every time?
* - Does the number of tags (and the threshold of 20) limit the effective
* streaming lib window size? Should the threshold and the number of
* sent tags be variable based on the message rate?
* </pre>
*
* We have to be very careful if we implement an adaptive scheme,
* since the key manager is per-router, not per-local-dest.
* Or maybe that's a bad idea, and we need to move to a per-dest manager.
* This needs further investigation.
*
* So a value somewhat higher than the low threshold
* seems appropriate.
*
* Use care when adjusting these values. See ConnectionOptions in streaming,
* and TransientSessionKeyManager in crypto, for more information.
*
* @since 0.9.2 moved from GarlicMessageBuilder to per-SKM config
*/
public static final int DEFAULT_TAGS = 40;
/** ditto */
public static final int LOW_THRESHOLD = 30;
/**
* The session key manager should only be constructed and accessed through the
* application context. This constructor should only be used by the
@ -113,15 +160,28 @@ public class TransientSessionKeyManager extends SessionKeyManager {
*
*/
public TransientSessionKeyManager(I2PAppContext context) {
this(context, DEFAULT_TAGS, LOW_THRESHOLD);
}
/**
* @param tagsToSend how many to send at a time, may be lower or higher than lowThreshold. 1-128
* @param lowThreshold below this, send more. 1-128
* @since 0.9.2
*/
public TransientSessionKeyManager(I2PAppContext context, int tagsToSend, int lowThreshold) {
super(context);
if (tagsToSend <= 0 || tagsToSend > 128 || lowThreshold <= 0 || lowThreshold > 128)
throw new IllegalArgumentException();
_tagsToSend = tagsToSend;
_lowThreshold = lowThreshold;
_log = context.logManager().getLog(TransientSessionKeyManager.class);
_context = context;
_outboundSessions = new HashMap(64);
_inboundTagSets = new HashMap(1024);
_inboundTagSets = new HashMap(128);
context.statManager().createRateStat("crypto.sessionTagsExpired", "How many tags/sessions are expired?", "Encryption", new long[] { 10*60*1000, 60*60*1000, 3*60*60*1000 });
context.statManager().createRateStat("crypto.sessionTagsRemaining", "How many tags/sessions are remaining after a cleanup?", "Encryption", new long[] { 10*60*1000, 60*60*1000, 3*60*60*1000 });
_alive = true;
SimpleScheduler.getInstance().addEvent(new CleanupEvent(), 60*1000);
_context.simpleScheduler().addEvent(new CleanupEvent(), 60*1000);
}
@Override
@ -143,7 +203,7 @@ public class TransientSessionKeyManager extends SessionKeyManager {
int expired = aggressiveExpire();
long expireTime = _context.clock().now() - beforeExpire;
_context.statManager().addRateData("crypto.sessionTagsExpired", expired, expireTime);
SimpleScheduler.getInstance().addEvent(this, 60*1000);
_context.simpleScheduler().addEvent(this, 60*1000);
}
}
@ -292,6 +352,31 @@ public class TransientSessionKeyManager extends SessionKeyManager {
return null;
}
/**
* How many to send, IF we need to.
* @return the configured value (not adjusted for current available)
* @since 0.9.2
*/
@Override
public int getTagsToSend() { return _tagsToSend; };
/**
* @return the configured value
* @since 0.9.2
*/
@Override
public int getLowThreshold() { return _lowThreshold; };
/**
* @return true if we have less than the threshold or what we have is about to expire
* @since 0.9.2
*/
@Override
public boolean shouldSendTags(PublicKey target, SessionKey key, int lowThreshold) {
return getAvailableTags(target, key) < lowThreshold ||
getAvailableTimeLeft(target, key) < SESSION_TAG_EXPIRATION_WINDOW;
}
/**
* Determine (approximately) how many available session tags for the current target
* have been confirmed and are available

View File

@ -57,7 +57,9 @@ public class RoutingKeyGenerator {
private volatile long _lastChanged;
private final static Calendar _cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
private final static SimpleDateFormat _fmt = new SimpleDateFormat("yyyyMMdd");
private static final String FORMAT = "yyyyMMdd";
private static final int LENGTH = FORMAT.length();
private final static SimpleDateFormat _fmt = new SimpleDateFormat(FORMAT);
public byte[] getModData() {
return _currentModData;
@ -74,9 +76,7 @@ public class RoutingKeyGenerator {
* @return true if changed
*/
public synchronized boolean generateDateBasedModData() {
Date today = null;
long now = _context.clock().now();
synchronized (_cal) {
_cal.setTime(new Date(now));
_cal.set(Calendar.YEAR, _cal.get(Calendar.YEAR)); // gcj <= 4.0 workaround
_cal.set(Calendar.DAY_OF_YEAR, _cal.get(Calendar.DAY_OF_YEAR)); // gcj <= 4.0 workaround
@ -84,12 +84,13 @@ public class RoutingKeyGenerator {
_cal.set(Calendar.MINUTE, 0);
_cal.set(Calendar.SECOND, 0);
_cal.set(Calendar.MILLISECOND, 0);
today = _cal.getTime();
}
Date today = _cal.getTime();
String modVal = _fmt.format(today);
byte[] mod = new byte[modVal.length()];
for (int i = 0; i < modVal.length(); i++)
if (modVal.length() != LENGTH)
throw new IllegalStateException();
byte[] mod = new byte[LENGTH];
for (int i = 0; i < LENGTH; i++)
mod[i] = (byte)(modVal.charAt(i) & 0xFF);
boolean changed = !DataHelper.eq(_currentModData, mod);
if (changed) {
@ -112,9 +113,9 @@ public class RoutingKeyGenerator {
*/
public Hash getRoutingKey(Hash origKey) {
if (origKey == null) throw new IllegalArgumentException("Original key is null");
byte modVal[] = new byte[Hash.HASH_LENGTH + _currentModData.length];
byte modVal[] = new byte[Hash.HASH_LENGTH + LENGTH];
System.arraycopy(origKey.getData(), 0, modVal, 0, Hash.HASH_LENGTH);
System.arraycopy(_currentModData, 0, modVal, Hash.HASH_LENGTH, _currentModData.length);
System.arraycopy(_currentModData, 0, modVal, Hash.HASH_LENGTH, LENGTH);
return SHA256Generator.getInstance().calculateHash(modVal);
}

View File

@ -24,6 +24,7 @@ import java.util.Set;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicLong;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
@ -53,6 +54,10 @@ public class LogManager {
public final static String PROP_CONSOLEBUFFERSIZE = "logger.consoleBufferSize";
public final static String PROP_DISPLAYONSCREENLEVEL = "logger.minimumOnScreenLevel";
public final static String PROP_DEFAULTLEVEL = "logger.defaultLevel";
/** @since 0.9.2 */
private static final String PROP_LOG_BUFFER_SIZE = "logger.logBufferSize";
/** @since 0.9.2 */
private static final String PROP_DROP = "logger.dropOnOverflow";
public final static String PROP_RECORD_PREFIX = "logger.record.";
public final static String DEFAULT_FORMAT = DATE + " " + PRIORITY + " [" + THREAD + "] " + CLASS + ": " + MESSAGE;
@ -110,16 +115,18 @@ public class LogManager {
/** whether or not we even want to display anything on stdout */
private boolean _displayOnScreen;
/** how many records we want to buffer in the "recent logs" list */
private int _consoleBufferSize;
private int _consoleBufferSize = DEFAULT_CONSOLEBUFFERSIZE;
/** the actual "recent logs" list */
private final LogConsoleBuffer _consoleBuffer;
private int _logBufferSize = MAX_BUFFER;
private boolean _dropOnOverflow;
private final AtomicLong _droppedRecords = new AtomicLong();
private boolean _alreadyNoticedMissingConfig;
public LogManager(I2PAppContext context) {
_displayOnScreen = true;
_alreadyNoticedMissingConfig = false;
_records = new LinkedBlockingQueue(MAX_BUFFER);
_limits = new ConcurrentHashSet();
_logs = new ConcurrentHashMap(128);
_defaultLimit = Log.ERROR;
@ -127,6 +134,7 @@ public class LogManager {
_log = getLog(LogManager.class);
String location = context.getProperty(CONFIG_LOCATION_PROP, CONFIG_LOCATION_DEFAULT);
setConfig(location);
_records = new LinkedBlockingQueue(_logBufferSize);
_consoleBuffer = new LogConsoleBuffer(_consoleBufferSize);
// If we aren't in the router context, delay creating the LogWriter until required,
// so it doesn't create a log directory and log files unless there is output.
@ -243,6 +251,11 @@ public class LogManager {
boolean success = _records.offer(record);
if (!success) {
if (_dropOnOverflow) {
// TODO use the counter in a periodic drop msg
_droppedRecords.incrementAndGet();
return;
}
// the writer waits 10 seconds *or* until we tell them to wake up
// before rereading the config and writing out any log messages
synchronized (_writer) {
@ -345,15 +358,17 @@ public class LogManager {
try {
String str = config.getProperty(PROP_CONSOLEBUFFERSIZE);
if (str == null)
_consoleBufferSize = DEFAULT_CONSOLEBUFFERSIZE;
else
if (str != null)
_consoleBufferSize = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
System.err.println("Invalid console buffer size");
nfe.printStackTrace();
_consoleBufferSize = DEFAULT_CONSOLEBUFFERSIZE;
}
} catch (NumberFormatException nfe) {}
try {
String str = config.getProperty(PROP_LOG_BUFFER_SIZE);
if (str != null)
_logBufferSize = Integer.parseInt(str);
} catch (NumberFormatException nfe) {}
_dropOnOverflow = Boolean.valueOf(config.getProperty(PROP_DROP)).booleanValue();
//if (_log.shouldLog(Log.DEBUG))
// _log.debug("Log set to use the base log file as " + _baseLogfilename);

View File

@ -44,7 +44,7 @@ public class LookaheadInputStream extends FilterInputStream {
Arrays.fill(_footerLookahead, (byte)0x00);
int footerRead = 0;
while (footerRead < _footerLookahead.length) {
int read = in.read(_footerLookahead);
int read = in.read(_footerLookahead, footerRead, _footerLookahead.length - footerRead);
if (read == -1) throw new IOException("EOF reading the footer lookahead");
footerRead += read;
}

View File

@ -90,6 +90,8 @@ public class SSLEepGet extends EepGet {
/** may be null if init failed */
private SavingTrustManager _stm;
private static final boolean _isAndroid = System.getProperty("java.vendor").contains("Android");
/**
* A new SSLEepGet with a new SSLState
*/
@ -192,12 +194,23 @@ public class SSLEepGet extends EepGet {
String override = System.getProperty("javax.net.ssl.keyStore");
if (override != null)
success = loadCerts(new File(override), ks);
if (!success)
success = loadCerts(new File(System.getProperty("java.home"), "lib/security/jssecacerts"), ks);
if (!success)
success = loadCerts(new File(System.getProperty("java.home"), "lib/security/cacerts"), ks);
if (!success) {
if (_isAndroid) {
// thru API 13. As of API 14 (ICS), the file is gone, but
// ks.load(null, pw) will bring in the default certs?
success = loadCerts(new File(System.getProperty("java.home"), "etc/security/cacerts.bks"), ks);
} else {
success = loadCerts(new File(System.getProperty("java.home"), "lib/security/jssecacerts"), ks);
if (!success)
success = loadCerts(new File(System.getProperty("java.home"), "lib/security/cacerts"), ks);
}
}
if (!success) {
try {
// must be initted
ks.load(null, "changeit".toCharArray());
} catch (Exception e) {}
_log.error("All key store loads failed, will only load local certificates");
} else if (_log.shouldLog(Log.INFO)) {
int count = 0;

View File

@ -146,7 +146,7 @@ public class SimpleScheduler {
* Same as SimpleTimer.TimedEvent but use run() instead of timeReached(), and remembers the time
*/
private class RunnableEvent implements Runnable {
protected SimpleTimer.TimedEvent _timedEvent;
protected final SimpleTimer.TimedEvent _timedEvent;
protected long _scheduled;
public RunnableEvent(SimpleTimer.TimedEvent t, long timeoutMs) {

View File

@ -55,10 +55,9 @@ public class DatagramTest extends TestCase {
assertEquals(d, dd.getSender());
assertEquals(d, dd.extractSender());
}
/*public void testMakeNullDatagram() throws Exception{
public void testMakeNullDatagram() throws Exception{
ByteArrayOutputStream out = new ByteArrayOutputStream();
I2PClient client = I2PClientFactory.createClient();
Destination d = client.createDestination(out);
@ -67,9 +66,9 @@ public class DatagramTest extends TestCase {
byte[] dg = dm.makeI2PDatagram(null);
assertNull(dg);
}*/
}
/*public void testExtractNullDatagram() throws Exception{
public void testExtractNullDatagram() throws Exception{
ByteArrayOutputStream out = new ByteArrayOutputStream();
I2PClient client = I2PClientFactory.createClient();
Destination d = client.createDestination(out);
@ -77,7 +76,7 @@ public class DatagramTest extends TestCase {
I2PDatagramDissector dd = new I2PDatagramDissector();
dd.loadI2PDatagram(null);
}*/
}
public void testBadagram() throws Exception{
ByteArrayOutputStream out = new ByteArrayOutputStream();
@ -101,6 +100,7 @@ public class DatagramTest extends TestCase {
}catch(I2PInvalidDatagramException i2pide){
error = true;
}
assertTrue(error);
error = false;
try{
@ -108,6 +108,14 @@ public class DatagramTest extends TestCase {
}catch(I2PInvalidDatagramException i2pide){
error = true;
}
assertTrue(error);
error = false;
try{
dd.getHash();
}catch(I2PInvalidDatagramException i2pide){
error = true;
}
assertTrue(error);
}
}

View File

@ -0,0 +1,65 @@
package net.i2p.client.naming;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import junit.framework.TestCase;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
public class BlockfileNamingServiceTest extends TestCase {
BlockfileNamingService _bns;
List<String> _names;
public void setUp() {
I2PAppContext ctx = new I2PAppContext();
_bns = new BlockfileNamingService(ctx);
_names = null;
Properties props = new Properties();
try {
DataHelper.loadProps(props, new File("../../installer/resources/hosts.txt"), true);
_names = new ArrayList(props.keySet());
Collections.shuffle(_names);
} catch (IOException ioe) {
_bns.shutdown();
return;
}
}
public void tearDown() {
_bns.shutdown();
File f = new File("hostsdb.blockfile");
f.delete();
}
public void testRepeatedLookup() throws Exception{
int found = 0;
int notfound = 0;
int rfound = 0;
int rnotfound = 0;
for (String name : _names) {
Destination dest = _bns.lookup(name);
if (dest != null) {
found++;
String reverse = _bns.reverseLookup(dest);
if (reverse != null)
rfound++;
else
rnotfound++;
} else {
notfound++;
}
}
assertEquals(0, notfound);
assertEquals(0, rnotfound);
}
}

View File

@ -0,0 +1,45 @@
package net.i2p.client.naming;
import junit.framework.TestCase;
import net.i2p.I2PAppContext;
import net.i2p.data.Destination;
public class DummyNamingServiceTest extends TestCase {
private I2PAppContext _context;
public void setUp() {
_context = new I2PAppContext();
}
public void testLookup() throws Exception{
// The good b64 and b32 are the destination of www.i2p2.i2p =)
String goodB64 = "-KR6qyfPWXoN~F3UzzYSMIsaRy4quickbrownfoxXSzUQXQdi2Af1TV2UMH3PpPuNu-GwrqihwmLSkPFg4fv4yQQY3E10VeQVuI67dn5vlan3NGMsjqxoXTSHHt7C3nX3szXK90JSoO~tRMDl1xyqtKm94-RpIyNcLXofd0H6b02683CQIjb-7JiCpDD0zharm6SU54rhdisIUVXpi1xYgg2pKVpssL~KCp7RAGzpt2rSgz~RHFsecqGBeFwJdiko-6CYW~tcBcigM8ea57LK7JjCFVhOoYTqgk95AG04-hfehnmBtuAFHWklFyFh88x6mS9sbVPvi-am4La0G0jvUJw9a3wQ67jMr6KWQ~w~bFe~FDqoZqVXl8t88qHPIvXelvWw2Y8EMSF5PJhWw~AZfoWOA5VQVYvcmGzZIEKtFGE7bgQf3rFtJ2FAtig9XXBsoLisHbJgeVb29Ew5E7bkwxvEe9NYkIqvrKvUAt1i55we0Nkt6xlEdhBqg6xXOyIAAAA";
String goodB32 = "rjxwbsw4zjhv4zsplma6jmf5nr24e4ymvvbycd3swgiinbvg7oga.b32.i2p";
// TODO: Come up with an actual bad b64 and b32
String badB64 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
String badB32 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b32.i2p";
DummyNamingService ns = new DummyNamingService(_context);
assertNull(ns.lookup(""));
// TODO: Could this case ever come up?
//assertNull(ns.lookup(null));
Destination dGoodB64 = ns.lookup(goodB64);
assertNotNull(dGoodB64);
// TODO: Check that the b64 is preserved.
Destination dGoodB32 = ns.lookup(goodB32);
assertNotNull(dGoodB32);
// TODO: Check that the b32 is preserved.
// TODO: Come up with an actual bad b64 and b32
//assertNull(ns.lookup(badB64));
//assertNull(ns.lookup(badB32));
// DummyNameService only handles b64 and b32 addresses
assertNull(ns.lookup("www.i2p2.i2p"));
}
}

View File

@ -0,0 +1,66 @@
package net.i2p.client.naming;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import junit.framework.TestCase;
import java.io.File;
import java.util.Collections;
import net.i2p.I2PAppContext;
import net.i2p.data.Destination;
public class SingleFileNamingServiceTest extends TestCase {
private I2PAppContext _context;
public void setUp() {
_context = new I2PAppContext();
}
public void tearDown() {
File f = new File("testhosts.txt");
f.delete();
}
public void testAddRemoveLookup() throws Exception{
String testB64 = "-KR6qyfPWXoN~F3UzzYSMIsaRy4quickbrownfoxXSzUQXQdi2Af1TV2UMH3PpPuNu-GwrqihwmLSkPFg4fv4yQQY3E10VeQVuI67dn5vlan3NGMsjqxoXTSHHt7C3nX3szXK90JSoO~tRMDl1xyqtKm94-RpIyNcLXofd0H6b02683CQIjb-7JiCpDD0zharm6SU54rhdisIUVXpi1xYgg2pKVpssL~KCp7RAGzpt2rSgz~RHFsecqGBeFwJdiko-6CYW~tcBcigM8ea57LK7JjCFVhOoYTqgk95AG04-hfehnmBtuAFHWklFyFh88x6mS9sbVPvi-am4La0G0jvUJw9a3wQ67jMr6KWQ~w~bFe~FDqoZqVXl8t88qHPIvXelvWw2Y8EMSF5PJhWw~AZfoWOA5VQVYvcmGzZIEKtFGE7bgQf3rFtJ2FAtig9XXBsoLisHbJgeVb29Ew5E7bkwxvEe9NYkIqvrKvUAt1i55we0Nkt6xlEdhBqg6xXOyIAAAA";
Destination testDest = new Destination();
testDest.fromBase64(testB64);
String testB642 = "24SmhWiRDm-GzpV5Gq2sXhuvPpa1OihY7rkxQO4aHy5qKjr6zmEnZ3xQXdkFJJ0Z1lKy73XRmgCyys02G25Hl3cuxlZ2fNbp6KhOzlRKpOIAWFdSWZNF4Fp7sos0x-a-9fxOWnwwQ9MFcRYwixE~iCZf4JG~-Pd-MHgAuDhIX0P3~GmfUvo~9xPjof1ZsnaOV1zC0XUkHxZA5D6V0Bse~Ptfb66lPNcgBxIEntCStBAy~rTjaA3SdAufG29IRWDscpFq1-D4XPaXHnlXu7n7WdpFEM8WWd3ebUMqnq8XvLL1eqoWYzKCe3aaavC3W6~pJp8cxKl2IKrhvSFatHZ0chRg3B4~ja1Cxmw1psisplSkJqMnF921E6pury0i6GH52XAVoj4iiDY~EAvqDhzG-ThwlzTs~2JKzslwxOrD2ejd-dcKdi4i9xvi2JQ4Ib2Mw2ktaQhuAw3Y9EkqAs7oriQQN8N8dwIoYkJLfvh7ousm0iKJJvMt3s55PccM46SoAAAA";
Destination testDest2 = new Destination();
testDest2.fromBase64(testB642);
SingleFileNamingService ns = new SingleFileNamingService(_context, "testhosts.txt");
// testhosts.txt is empty.
assertThat(ns.size(), is(equalTo(0)));
assertThat(ns.getEntries(), is(equalTo(Collections.EMPTY_MAP)));
assertThat(ns.lookup("test.i2p"), is(nullValue()));
assertThat(ns.reverseLookup(testDest), is(nullValue()));
// First put should add the hostname.
ns.put("test.i2p", testDest);
assertThat(ns.size(), is(equalTo(1)));
assertThat(ns.getEntries().size(), is(equalTo(1)));
assertThat(ns.lookup("test.i2p"), is(equalTo(testDest)));
assertThat(ns.reverseLookup(testDest), is(equalTo("test.i2p")));
// Second put should replace the first.
ns.put("test.i2p", testDest2);
assertThat(ns.size(), is(equalTo(1)));
assertThat(ns.lookup("test.i2p"), is(equalTo(testDest2)));
assertThat(ns.reverseLookup(testDest2), is(equalTo("test.i2p")));
assertThat(ns.lookup("test.i2p"), is(not(equalTo(testDest))));
assertThat(ns.reverseLookup(testDest), is(nullValue()));
// Removing the hostname should give an empty file again.
ns.remove("test.i2p");
assertThat(ns.lookup("test.i2p"), is(nullValue()));
assertThat(ns.reverseLookup(testDest2), is(nullValue()));
// Odd quirk - the above lookups don't update size, but getEntries() does...
assertThat(ns.size(), is(equalTo(1)));
assertThat(ns.getEntries(), is(equalTo(Collections.EMPTY_MAP)));
assertThat(ns.size(), is(equalTo(0)));
}
}

View File

@ -24,7 +24,6 @@ public class CryptoTestSuite {
suite.addTestSuite(AESInputStreamTest.class);
suite.addTestSuite(CryptixAESEngineTest.class);
suite.addTestSuite(CryptixRijndael_AlgorithmTest.class);
suite.addTestSuite(DHSessionKeyBuilderTest.class);
suite.addTestSuite(DSATest.class);
suite.addTestSuite(ElGamalTest.class);
suite.addTestSuite(HMACSHA256Test.class);

View File

@ -372,8 +372,10 @@ public class ElGamalTest extends TestCase{
public void testYKGen(){
RandomSource.getInstance().nextBoolean();
I2PAppContext context = new I2PAppContext();
YKGenerator ykgen = new YKGenerator(context);
for (int i = 0; i < 5; i++) {
YKGenerator.getNextYK();
ykgen.getNextYK();
}
}
}

View File

@ -9,41 +9,24 @@ public class DataTestSuite {
TestSuite suite = new TestSuite("net.i2p.data.DataTestSuite");
suite.addTestSuite(AbuseReasonTest.class);
suite.addTestSuite(AbuseSeverityTest.class);
suite.addTestSuite(Base64Test.class);
suite.addTestSuite(BooleanTest.class);
suite.addTestSuite(CertificateTest.class);
suite.addTestSuite(CreateLeaseSetMessageTest.class);
suite.addTestSuite(CreateSessionMessageTest.class);
suite.addTestSuite(DataHelperTest.class);
suite.addTestSuite(DataStructureImplTest.class);
suite.addTestSuite(DateTest.class);
suite.addTestSuite(DestinationTest.class);
suite.addTestSuite(DestroySessionMessageTest.class);
suite.addTestSuite(DisconnectMessageTest.class);
suite.addTestSuite(HashTest.class);
suite.addTestSuite(LeaseSetTest.class);
suite.addTestSuite(LeaseTest.class);
suite.addTestSuite(MappingTest.class);
suite.addTestSuite(MessageIdTest.class);
suite.addTestSuite(MessagePayloadMessageTest.class);
suite.addTestSuite(MessageStatusMessageTest.class);
suite.addTestSuite(PayloadTest.class);
suite.addTestSuite(PrivateKeyTest.class);
suite.addTestSuite(PublicKeyTest.class);
suite.addTestSuite(ReceiveMessageBeginMessageTest.class);
suite.addTestSuite(ReceiveMessageEndMessageTest.class);
suite.addTestSuite(ReportAbuseMessageTest.class);
suite.addTestSuite(RequestLeaseSetMessageTest.class);
suite.addTestSuite(RouterAddressTest.class);
suite.addTestSuite(RouterIdentityTest.class);
suite.addTestSuite(RouterInfoTest.class);
suite.addTestSuite(SendMessageMessageTest.class);
suite.addTestSuite(SessionConfigTest.class);
suite.addTestSuite(SessionIdTest.class);
suite.addTestSuite(SessionKeyTest.class);
suite.addTestSuite(SessionStatusMessageTest.class);
suite.addTestSuite(SignatureTest.class);
suite.addTestSuite(SigningPrivateKeyTest.class);
suite.addTestSuite(SigningPublicKeyTest.class);

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