diff -Nru i2p-2.4.0/.github/workflows/ant.yml i2p-2.5.0/.github/workflows/ant.yml --- i2p-2.4.0/.github/workflows/ant.yml 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/.github/workflows/ant.yml 2024-04-10 02:29:57.000000000 +0000 @@ -5,6 +5,11 @@ on: [push] +permissions: + contents: read + pages: write + id-token: write + jobs: build: runs-on: ubuntu-latest @@ -12,9 +17,9 @@ steps: - name: GetText run: sudo apt install gettext - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up JDK 8 - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: java-version: '8' distribution: 'temurin' @@ -26,9 +31,90 @@ - name: build with Ant run: ant distclean pkg - name: Upload installer.jar - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: - name: I2P-install.jar-${{ github.sha }} + name: I2P-install-${{ github.sha }}.jar path: install.jar - + javadoc-latest: + runs-on: ubuntu-latest + steps: + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: GetText + run: sudo apt install gettext + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + - name : Generate override.properties + run: | + rm -f override.properties + echo "build.built-by=GitHub Actions" >> override.properties + echo "noExe=true" >> override.properties + - name: build with Ant + run: ant distclean javadoc updater + - name: zip javadoc + run: zip -r javadoc.zip build/javadoc i2pupdate.zip + - name: Upload javadoc.zip + uses: actions/upload-artifact@v4 + with: + name: I2P-javadoc-${{ github.sha }}.zip + path: javadoc.zip + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + # Upload javadocs to github page + path: 'build/javadoc' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + build-java7: + runs-on: ubuntu-latest + + steps: + - name: GetText + run: sudo apt install gettext + - uses: actions/checkout@v4 + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + - name : Generate override.properties + run: | + git clone https://github.com/eyedeekay/openjdk-7 "$HOME/openjdk-7" + rm -f override.properties + echo "build.built-by=GitHub Actions" >> override.properties + echo "noExe=true" >> override.properties + echo "javac.compilerargs=-bootclasspath $HOME/openjdk-7/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:$HOME/openjdk-7/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar -Xlint:all" >> override.properties + - name: build with Ant + run: ./installer/resources/maven-dev-release.sh 1 + - name: Upload servlet-i2p.jar + uses: actions/upload-artifact@v4 + with: + name: servlet-i2p-${{ github.sha }}.jar + path: pkg-mavencentral/servlet-i2p*.jar + - name: Upload streaming.jar + uses: actions/upload-artifact@v4 + with: + name: streaming-${{ github.sha }}.jar + path: pkg-mavencentral/streaming*.jar + - name: Upload mstreaming.jar + uses: actions/upload-artifact@v4 + with: + name: mstreaming-${{ github.sha }}.jar + path: pkg-mavencentral/mstreaming*.jar + - name: Upload router.jar + uses: actions/upload-artifact@v4 + with: + name: router-${{ github.sha }}.jar + path: pkg-mavencentral/router*.jar + - name: Upload i2p.jar + uses: actions/upload-artifact@v4 + with: + name: i2p-${{ github.sha }}.jar + path: pkg-mavencentral/i2p*.jar diff -Nru i2p-2.4.0/.gitlab-ci.yml i2p-2.5.0/.gitlab-ci.yml --- i2p-2.4.0/.gitlab-ci.yml 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/.gitlab-ci.yml 2024-04-10 02:29:57.000000000 +0000 @@ -60,6 +60,42 @@ - merge_requests - tags +test:javadoc: + stage: test + image: debian:unstable-slim + variables: + SCALA: https://downloads.lightbend.com/scala/2.12.13/scala-2.12.13.deb + LIBPREFIX: /usr/share/scala/lib + LIB_SCALATEST: https://repo1.maven.org/maven2/org/scalatest/scalatest_2.12/3.0.4/scalatest_2.12-3.0.4.jar + LIB_SCALACTIC: https://repo1.maven.org/maven2/org/scalactic/scalactic_2.12/3.0.4/scalactic_2.12-3.0.4.jar + before_script: + # Fix bug installing openjdk-11-jdk-headless's manuals + - mkdir -p /usr/share/man/man1/ + - apt-get update -q + - apt-get install -y wget gettext + ant openjdk-21-jdk-headless + libmockito-java libhamcrest-java junit4 + # Install specific version of scala + - wget -qO scala.deb "${SCALA}" + - dpkg -i scala.deb + # link to the scala libs with the name `ant test` expects + - ln -s "${LIBPREFIX}/scala-xml_2.12-1.0.6.jar" "${LIBPREFIX}/scala-xml.jar" + # Download required scala libs + - wget -qO "${LIBPREFIX}/scalactic.jar" "${LIB_SCALACTIC}" + - wget -qO "${LIBPREFIX}/scalatest.jar" "${LIB_SCALATEST}" + # Point ant to the right directories + - echo scalatest.libs=/usr/share/scala/lib > override.properties + - echo junit.home=/usr/share/java >> override.properties + - echo hamcrest.home=/usr/share/java >> override.properties + - echo mockito.home=/usr/share/java >> override.properties + - echo build.built-by=GitHub Actions >> override.properties + script: + - ant javadoc + only: + - master + - merge_requests + - tags + # Make sure we can build a docker image # It's cached for later jobs build_docker: diff -Nru i2p-2.4.0/LICENSE.txt i2p-2.5.0/LICENSE.txt --- i2p-2.4.0/LICENSE.txt 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/LICENSE.txt 2024-04-10 02:29:57.000000000 +0000 @@ -267,7 +267,7 @@ See licenses/LICENSE-Apache2.0.txt See licenses/LICENSE-ECLIPSE-1.0.html - RRD4J 3.8 (jrobin.jar): + RRD4J 3.9 (jrobin.jar): Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor. Copyright (c) 2011 The OpenNMS Group, Inc. Copyright 2011 The RRD4J Authors. @@ -316,6 +316,10 @@ See licenses/LICENSE-NDT.txt Notice: I2P has changed specified portions of the Software, including the package edu.internet2.ndt. + Router Console Iframe-resizer 4.3.9: + Copyright (c) 2013-2023 David J. Bradshaw + See licenses/LICENSE-Iframe-resizer.txt + SAM (sam.jar): Public domain. @@ -332,6 +336,13 @@ GPLv2 (or any later version) See licenses/LICENSE-GPLv2.txt + SusiMail Pagedown: + Original Markdown Copyright (c) 2004-2005 John Gruber + Original Showdown code copyright (c) 2007 John Fraser + Modifications and bugfixes (c) 2009 Dana Robinson + Modifications and bugfixes (c) 2009-2014 Stack Exchange Inc. + See licenses/LICENSE-pagedown.txt + Systray (systray.jar): Public domain. @@ -351,7 +362,7 @@ Admin Manager: Public domain - Gradle wrapper 5.2.1: + Gradle wrapper 8.5: (not included in most distribution packages) - Copyright (c) 2017 the original author or authors. + Copyright (c) 2023 the original author or authors. See licenses/LICENSE-Apache2.0.txt diff -Nru i2p-2.4.0/apps/addressbook/java/src/net/i2p/router/naming/BlockfileNamingService.java i2p-2.5.0/apps/addressbook/java/src/net/i2p/router/naming/BlockfileNamingService.java --- i2p-2.4.0/apps/addressbook/java/src/net/i2p/router/naming/BlockfileNamingService.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/addressbook/java/src/net/i2p/router/naming/BlockfileNamingService.java 2024-04-10 02:29:57.000000000 +0000 @@ -762,6 +762,10 @@ */ @Override public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) { + if (hostname.endsWith(".i2p.alt")) { + // RFC 9476 + hostname = hostname.substring(0, hostname.length() - 4); + } Destination rv = lookup2(hostname, lookupOptions, storedOptions); if (rv == null) { // if hostname starts with "www.", strip and try again @@ -1431,6 +1435,8 @@ } /** + * Broken prior to 0.9.62, would only return one name. + * * @param options If non-null and contains the key "list", get * from that list (default "hosts.txt", NOT all lists) * Key "skip": skip that many entries @@ -1502,6 +1508,7 @@ break; } } + iter.next(); if (search != null && key.indexOf(search) < 0) continue; rv.add(key); diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BWLimits.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BWLimits.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BWLimits.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BWLimits.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,6 +6,7 @@ import java.util.Properties; +import net.i2p.I2PAppContext; import net.i2p.client.I2PSessionException; import net.i2p.client.I2PClient; import net.i2p.client.I2PSession; @@ -32,7 +33,9 @@ session.connect(); rv = session.bandwidthLimits(); session.destroySession(); - } catch (I2PSessionException ise) {} + } catch (I2PSessionException ise) { + I2PAppContext.getGlobalContext().logManager().getLog(BWLimits.class).warn("BWL fail", ise); + } return rv; } diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthListener.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthListener.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthListener.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthListener.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,63 @@ +package org.klomp.snark; + +/** + * Bandwidth and bandwidth limits + * + * Maintain three bandwidth estimators: + * Sent, received, and requested. + * + * @since 0.9.62 + */ +public interface BandwidthListener { + + /** + * The average rate in Bps + */ + public long getUploadRate(); + + /** + * The average rate in Bps + */ + public long getDownloadRate(); + + /** + * We unconditionally sent this many bytes + */ + public void uploaded(int size); + + /** + * We unconditionally received this many bytes + */ + public void downloaded(int size); + + /** + * Should we send this many bytes? + * Do NOT call uploaded() if this returns true. + */ + public boolean shouldSend(int size); + + /** + * Should we request this many bytes? + */ + public boolean shouldRequest(Peer peer, int size); + + /** + * Current limit in BPS + */ + public long getUpBWLimit(); + + /** + * Current limit in BPS + */ + public long getDownBWLimit(); + + /** + * Are we currently over the limit? + */ + public boolean overUpBWLimit(); + + /** + * Are we currently over the limit? + */ + public boolean overDownBWLimit(); +} diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthManager.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthManager.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthManager.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/BandwidthManager.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,179 @@ +package org.klomp.snark; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.util.Log; +import net.i2p.util.SyntheticREDQueue; + +/** + * Bandwidth and bandwidth limits + * + * Maintain three bandwidth estimators: + * Sent, received, and requested. + * + * There are three layers of BandwidthListeners: + *
+ *  BandwidthManager (total)
+ *      PeerCoordinator (per-torrent)
+ *          Peer/WebPeer (per-connection)
+ *
+ * + * Here at the top, we use SyntheticRedQueues for accurate + * and current moving averages of up, down, and requested bandwidth. + * + * At the lower layers, simple weighted moving averages of + * three buckets of 40 seconds each (2 minutes total) are used + * for up and down, and requested is delegated here. + * + * The lower layers must report to the next-higher layer. + * + * At the Peer layer, we report inbound piece data per-read, + * not per-piece, to get a smoother inbound estimate. + * + * Only the following data are counted by the BandwidthListeners: + * + * + * No overhead at any layer is accounted for. + * + * @since 0.9.62 + */ +public class BandwidthManager implements BandwidthListener { + + private final I2PAppContext _context; + private final Log _log; + private SyntheticREDQueue _up, _down, _req; + + BandwidthManager(I2PAppContext ctx, int upLimit, int downLimit) { + _context = ctx; + _log = ctx.logManager().getLog(BandwidthManager.class); + _up = new SyntheticREDQueue(ctx, upLimit); + _down = new SyntheticREDQueue(ctx, downLimit); + // Allow down limit a little higher based on testing + // Allow req limit a little higher still because it uses RED + // so it actually kicks in sooner. + _req = new SyntheticREDQueue(ctx, downLimit * 110 / 100); + } + + /** + * Current limit in Bps + */ + void setUpBWLimit(long upLimit) { + int limit = (int) Math.min(upLimit, Integer.MAX_VALUE); + if (limit != getUpBWLimit()) + _up = new SyntheticREDQueue(_context, limit); + } + + /** + * Current limit in Bps + */ + void setDownBWLimit(long downLimit) { + int limit = (int) Math.min(downLimit, Integer.MAX_VALUE); + if (limit != getDownBWLimit()) { + _down = new SyntheticREDQueue(_context, limit); + _req = new SyntheticREDQueue(_context, limit * 110 / 100); + } + } + + /** + * The average rate in Bps + */ + long getRequestRate() { + return (long) (1000f * _req.getBandwidthEstimate()); + } + + // begin BandwidthListener interface + + + /** + * The average rate in Bps + */ + public long getUploadRate() { + return (long) (1000f * _up.getBandwidthEstimate()); + } + + /** + * The average rate in Bps + */ + public long getDownloadRate() { + return (long) (1000f * _down.getBandwidthEstimate()); + } + + /** + * We unconditionally sent this many bytes + */ + public void uploaded(int size) { + _up.addSample(size); + } + + /** + * We received this many bytes + */ + public void downloaded(int size) { + _down.addSample(size); + } + + /** + * Should we send this many bytes? + * Do NOT call uploaded() if this returns true. + */ + public boolean shouldSend(int size) { + boolean rv = _up.offer(size, 1.0f); + if (!rv && _log.shouldWarn()) + _log.warn("Deny sending " + size + " bytes, upload rate " + DataHelper.formatSize(getUploadRate()) + "Bps"); + return rv; + } + + /** + * Should we request this many bytes? + * + * @param peer ignored + */ + public boolean shouldRequest(Peer peer, int size) { + boolean rv = !overDownBWLimit() && _req.offer(size, 1.0f); + if (!rv && _log.shouldWarn()) + _log.warn("Deny requesting " + size + " bytes, download rate " + DataHelper.formatSize(getDownloadRate()) + "Bps" + + ", request rate " + DataHelper.formatSize(getRequestRate()) + "Bps"); + return rv; + } + + /** + * Current limit in BPS + */ + public long getUpBWLimit() { + return _up.getMaxBandwidth(); + } + + /** + * Current limit in BPS + */ + public long getDownBWLimit() { + return _down.getMaxBandwidth(); + } + + /** + * Are we currently over the limit? + */ + public boolean overUpBWLimit() { + return getUploadRate() > getUpBWLimit(); + } + + /** + * Are we currently over the limit? + */ + public boolean overDownBWLimit() { + return getDownloadRate() > getDownBWLimit(); + } + + /** + * In HTML for debug page + */ + @Override + public String toString() { + return "
Bandwidth Limiters
Up: " + _up + + "
Down: " + _down + + "
Req: " + _req + + "
"; + } +} diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/CompleteListener.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/CompleteListener.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/CompleteListener.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/CompleteListener.java 2024-04-10 02:29:57.000000000 +0000 @@ -83,4 +83,9 @@ * @since 0.9.42 */ public boolean shouldAutoStart(); + + /** + * @since 0.9.62 + */ + public BandwidthListener getBandwidthListener(); } diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/CoordinatorListener.java 2024-04-10 02:29:57.000000000 +0000 @@ -42,15 +42,5 @@ */ public boolean overUploadLimit(int uploaders); - /** - * Is i2psnark as a whole over its limit? - */ - public boolean overUpBWLimit(); - - /** - * Is a particular peer who has this recent download rate (in Bps) over our upstream bandwidth limit? - */ - public boolean overUpBWLimit(long total); - public void addMessage(String message); } diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java 2024-04-10 02:29:57.000000000 +0000 @@ -190,6 +190,8 @@ } if (log.shouldLog(Log.INFO)) log.info("Request chunk " + chk + " from " + peer); + // ignore the rv, always request + peer.shouldRequest(state.chunkSize(chk)); sendRequest(peer, chk); } } catch (Exception e) { @@ -230,7 +232,6 @@ sendPiece(peer, piece, pc, totalSize); // Do this here because PeerConnectionOut only reports for PIECE messages peer.uploaded(pc.length); - listener.uploaded(peer, pc.length); } else if (type == TYPE_DATA) { // On close reading of BEP 9, this is the total metadata size. // Prior to 0.9.21, we sent the piece size, so we can't count on it. @@ -245,7 +246,6 @@ return; int len = is.available(); peer.downloaded(len); - listener.downloaded(peer, len); // this checks the size done = state.saveChunk(piece, bs, bs.length - len, len); if (log.shouldLog(Log.INFO)) @@ -264,6 +264,8 @@ // get the next chunk if (log.shouldLog(Log.INFO)) log.info("Request chunk " + chk + " from " + peer); + // ignore the rv, always request + peer.shouldRequest(state.chunkSize(chk)); sendRequest(peer, chk); } } else if (type == TYPE_REJECT) { diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java 2024-04-10 02:29:57.000000000 +0000 @@ -63,7 +63,7 @@ private final int piece_length; private final byte[] piece_hashes; private final long length; - private final boolean privateTorrent; + private final int privateTorrent; // 0: not present; 1: = 1; -1: = 0 private final List> announce_list; private final String comment; private final String created_by; @@ -97,7 +97,7 @@ this.piece_length = piece_length; this.piece_hashes = piece_hashes; this.length = length; - this.privateTorrent = privateTorrent; + this.privateTorrent = privateTorrent ? 1 : 0; this.announce_list = announce_list; this.comment = comment; this.created_by = created_by; @@ -118,8 +118,36 @@ } /** + * Preserves privateTorrent int value, for main() + * + * @since 0.9.62 + */ + public MetaInfo(String announce, String name, String name_utf8, List> files, List lengths, + int piece_length, byte[] piece_hashes, long length, int privateTorrent, + List> announce_list, String created_by, List url_list, String comment) + { + this.announce = announce; + this.name = name; + this.name_utf8 = name_utf8; + this.files = files == null ? null : Collections.unmodifiableList(files); + this.files_utf8 = null; + this.lengths = lengths == null ? null : Collections.unmodifiableList(lengths); + this.piece_length = piece_length; + this.piece_hashes = piece_hashes; + this.length = length; + this.privateTorrent = privateTorrent; + this.announce_list = announce_list; + this.comment = comment; + this.created_by = created_by; + this.creation_date = I2PAppContext.getGlobalContext().clock().now(); + this.url_list = url_list; + this.attributes = null; + this.info_hash = calculateInfoHash(); + } + + /** * Creates a new MetaInfo from the given InputStream. The - * InputStream must start with a correctly bencoded dictonary + * InputStream must start with a correctly bencoded dictionary * describing the torrent. * Caller must close the stream. */ @@ -144,7 +172,7 @@ /** * Creates a new MetaInfo from a Map of BEValues and the SHA1 over - * the original bencoded info dictonary (this is a hack, we could + * the original bencoded info dictionary (this is a hack, we could * reconstruct the bencoded stream and recalculate the hash). Will * NOT throw a InvalidBEncodingException if the given map does not * contain a valid announce string. @@ -257,10 +285,11 @@ // Transmission does numbers. So does libtorrent. // We handle both as of 0.9.9. // We switch to storing as number as of 0.9.14. - privateTorrent = "1".equals(o) || + boolean privat = "1".equals(o) || ((o instanceof Number) && ((Number) o).intValue() == 1); + privateTorrent = privat ? 1 : -1; } else { - privateTorrent = false; + privateTorrent = 0; } val = info.get("piece length"); @@ -477,6 +506,14 @@ * @since 0.9 */ public boolean isPrivate() { + return privateTorrent > 0; + } + + /** + * @return 0 (default), 1 (set to 1), -1 (set to 0) + * @since 0.9.62 + */ + public int getPrivateTrackerStatus() { return privateTorrent; } @@ -738,10 +775,10 @@ if (name_utf8 != null) info.put("name.utf-8", new BEValue(DataHelper.getUTF8(name_utf8))); // BEP 27 - if (privateTorrent) + if (privateTorrent != 0) // switched to number in 0.9.14 //info.put("private", new BEValue(DataHelper.getUTF8("1"))); - info.put("private", new BEValue(Integer.valueOf(1))); + info.put("private", new BEValue(Integer.valueOf(privateTorrent > 0 ? 1 : 0))); info.put("piece length", new BEValue(Integer.valueOf(piece_length))); info.put("pieces", new BEValue(piece_hashes)); @@ -876,7 +913,7 @@ List urls = url_list != null ? url_list : meta.getWebSeedURLs(); // changes/adds creation date MetaInfo meta2 = new MetaInfo(an, meta.getName(), null, meta.getFiles(), meta.getLengths(), - meta.getPieceLength(0), meta.getPieceHashes(), meta.getTotalLength(), meta.isPrivate(), + meta.getPieceLength(0), meta.getPieceHashes(), meta.getTotalLength(), meta.getPrivateTrackerStatus(), meta.getAnnounceList(), cb, urls, cm); java.io.File from = new java.io.File(args[i]); java.io.File to = new java.io.File(args[i] + ".bak"); diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,6 +2,7 @@ import java.io.DataInputStream; import java.io.DataOutput; +import java.io.EOFException; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -43,6 +44,7 @@ private RandomAccessFile raf; private final int pclen; private final File tempDir; + private final BitField bitfield; private static final int BUFSIZE = PeerState.PARTSIZE; private static final ByteCache _cache = ByteCache.getInstance(16, BUFSIZE); @@ -66,6 +68,7 @@ this.pclen = len; //this.createdTime = 0; this.tempDir = tempDir; + bitfield = new BitField((len + PeerState.PARTSIZE - 1) / PeerState.PARTSIZE); // temps for finals byte[] tbs = null; @@ -98,22 +101,27 @@ //tfile = SecureFile.createTempFile("piece", null, tempDir); // debug tempfile = SecureFile.createTempFile("piece_" + piece.getId() + '_', null, tempDir); - //I2PAppContext.getGlobalContext().logManager().getLog(PartialPiece.class).warn("Created " + tempfile); - // tfile.deleteOnExit() ??? raf = new RandomAccessFile(tempfile, "rw"); - // Do not preallocate the file space. - // Not necessary to call setLength(), file is extended when written - //traf.setLength(len); } /** * Convert this PartialPiece to a request for the next chunk. - * Used by PeerState only. This depends on the downloaded value - * as set by setDownloaded() or read(). + * Used by PeerState only. + * + * @return null if complete */ - public synchronized Request getRequest() { - return new Request(this, this.off, Math.min(this.pclen - this.off, PeerState.PARTSIZE)); + int chunk = off / PeerState.PARTSIZE; + int sz = bitfield.size(); + for (int i = chunk; i < sz; i++) { + if (!bitfield.get(i)) + return new Request(this, off, Math.min(pclen - off, PeerState.PARTSIZE)); + if (i == sz - 1) + off = pclen; + else + off += PeerState.PARTSIZE; + } + return null; } /** piece number */ @@ -129,27 +137,19 @@ } /** - * How many bytes are good - as set by setDownloaded() or read() + * @since 0.9.62 */ - public synchronized int getDownloaded() { - return this.off; + public synchronized boolean isComplete() { + return bitfield.complete(); } /** - * Call this if necessary before returning a PartialPiece to the PeerCoordinator. - * We do not use a bitmap to track individual chunks received. - * Any chunks after a 'hole' will be lost. - * @since 0.9.1 + * How many consecutive bytes are good - as set by read(). + * There may be more good bytes after "holes". */ - public synchronized void setDownloaded(int offset) { - this.off = offset; - } - -/**** - public long getCreated() { - return this.createdTime; + public synchronized int getDownloaded() { + return this.off; } -****/ /** * Piece must be complete. @@ -200,13 +200,47 @@ * * @since 0.9.1 */ - public void read(DataInputStream din, int offset, int len) throws IOException { + public void read(DataInputStream din, int offset, int len, BandwidthListener bwl) throws IOException { + if (offset % PeerState.PARTSIZE != 0) + throw new IOException("Bad offset " + offset); + int chunk = offset / PeerState.PARTSIZE; + // We read the data before checking if we have the chunk, + // because otherwise we'd have to break the peer connection if (bs != null) { - din.readFully(bs, offset, len); + // Don't use readFully() so we may update the BandwidthListener as we go + //in.readFully(bs, offset, len); + int offs = offset; + int toRead = len; + while (toRead > 0) { + int numRead = din.read(bs, offs, toRead); + if (numRead < 0) + throw new EOFException(); + offs += numRead; + toRead -= numRead; + bwl.downloaded(numRead); + } synchronized (this) { - // only works for in-order chunks - if (this.off == offset) - this.off += len; + if (bitfield.get(chunk)) { + warn("Already have chunk " + chunk + " on " + this); + } else { + bitfield.set(chunk); + if (this.off == offset) { + this.off += len; + // if this filled in a hole, advance off + int sz = bitfield.size(); + for (int i = chunk + 1; i < sz; i++) { + if (!bitfield.get(i)) + break; + warn("Hole filled in before chunk " + i + " on " + this + ' ' + bitfield); + if (i == sz - 1) + off = pclen; + else + off += PeerState.PARTSIZE; + } + } else { + warn("Out of order chunk " + chunk + " on " + this + ' ' + bitfield); + } + } } } else { // read in fully before synching on raf @@ -219,15 +253,46 @@ ba = null; tmp = new byte[len]; } - din.readFully(tmp); + + // Don't use readFully() so we may update the BandwidthListener as we go + //din.readFully(tmp); + int offs = 0; + int toRead = len; + while (toRead > 0) { + int numRead = din.read(tmp, offs, toRead); + if (numRead < 0) + throw new EOFException(); + offs += numRead; + toRead -= numRead; + bwl.downloaded(numRead); + } + synchronized (this) { - if (raf == null) - createTemp(); - raf.seek(offset); - raf.write(tmp); - // only works for in-order chunks - if (this.off == offset) - this.off += len; + if (bitfield.get(chunk)) { + warn("Already have chunk " + chunk + " on " + this); + } else { + if (raf == null) + createTemp(); + raf.seek(offset); + raf.write(tmp); + bitfield.set(chunk); + if (this.off == offset) { + this.off += len; + // if this filled in a hole, advance off + int sz = bitfield.size(); + for (int i = chunk + 1; i < sz; i++) { + if (!bitfield.get(i)) + break; + warn("Hole filled in before chunk " + i + " on " + this + ' ' + bitfield); + if (i == sz - 1) + off = pclen; + else + off += PeerState.PARTSIZE; + } + } else { + warn("Out of order chunk " + chunk + " on " + this + ' ' + bitfield); + } + } } if (ba != null) _cache.release(ba, false); @@ -300,7 +365,6 @@ try { raf.close(); } catch (IOException ioe) { - I2PAppContext.getGlobalContext().logManager().getLog(PartialPiece.class).warn("Error closing " + raf, ioe); } tempfile.delete(); } @@ -339,4 +403,11 @@ public String toString() { return "Partial(" + piece.getId() + ',' + off + ',' + pclen + ')'; } + + /** + * @since 0.9.62 + */ + public static void warn(String s) { + I2PAppContext.getGlobalContext().logManager().getLog(PartialPiece.class).warn(s); + } } diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Peer.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Peer.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Peer.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Peer.java 2024-04-10 02:29:57.000000000 +0000 @@ -40,7 +40,7 @@ import org.klomp.snark.bencode.BEValue; import org.klomp.snark.bencode.InvalidBEncodingException; -public class Peer implements Comparable +public class Peer implements Comparable, BandwidthListener { protected final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(getClass()); // Identifying property, the peer id of the other side. @@ -239,7 +239,7 @@ * * @param uploadOnly if we are complete with skipped files, i.e. a partial seed */ - public void runConnection(I2PSnarkUtil util, PeerListener listener, BitField bitfield, + public void runConnection(I2PSnarkUtil util, PeerListener listener, BandwidthListener bwl, BitField bitfield, MagnetState mState, boolean uploadOnly) { if (state != null) throw new IllegalStateException("Peer already started"); @@ -288,7 +288,7 @@ PeerConnectionIn in = new PeerConnectionIn(this, din); PeerConnectionOut out = new PeerConnectionOut(this, dout); - PeerState s = new PeerState(this, listener, metainfo, in, out); + PeerState s = new PeerState(this, listener, bwl, metainfo, in, out); if ((options & OPTION_EXTENSION) != 0) { if (_log.shouldLog(Log.DEBUG)) @@ -651,12 +651,17 @@ return (s == null) || s.choked; } + /////// begin BandwidthListener interface /////// + /** * Increment the counter. * @since 0.8.4 */ public void downloaded(int size) { downloaded.addAndGet(size); + PeerState s = state; + if (s != null) + s.getBandwidthListener().downloaded(size); } /** @@ -665,6 +670,9 @@ */ public void uploaded(int size) { uploaded.addAndGet(size); + PeerState s = state; + if (s != null) + s.getBandwidthListener().uploaded(size); } /** @@ -688,13 +696,115 @@ } /** - * Resets the downloaded and uploaded counters to zero. + * Returns the average rate in Bps + */ + public long getUploadRate() + { + return PeerCoordinator.getRate(uploaded_old); + } + + public long getDownloadRate() + { + return PeerCoordinator.getRate(downloaded_old); + } + + /** + * Should we send this many bytes? + * Do NOT call uploaded() after this. + * @since 0.9.62 + */ + public boolean shouldSend(int size) { + PeerState s = state; + if (s != null) { + boolean rv = s.getBandwidthListener().shouldSend(size); + if (rv) + uploaded.addAndGet(size); + return rv; + } + return false; + } + + /** + * Should we request this many bytes? + * @since 0.9.62 + */ + public boolean shouldRequest(int size) { + PeerState s = state; + if (s != null) + return s.getBandwidthListener().shouldRequest(this, size); + return false; + } + + /** + * Should we request this many bytes? + * @since 0.9.62 + */ + public boolean shouldRequest(Peer peer, int size) { + if (peer != this) + return false; + PeerState s = state; + if (s != null) + return s.getBandwidthListener().shouldRequest(this, size); + return false; + } + + /** + * Current limit in Bps + * @since 0.9.62 + */ + public long getUpBWLimit() { + PeerState s = state; + if (s != null) + return s.getBandwidthListener().getUpBWLimit(); + return Integer.MAX_VALUE; + } + + /** + * Is snark as a whole over its limit? + * @since 0.9.62 */ - public void resetCounters() + public boolean overUpBWLimit() { - downloaded.set(0); - uploaded.set(0); + PeerState s = state; + if (s != null) + return s.getBandwidthListener().overUpBWLimit(); + return false; + } + + /** + * Current limit in Bps + * @since 0.9.62 + */ + public long getDownBWLimit() { + PeerState s = state; + if (s != null) + return s.getBandwidthListener().getDownBWLimit(); + return Integer.MAX_VALUE; + } + + /** + * Are we currently over the limit? + * @since 0.9.62 + */ + public boolean overDownBWLimit() { + PeerState s = state; + if (s != null) + return s.getBandwidthListener().overDownBWLimit(); + return false; + } + + /** + * Push the total uploaded/downloaded onto a RATE_DEPTH deep stack + * Resets the downloaded and uploaded counters to zero. + */ + void setRateHistory() { + long up = uploaded.getAndSet(0); + PeerCoordinator.setRate(up, uploaded_old); + long down = downloaded.getAndSet(0); + PeerCoordinator.setRate(down, downloaded_old); } + + /////// end BandwidthListener interface /////// public long getInactiveTime() { PeerState s = state; @@ -761,28 +871,6 @@ return s.bitfield.complete(); } - /** - * Push the total uploaded/downloaded onto a RATE_DEPTH deep stack - */ - public void setRateHistory(long up, long down) - { - PeerCoordinator.setRate(up, uploaded_old); - PeerCoordinator.setRate(down, downloaded_old); - } - - /** - * Returns the 4-minute-average rate in Bps - */ - public long getUploadRate() - { - return PeerCoordinator.getRate(uploaded_old); - } - - public long getDownloadRate() - { - return PeerCoordinator.getRate(downloaded_old); - } - /** @since 0.9.31 */ int getTotalCommentsSent() { return _totalCommentsSent; diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java 2024-04-10 02:29:57.000000000 +0000 @@ -113,8 +113,7 @@ uploaded += upload; long download = peer.getDownloaded(); downloaded += download; - peer.setRateHistory(upload, download); - peer.resetCounters(); + peer.setRateHistory(); if (_log.shouldLog(Log.DEBUG)) { _log.debug(peer + ":" @@ -127,10 +126,9 @@ } // Choke a percentage of them rather than all so it isn't so drastic... - // unless this torrent is over the limit all by itself. - // choke 5/8 of the time when seeding and 3/8 when leeching + // choke 3/8 of the time when seeding and 1/4 when leeching boolean overBWLimitChoke = upload > 0 && - ((overBWLimit && (random.nextInt(8) > (coordinator.completed() ? 2 : 4))) || + ((overBWLimit && (random.nextInt(8) > (coordinator.completed() ? 4 : 5))) || (coordinator.overUpBWLimit(uploaded))); // If we are at our max uploaders and we have lots of other diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionIn.java 2024-04-10 02:29:57.000000000 +0000 @@ -157,7 +157,7 @@ Request req = ps.getOutstandingRequest(piece, begin, len); if (req != null) { - req.read(din); + req.read(din, peer); if (_log.shouldLog(Log.DEBUG)) _log.debug("Received data(" + piece + "," + begin + ") from " + peer); ps.pieceMessage(req); diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java 2024-04-10 02:29:57.000000000 +0000 @@ -73,6 +73,7 @@ { try { + boolean shouldThrottleRequests = false; while (!quit && peer.isConnected()) { Message m = null; @@ -89,7 +90,7 @@ synchronized(sendQueue) { - while (!quit && peer.isConnected() && sendQueue.isEmpty()) + while (!quit && peer.isConnected() && (shouldThrottleRequests || sendQueue.isEmpty())) { try { @@ -98,12 +99,13 @@ // dout.flush(); // Wait till more data arrives. - sendQueue.wait(60*1000); + sendQueue.wait(shouldThrottleRequests ? 5000 : 60*1000); } catch (InterruptedException ie) { /* ignored */ } + shouldThrottleRequests = false; } state = peer.state; if (!quit && state != null && peer.isConnected()) @@ -125,7 +127,6 @@ { if (state.choking) { it.remove(); - //SimpleTimer.getInstance().removeEvent(nm.expireEvent); if (peer.supportsFast()) { Message r = new Message(Message.REJECT, nm.piece, nm.begin, nm.length); if (_log.shouldLog(Log.DEBUG)) @@ -135,23 +136,50 @@ } nm = null; } - else if (nm.type == Message.REQUEST && state.choked) + else if (nm.type == Message.REQUEST) { - it.remove(); - //SimpleTimer.getInstance().removeEvent(nm.expireEvent); - nm = null; + if (state.choked) { + it.remove(); + nm = null; + } else if (shouldThrottleRequests) { + // previous request in queue throttled, skip this one too + if (_log.shouldWarn()) + _log.warn("Additional throttle: " + nm + " to " + peer); + nm = null; + } else if (!peer.shouldRequest(nm.length)) { + // request throttle, skip this and all others in this loop + if (_log.shouldWarn()) + _log.warn("Throttle: " + nm + " to " + peer); + shouldThrottleRequests = true; + nm = null; + } } if (nm != null) { m = nm; - //SimpleTimer.getInstance().removeEvent(nm.expireEvent); it.remove(); } } if (m == null) { - m = sendQueue.poll(); - //SimpleTimer.getInstance().removeEvent(m.expireEvent); + m = sendQueue.peek(); + if (m != null && m.type == Message.PIECE) { + // bandwidth limiting + // Pieces are the last thing in the queue to be sent so we can + // simply wait right here and then loop + if (!peer.shouldSend(Math.min(m.length, PeerState.PARTSIZE))) { + if (_log.shouldWarn()) + _log.warn("Throttle: " + m + " to " + peer); + try { + sendQueue.wait(5000); + } catch (InterruptedException ie) {} + continue; + } + } else if (m != null && m.type == Message.REQUEST) { + if (shouldThrottleRequests) + continue; + } + m = sendQueue.poll(); } } } @@ -178,17 +206,14 @@ // only count the rest of the upload after sendMessage(). int remainder = 0; if (m.type == Message.PIECE) { - if (m.len <= PeerState.PARTSIZE) { - state.uploaded(m.len); - } else { - state.uploaded(PeerState.PARTSIZE); + // first PARTSIZE was signalled in shouldSend() above + if (m.len > PeerState.PARTSIZE) remainder = m.len - PeerState.PARTSIZE; - } } m.sendMessage(dout); if (remainder > 0) - state.uploaded(remainder); + peer.uploaded(remainder); m = null; } } diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java 2024-04-10 02:29:57.000000000 +0000 @@ -55,7 +55,7 @@ /** * Coordinates what peer does what. */ -class PeerCoordinator implements PeerListener +class PeerCoordinator implements PeerListener, BandwidthListener { private final Log _log; @@ -124,6 +124,12 @@ /** Timer to handle all periodical tasks. */ private final CheckEvent timer; + // RerequestEvent and related values + private final SimpleTimer2.TimedEvent rerequestTimer; + private final Object rerequestLock = new Object(); + private boolean wasRequestAllowed; + private boolean isRerequestScheduled; + private final byte[] id; private final byte[] infohash; @@ -145,6 +151,7 @@ private final MagnetState magnetState; private final CoordinatorListener listener; + private final BandwidthListener bwListener; private final I2PSnarkUtil _util; private final RandomSource _random; @@ -163,7 +170,7 @@ * @param storage null if in magnet mode */ public PeerCoordinator(I2PSnarkUtil util, byte[] id, byte[] infohash, MetaInfo metainfo, Storage storage, - CoordinatorListener listener, Snark torrent) + CoordinatorListener listener, Snark torrent, BandwidthListener bwl) { _util = util; _random = util.getContext().random(); @@ -174,6 +181,7 @@ this.storage = storage; this.listener = listener; this.snark = torrent; + bwListener = bwl; wantedPieces = new ArrayList(); setWantedPieces(); @@ -188,6 +196,9 @@ timer = new CheckEvent(_util.getContext(), new PeerCheckerTask(_util, this)); timer.schedule((CHECK_PERIOD / 2) + _random.nextInt((int) CHECK_PERIOD)); + // NOT scheduled until needed + rerequestTimer = new RerequestEvent(); + // we don't store the last-requested time, so just delay a random amount _commentsLastRequested.set(util.getContext().clock().now() - (COMMENT_REQ_INTERVAL - _random.nextLong(COMMENT_REQ_DELAY))); } @@ -209,6 +220,42 @@ } /** + * Rerequest after unthrottled + * @since 0.9.62 + */ + private class RerequestEvent extends SimpleTimer2.TimedEvent { + /** caller must schedule */ + public RerequestEvent() { + super(_util.getContext().simpleTimer2()); + } + + public void timeReached() { + if (bwListener.shouldRequest(null, 0)) { + if (_log.shouldWarn()) + _log.warn("Now unthrottled, rerequest timer poking all peers"); + // so shouldRequest() won't fire us up again + synchronized(rerequestLock) { + wasRequestAllowed = true; + } + for (Peer p : peers) { + if (p.isInteresting() && !p.isChoked()) + p.request(); + } + synchronized(rerequestLock) { + isRerequestScheduled = false; + } + } else { + if (_log.shouldWarn()) + _log.warn("Still throttled, rerequest timer reschedule"); + synchronized(rerequestLock) { + wasRequestAllowed = false; + } + schedule(2*1000); + } + } + } + + /** * Only called externally from Storage after the double-check fails. * Sets wantedBytes too. */ @@ -328,6 +375,78 @@ return downloaded.get(); } + /////// begin BandwidthListener interface /////// + + /** + * Called when a peer has uploaded some bytes of a piece. + * @since 0.9.62 params changed + */ + public void uploaded(int size) { + uploaded.addAndGet(size); + bwListener.uploaded(size); + } + + /** + * Called when a peer has downloaded some bytes of a piece. + * @since 0.9.62 params changed + */ + public void downloaded(int size) { + downloaded.addAndGet(size); + bwListener.downloaded(size); + } + + /** + * Should we send this many bytes? + * Do NOT call uploaded() if this returns true. + * @since 0.9.62 + */ + public boolean shouldSend(int size) { + boolean rv = bwListener.shouldSend(size); + if (rv) + uploaded.addAndGet(size); + return rv; + } + + /** + * Should we request this many bytes? + * @since 0.9.62 + */ + public boolean shouldRequest(Peer peer, int size) { + boolean rv; + synchronized(rerequestLock) { + rv = bwListener.shouldRequest(peer, size); + if (!wasRequestAllowed && rv) { + // we weren't allowed and now we are + if (isRerequestScheduled) { + // just let the timer run when scheduled, do not pull it in + // to prevent thrashing + //if (_log.shouldWarn()) + // _log.warn("Now unthrottled, BUT DON'T reschedule rerequest timer"); + } else { + // schedule the timer + // we still have to throw it to the timer so we don't loop + if (_log.shouldWarn()) + _log.warn("Now unthrottled, schedule rerequest timer"); + isRerequestScheduled = true; + // no rush, wait at little while + rerequestTimer.reschedule(1000); + } + wasRequestAllowed = true; + } else if (wasRequestAllowed && !rv) { + // we were allowed and now we aren't + if (!isRerequestScheduled) { + // schedule the timer + if (_log.shouldWarn()) + _log.warn("Now throttled, schedule rerequest timer"); + isRerequestScheduled = true; + rerequestTimer.schedule(3*1000); + } + wasRequestAllowed = false; + } + } + return rv; + } + /** * Push the total uploaded/downloaded onto a RATE_DEPTH deep stack */ @@ -402,6 +521,49 @@ return rate / (factor * CHECK_PERIOD / 1000); } + /** + * Current limit in Bps + * @since 0.9.62 + */ + public long getUpBWLimit() { + return bwListener.getUpBWLimit(); + } + + /** + * Is snark as a whole over its limit? + */ + public boolean overUpBWLimit() + { + return bwListener.overUpBWLimit(); + } + + /** + * Is a particular peer who has downloaded this many bytes from us + * in the last CHECK_PERIOD over its limit? + */ + public boolean overUpBWLimit(long total) + { + return total * 1000 / CHECK_PERIOD > getUpBWLimit(); + } + + /** + * Current limit in Bps + * @since 0.9.62 + */ + public long getDownBWLimit() { + return bwListener.getDownBWLimit(); + } + + /** + * Are we currently over the limit? + * @since 0.9.62 + */ + public boolean overDownBWLimit() { + return bwListener.overDownBWLimit(); + } + + /////// end BandwidthListener interface /////// + public MetaInfo getMetaInfo() { return metainfo; @@ -452,10 +614,12 @@ if (metainfo == null) return 6; int pieces = metainfo.getPieces(); - if (pieces <= 2) + if (pieces <= 10) return 4; - if (pieces <= 5) - return 6; + if (pieces <= 25) + return 10; + if (pieces <= 80) + return 16; //int size = metainfo.getPieceLength(0); int max = _util.getMaxConnections(); // Now that we use temp files, no memory concern @@ -657,7 +821,7 @@ { public void run() { - peer.runConnection(_util, listener, bitfield, magnetState, partialComplete); + peer.runConnection(_util, listener, PeerCoordinator.this, bitfield, magnetState, partialComplete); } }; String threadName = "Snark peer " + peer.toString(); @@ -681,6 +845,8 @@ { if (storage == null || storage.getBitField().size() == 0) return; + if (overUpBWLimit()) + return; // linked list will contain all interested peers that we choke. // At the start are the peers that have us unchoked at the end the @@ -780,15 +946,6 @@ /** * Returns one of pieces in the given BitField that is still wanted or - * -1 if none of the given pieces are wanted. - */ - public int wantPiece(Peer peer, BitField havePieces) { - Piece pc = wantPiece(peer, havePieces, true); - return pc != null ? pc.getId() : -1; - } - - /** - * Returns one of pieces in the given BitField that is still wanted or * null if none of the given pieces are wanted. * * @param record if true, actually record in our data structures that we gave the @@ -1004,28 +1161,6 @@ } /** - * Called when a peer has uploaded some bytes of a piece. - */ - public void uploaded(Peer peer, int size) - { - uploaded.addAndGet(size); - - //if (listener != null) - // listener.peerChange(this, peer); - } - - /** - * Called when a peer has downloaded some bytes of a piece. - */ - public void downloaded(Peer peer, int size) - { - downloaded.addAndGet(size); - - //if (listener != null) - // listener.peerChange(this, peer); - } - - /** * Returns false if the piece is no good (according to the hash). * In that case the peer that supplied the piece should probably be * blacklisted. @@ -1159,7 +1294,7 @@ } if (uploaders.get() < allowedUploaders()) { - if(peer.isChoking()) + if(peer.isChoking() && !overUpBWLimit()) { uploaders.incrementAndGet(); interestedUploaders.incrementAndGet(); @@ -1217,7 +1352,7 @@ * Also mark the piece unrequested if this peer was the only one. * * @param peer partials, must include the zero-offset (empty) ones too. - * No dup pieces, piece.setDownloaded() must be set. + * No dup pieces. * len field in Requests is ignored. * @since 0.8.2 */ @@ -1739,27 +1874,6 @@ } /** - * Is snark as a whole over its limit? - */ - public boolean overUpBWLimit() - { - if (listener != null) - return listener.overUpBWLimit(); - return false; - } - - /** - * Is a particular peer who has downloaded this many bytes from us - * in the last CHECK_PERIOD over its limit? - */ - public boolean overUpBWLimit(long total) - { - if (listener != null) - return listener.overUpBWLimit(total * 1000 / CHECK_PERIOD); - return false; - } - - /** * Convenience * @since 0.9.2 */ diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerListener.java 2024-04-10 02:29:57.000000000 +0000 @@ -121,36 +121,6 @@ ByteArray gotRequest(Peer peer, int piece, int off, int len); /** - * Called when a (partial) piece has been downloaded from the peer. - * - * @param peer the Peer from which size bytes where downloaded. - * @param size the number of bytes that where downloaded. - */ - void downloaded(Peer peer, int size); - - /** - * Called when a (partial) piece has been uploaded to the peer. - * - * @param peer the Peer to which size bytes where uploaded. - * @param size the number of bytes that where uploaded. - */ - void uploaded(Peer peer, int size); - - /** - * Called when we are downloading from the peer and need to ask for - * a new piece. Might be called multiple times before - * gotPiece() is called. - * - * @param peer the Peer that will be asked to provide the piece. - * @param bitfield a BitField containing the pieces that the other - * side has. - * - * @return one of the pieces from the bitfield that we want or -1 if - * we are no longer interested in the peer. - */ - int wantPiece(Peer peer, BitField bitfield); - - /** * Called when we are downloading from the peer and may need to ask for * a new piece. Returns true if wantPiece() or getPartialPiece() would return a piece. * diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerState.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerState.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/PeerState.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/PeerState.java 2024-04-10 02:29:57.000000000 +0000 @@ -41,6 +41,7 @@ private final Peer peer; /** Fixme, used by Peer.disconnect() to get to the coordinator */ final PeerListener listener; + private final BandwidthListener bwListener; /** Null before we have it. locking: this */ private MetaInfo metainfo; /** Null unless needed. Contains -1 for all. locking: this */ @@ -67,6 +68,7 @@ private final List outstandingRequests = new ArrayList(); /** the tail (NOT the head) of the request queue */ private Request lastRequest = null; + private int currentMaxPipeline; // FIXME if piece size < PARTSIZE, pipeline could be bigger /** @since 0.9.47 */ @@ -81,17 +83,23 @@ /** * @param metainfo null if in magnet mode */ - PeerState(Peer peer, PeerListener listener, MetaInfo metainfo, + PeerState(Peer peer, PeerListener listener, BandwidthListener bwl, MetaInfo metainfo, PeerConnectionIn in, PeerConnectionOut out) { this.peer = peer; this.listener = listener; + bwListener = bwl; this.metainfo = metainfo; this.in = in; this.out = out; } + /** + * @since 0.9.62 + */ + BandwidthListener getBandwidthListener() { return bwListener; } + // NOTE Methods that inspect or change the state synchronize (on this). void keepAliveMessage() @@ -389,7 +397,6 @@ void uploaded(int size) { peer.uploaded(size); - listener.uploaded(peer, size); } // This is used to flag that we have to back up from the firstOutstandingRequest @@ -408,8 +415,8 @@ void pieceMessage(Request req) { int size = req.len; - peer.downloaded(size); - listener.downloaded(peer, size); + // Now reported byte-by-byte in PartialPiece + //peer.downloaded(size); if (_log.shouldLog(Log.DEBUG)) _log.debug("got end of Chunk(" @@ -417,11 +424,11 @@ + peer); // Last chunk needed for this piece? - // FIXME if priority changed to skip, we will think we're done when we aren't - if (getFirstOutstandingRequest(req.getPiece()) == -1) + PartialPiece pp = req.getPartialPiece(); + if (pp.isComplete()) { // warning - may block here for a while - if (listener.gotPiece(peer, req.getPartialPiece())) + if (listener.gotPiece(peer, pp)) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Got " + req.getPiece() + ": " + peer); @@ -445,6 +452,9 @@ } /** + * TODO this is how we tell we got all the chunks in pieceMessage() above. + * + * * @return index in outstandingRequests or -1 */ synchronized private int getFirstOutstandingRequest(int piece) @@ -873,65 +883,91 @@ * By PeerCoordinator.updatePiecePriorities() * */ - synchronized void addRequest() + void addRequest() { // no bitfield yet? nothing to request then. if (bitfield == null) return; if (metainfo == null) return; - boolean more_pieces = true; - while (more_pieces) - { - more_pieces = outstandingRequests.size() < peer.getMaxPipeline(); - // We want something and we don't have outstanding requests? - if (more_pieces && lastRequest == null) { - // we have nothing in the queue right now - if (!interesting) { - // If we need something, set interesting but delay pulling - // a request from the PeerCoordinator until unchoked. - if (listener.needPiece(this.peer, bitfield)) { - setInteresting(true); - if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " addRequest() we need something, setting interesting, delaying requestNextPiece()"); - } else { + // Initial bw check. We do the actual accounting in PeerConnectionOut. + // Implement a simple AIMD slow-start on the request queue size with + // currentMaxPipeline counter. + // Avoid cross-peer deadlocks from PeerCoordinator, call this outside the lock + if (!bwListener.shouldRequest(peer, 0)) { + synchronized(this) { + // Due to changes elsewhere we can let this go down to zero now + currentMaxPipeline /= 2; + } + if (_log.shouldWarn()) + _log.warn(peer + " throttle request, interesting? " + interesting + " choked? " + choked + + " reqq: " + outstandingRequests.size() + " maxp: " + currentMaxPipeline); + return; + } + synchronized(this) { + // adjust currentMaxPipeline + long rate = bwListener.getDownloadRate(); + long limit = bwListener.getDownBWLimit(); + if (rate < limit * 7 / 10) { + if (currentMaxPipeline < peer.getMaxPipeline()) + currentMaxPipeline++; + } else if (rate > limit * 9 / 10) { + currentMaxPipeline = 1; + } else if (currentMaxPipeline < 2) { + currentMaxPipeline++; + } + boolean more_pieces = true; + while (more_pieces) + { + more_pieces = outstandingRequests.size() < currentMaxPipeline; + // We want something and we don't have outstanding requests? + if (more_pieces && lastRequest == null) { + // we have nothing in the queue right now + if (!interesting) { + // If we need something, set interesting but delay pulling + // a request from the PeerCoordinator until unchoked. + if (listener.needPiece(this.peer, bitfield)) { + setInteresting(true); + if (_log.shouldLog(Log.DEBUG)) + _log.debug(peer + " addRequest() we need something, setting interesting, delaying requestNextPiece()"); + } else { + if (_log.shouldLog(Log.DEBUG)) + _log.debug(peer + " addRequest() needs nothing"); + } + return; + } + if (choked) { + // If choked, delay pulling + // a request from the PeerCoordinator until unchoked. if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " addRequest() needs nothing"); + _log.debug(peer + " addRequest() we are choked, delaying requestNextPiece()"); + return; } - return; - } - if (choked) { - // If choked, delay pulling - // a request from the PeerCoordinator until unchoked. - if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " addRequest() we are choked, delaying requestNextPiece()"); - return; - } - // huh? rv unused - more_pieces = requestNextPiece(); - } else if (more_pieces) // We want something - { - int pieceLength; - boolean isLastChunk; - pieceLength = metainfo.getPieceLength(lastRequest.getPiece()); - isLastChunk = lastRequest.off + lastRequest.len == pieceLength; - - // Last part of a piece? - if (isLastChunk) more_pieces = requestNextPiece(); - else + } else if (more_pieces) // We want something { - PartialPiece nextPiece = lastRequest.getPartialPiece(); - int nextBegin = lastRequest.off + PARTSIZE; - int maxLength = pieceLength - nextBegin; - int nextLength = maxLength > PARTSIZE ? PARTSIZE - : maxLength; - Request req - = new Request(nextPiece,nextBegin, nextLength); - outstandingRequests.add(req); - if (!choked) - out.sendRequest(req); - lastRequest = req; + int pieceLength; + boolean isLastChunk; + pieceLength = metainfo.getPieceLength(lastRequest.getPiece()); + isLastChunk = lastRequest.off + lastRequest.len == pieceLength; + + // Last part of a piece? + if (isLastChunk) + more_pieces = requestNextPiece(); + else + { + PartialPiece nextPiece = lastRequest.getPartialPiece(); + int nextBegin = lastRequest.off + PARTSIZE; + int maxLength = pieceLength - nextBegin; + int nextLength = maxLength > PARTSIZE ? PARTSIZE + : maxLength; + Request req + = new Request(nextPiece,nextBegin, nextLength); + outstandingRequests.add(req); + if (!choked) + out.sendRequest(req); + lastRequest = req; + } } } } @@ -972,47 +1008,6 @@ pp.release(); } } - - /******* getPartialPiece() does it all now - // Note that in addition to the bitfield, PeerCoordinator uses - // its request tracking and isRequesting() to determine - // what piece to give us next. - int nextPiece = listener.wantPiece(peer, bitfield); - if (nextPiece != -1 - && (lastRequest == null || lastRequest.getPiece() != nextPiece)) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " want piece " + nextPiece); - // Fail safe to make sure we are interested - // When we transition into the end game we may not be interested... - if (!interesting) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " transition to end game, setting interesting"); - interesting = true; - out.sendInterest(true); - } - - int piece_length = metainfo.getPieceLength(nextPiece); - //Catch a common place for OOMs esp. on 1MB pieces - byte[] bs; - try { - bs = new byte[piece_length]; - } catch (OutOfMemoryError oom) { - _log.warn("Out of memory, can't request piece " + nextPiece, oom); - return false; - } - - int length = Math.min(piece_length, PARTSIZE); - Request req = new Request(nextPiece, bs, 0, length); - outstandingRequests.add(req); - if (!choked) - out.sendRequest(req); - lastRequest = req; - return true; - } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(peer + " no more pieces to request"); - } - *******/ } // failsafe diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Request.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Request.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Request.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Request.java 2024-04-10 02:29:57.000000000 +0000 @@ -74,8 +74,8 @@ /** * @since 0.9.1 */ - public void read(DataInputStream din) throws IOException { - piece.read(din, off, len); + public void read(DataInputStream din, BandwidthListener bwl) throws IOException { + piece.read(din, off, len, bwl); } /** diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Snark.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Snark.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Snark.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Snark.java 2024-04-10 02:29:57.000000000 +0000 @@ -608,7 +608,7 @@ 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); + coordinator = new PeerCoordinator(_util, id, infoHash, meta, storage, this, this, completeListener.getBandwidthListener()); coordinator.setUploaded(savedUploaded); if (_peerCoordinatorSet != null) { // multitorrent @@ -1471,31 +1471,6 @@ } /** - * Is i2psnark as a whole over its limit? - */ - public boolean overUpBWLimit() { - if (_peerCoordinatorSet == null) - return false; - long total = 0; - for (PeerCoordinator c : _peerCoordinatorSet) { - if (!c.halted()) - total += c.getCurrentUploadRate(); - } - long limit = 1024l * _util.getMaxUpBW(); - if (_log.shouldLog(Log.INFO)) - _log.info("Total up bw: " + total + " Limit: " + limit); - return total > limit; - } - - /** - * Is a particular peer who has this recent download rate (in Bps) over our upstream bandwidth limit? - */ - public boolean overUpBWLimit(long total) { - long limit = 1024l * _util.getMaxUpBW(); - return total > limit; - } - - /** * A unique ID for this torrent, useful for RPC * @return positive value unless you wrap around * @since 0.9.30 diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java 2024-04-10 02:29:57.000000000 +0000 @@ -89,6 +89,7 @@ private final I2PSnarkUtil _util; private final PeerCoordinatorSet _peerCoordinatorSet; private final ConnectionAcceptor _connectionAcceptor; + private final BandwidthManager _bwManager; private Thread _monitor; private volatile boolean _running; private volatile boolean _stopping; @@ -104,6 +105,8 @@ //public static final String PROP_EEP_PORT = "i2psnark.eepPort"; public static final String PROP_UPLOADERS_TOTAL = "i2psnark.uploaders.total"; public static final String PROP_UPBW_MAX = "i2psnark.upbw.max"; + /** @since 0.9.62 */ + public static final String PROP_DOWNBW_MAX = "i2psnark.downbw.max"; public static final String PROP_DIR = "i2psnark.dir"; private static final String PROP_META_PREFIX = "i2psnark.zmeta."; private static final String PROP_META_RUNNING = "running"; @@ -168,7 +171,9 @@ public static final String PROP_MAX_FILES_PER_TORRENT = "i2psnark.maxFilesPerTorrent"; public static final int MIN_UP_BW = 10; + public static final int MIN_DOWN_BW = 2 * MIN_UP_BW; public static final int DEFAULT_MAX_UP_BW = 25; + private static final int DEFAULT_MAX_DOWN_BW = 200; public static final int DEFAULT_STARTUP_DELAY = 3; public static final int DEFAULT_REFRESH_DELAY_SECS = 15; private static final int DEFAULT_PAGE_SIZE = 50; @@ -237,7 +242,9 @@ // psi go - unregistered "uajd4nctepxpac4c4bdyrdw7qvja2a5u3x25otfhkptcjgd53ioq.b32.i2p", // Vuze - unregistered - "crs2nugpvoqygnpabqbopwyjqettwszth6ubr2fh7whstlos3a6q.b32.i2p" + "crs2nugpvoqygnpabqbopwyjqettwszth6ubr2fh7whstlos3a6q.b32.i2p", + "opentracker.r4sas.i2p", "punzipidirfqspstvzpj6gb4tkuykqp6quurj6e23bgxcxhdoe7q.b32.i2p", + "opentracker.skank.i2p", "by7luzwhx733fhc5ug2o75dcaunblq2ztlshzd7qvptaoa73nqua.b32.i2p" })); static { @@ -281,6 +288,7 @@ _util = new I2PSnarkUtil(_context, ctxName, this); _peerCoordinatorSet = new PeerCoordinatorSet(); _connectionAcceptor = new ConnectionAcceptor(_util, _peerCoordinatorSet); + _bwManager = new BandwidthManager(ctx, DEFAULT_MAX_UP_BW * 1024, DEFAULT_MAX_DOWN_BW * 1024); DEFAULT_AUTO_START = !ctx.isRouterContext(); String cfile = ctxName + CONFIG_FILE_SUFFIX; File configFile = new File(cfile); @@ -460,6 +468,14 @@ public I2PSnarkUtil util() { return _util; } /** + * The BandwidthManager. + * @since 0.9.62 + */ + public BandwidthListener getBandwidthListener() { + return _bwManager; + } + + /** * Use if it does not include a link. * Escapes '<' and '>' before queueing */ @@ -968,13 +984,19 @@ * @return true if we got a response from the router */ private boolean getBWLimit() { - boolean shouldSet = !_config.containsKey(PROP_UPBW_MAX); - if (shouldSet || !_context.isRouterContext()) { - int[] limits = BWLimits.getBWLimits(_util.getI2CPHost(), _util.getI2CPPort()); - if (limits == null) - return false; - if (shouldSet && limits[1] > 0) - _util.setMaxUpBW(limits[1]); + int[] limits = BWLimits.getBWLimits(_util.getI2CPHost(), _util.getI2CPPort()); + if (limits == null) + return false; + int up = limits[1]; + if (up > 0) { + int maxup = getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW); + _util.setMaxUpBW(up); + _bwManager.setUpBWLimit(Math.min(up, maxup) * 1000L); + } + int down = limits[0]; + if (down > 0) { + int maxdown = getInt(PROP_DOWNBW_MAX, DEFAULT_MAX_DOWN_BW); + _bwManager.setDownBWLimit(Math.min(down, maxdown) * 1000L); } return true; } @@ -1046,13 +1068,13 @@ public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, boolean smartSort, String refreshDelay, String startDelay, String pageSize, String seedPct, String eepHost, String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts, - String upLimit, String upBW, boolean useOpenTrackers, boolean useDHT, String theme, + String upLimit, String upBW, String downBW, boolean useOpenTrackers, boolean useDHT, String theme, String lang, boolean enableRatings, boolean enableComments, String commentName, boolean collapsePanels) { synchronized(_configLock) { locked_updateConfig(dataDir, filesPublic, autoStart, smartSort, refreshDelay, startDelay, pageSize, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, - upLimit, upBW, useOpenTrackers, useDHT, theme, + upLimit, upBW, downBW, useOpenTrackers, useDHT, theme, lang, enableRatings, enableComments, commentName, collapsePanels); } } @@ -1060,7 +1082,7 @@ private void locked_updateConfig(String dataDir, boolean filesPublic, boolean autoStart, boolean smartSort, String refreshDelay, String startDelay, String pageSize, String seedPct, String eepHost, String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts, - String upLimit, String upBW, boolean useOpenTrackers, boolean useDHT, String theme, + String upLimit, String upBW, String downBW, boolean useOpenTrackers, boolean useDHT, String theme, String lang, boolean enableRatings, boolean enableComments, String commentName, boolean collapsePanels) { boolean changed = false; boolean interruptMonitor = false; @@ -1098,6 +1120,7 @@ if ( limit != _util.getMaxUpBW()) { if ( limit >= MIN_UP_BW ) { _util.setMaxUpBW(limit); + _bwManager.setUpBWLimit(limit * 1000L); changed = true; _config.setProperty(PROP_UPBW_MAX, Integer.toString(limit)); addMessage(_t("Up BW limit changed to {0}KBps", limit)); @@ -1106,6 +1129,20 @@ } } } + if (downBW != null) { + int limit = (int) (_bwManager.getDownBWLimit() / 1024); + try { limit = Integer.parseInt(downBW.trim()); } catch (NumberFormatException nfe) {} + if ( limit != _bwManager.getDownBWLimit()) { + if ( limit >= MIN_DOWN_BW ) { + _bwManager.setDownBWLimit(limit * 1000L); + changed = true; + _config.setProperty(PROP_DOWNBW_MAX, Integer.toString(limit)); + //addMessage(_t("Up BW limit changed to {0}KBps", limit)); + } else { + //addMessage(_t("Minimum up bandwidth limit is {0}KBps", MIN_UP_BW)); + } + } + } if (startDelay != null && _context.isRouterContext()) { int minutes = _util.getStartupDelay(); @@ -1162,7 +1199,9 @@ if (dataDir != null && !dataDir.equals(getDataDir().getAbsolutePath())) { dataDir = DataHelper.stripHTML(dataDir.trim()); File dd = areFilesPublic() ? new File(dataDir) : new SecureDirectory(dataDir); - if (!dd.isAbsolute()) { + if (_util.connected()) { + addMessage(_t("Stop all torrents before changing data directory")); + } else if (!dd.isAbsolute()) { addMessage(_t("Data directory must be an absolute path") + ": " + dataDir); } else if (!dd.exists() && !dd.mkdirs()) { // save this tag for now, may need it again @@ -1178,10 +1217,16 @@ addMessage(_t("No write permissions for data directory") + ": " + dataDir); changed = true; interruptMonitor = true; - _config.setProperty(PROP_DIR, dataDir); + synchronized (_snarks) { + for (Snark snark : _snarks.values()) { + // leave magnets alone, remove everything else + if (snark.getMetaInfo() != null) + stopTorrent(snark, true); + } + _config.setProperty(PROP_DIR, dataDir); + } addMessage(_t("Data directory changed to {0}", dataDir)); } - } // Standalone (app context) language. @@ -1259,7 +1304,9 @@ Properties p = new Properties(); p.putAll(opts); _util.setI2CPConfig(i2cpHost, port, p); - _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW)); + int max = getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW); + _util.setMaxUpBW(max); + _bwManager.setUpBWLimit(max * 1000); addMessage(_t("I2CP and tunnel changes will take effect after stopping all torrents")); } else if (!reconnect) { // The usual case, the other two are if not in router context @@ -1274,7 +1321,9 @@ } addMessage(_t("I2CP settings changed to {0}", i2cpHost + ':' + port + ' ' + i2cpOpts)); _util.setI2CPConfig(i2cpHost, port, opts); - _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW)); + int max = getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW); + _util.setMaxUpBW(max); + _bwManager.setUpBWLimit(max * 1000); boolean ok = _util.connect(); if (!ok) { addMessage(_t("Unable to connect with the new settings, reverting to the old I2CP settings")); @@ -2644,7 +2693,8 @@ } } if (routerOK) - addMessage(_t("Up bandwidth limit is {0} KBps", _util.getMaxUpBW())); + addMessage(_t("Down bandwidth limit is {0} KBps", _bwManager.getUpBWLimit() / 1024) + "; " + + _t("Up bandwidth limit is {0} KBps", _util.getMaxUpBW())); } } else { autostart = false; diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Storage.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Storage.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/Storage.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/Storage.java 2024-04-10 02:29:57.000000000 +0000 @@ -904,7 +904,10 @@ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, // unicode newlines - 0x2028, 0x2029 + 0x2028, 0x2029, + // LTR/RTL + // https://security.stackexchange.com/questions/158802/how-can-this-executable-have-an-avi-extension + 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x200e, 0x200f }; // https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/UpdateRunner.java 2024-04-10 02:29:57.000000000 +0000 @@ -319,6 +319,13 @@ return _smgr.shouldAutoStart(); } + /** + * @since 0.9.62 + */ + public BandwidthListener getBandwidthListener() { + return _smgr.getBandwidthListener(); + } + //////// end CompleteListener methods private static String linkify(String url) { diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/WebPeer.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/WebPeer.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/WebPeer.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/WebPeer.java 2024-04-10 02:29:57.000000000 +0000 @@ -122,7 +122,7 @@ * @param uploadOnly if we are complete with skipped files, i.e. a partial seed */ @Override - public void runConnection(I2PSnarkUtil util, PeerListener listener, BitField ignore, + public void runConnection(I2PSnarkUtil util, PeerListener listener, BandwidthListener bwl, BitField ignore, MagnetState mState, boolean uploadOnly) { if (uploadOnly) return; @@ -204,6 +204,8 @@ if (i >= maxRequests) break; Request r = outstandingRequests.get(i); + if (!shouldRequest(r.len)) + break; if (r.getPiece() == piece && lastRequest.off + lastRequest.len == r.off) { requests.add(r); @@ -340,7 +342,7 @@ Request req = iter.next(); if (dis.available() < req.len) break; - req.read(dis); + req.read(dis, this); iter.remove(); if (_log.shouldWarn()) _log.warn("Saved chunk " + req + " recvd before failure"); @@ -363,7 +365,7 @@ _log.debug("Fetch of piece: " + piece + " chunks: " + requests.size() + " offset: " + off + " torrent offset: " + toff + " len: " + tlen + " successful"); DataInputStream dis = new DataInputStream(new ByteArrayInputStream(out.toByteArray())); for (Request req : requests) { - req.read(dis); + req.read(dis, this); } PartialPiece pp = last.getPartialPiece(); @@ -519,6 +521,29 @@ return false; } + // begin BandwidthListener interface overrides + // Because super doesn't have a PeerState + + /** + * @since 0.9.62 + */ + @Override + public void downloaded(int size) { + super.downloaded(size); + _coordinator.downloaded(size); + } + + /** + * Should we request this many bytes? + * @since 0.9.62 + */ + @Override + public boolean shouldRequest(int size) { + return _coordinator.shouldRequest(this, size); + } + + // end BandwidthListener interface overrides + // private methods below here implementing parts of PeerState private synchronized void addRequest() { @@ -548,7 +573,8 @@ Request req = new Request(nextPiece,nextBegin, nextLength); outstandingRequests.add(req); lastRequest = req; - this.notifyAll(); + if (shouldRequest(maxLength)) + this.notifyAll(); } } } @@ -567,7 +593,8 @@ Request r = pp.getRequest(); outstandingRequests.add(r); lastRequest = r; - this.notifyAll(); + if (shouldRequest(r.len)) + this.notifyAll(); return true; } else { if (_log.shouldLog(Log.WARN)) @@ -653,8 +680,6 @@ public void bytesTransferred(long alreadyTransferred, int currentWrite, long bytesTransferred, long bytesRemaining, String url) { lastRcvd = System.currentTimeMillis(); - downloaded(currentWrite); - listener.downloaded(this, currentWrite); } public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) {} diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/bencode/BDecoder.java 2024-04-10 02:29:57.000000000 +0000 @@ -294,7 +294,7 @@ /** * Returns the next bencoded value on the stream and makes sure it - * is a map (dictonary). If it is not a map it will throw + * is a map (dictionary). If it is not a map it will throw * InvalidBEncodingException. */ public BEValue bdecodeMap() throws IOException @@ -311,7 +311,7 @@ c = getNextIndicator(); while (c != 'e') { - // Dictonary keys are always strings. + // Dictionary keys are always strings. String key = bdecode().getString(); // XXX ugly hack diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/web/BasicServlet.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/web/BasicServlet.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/web/BasicServlet.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/web/BasicServlet.java 2024-04-10 02:29:57.000000000 +0000 @@ -586,6 +586,17 @@ protected static String addPaths(String base, String path) { if (path == null) return base; + if (path.equals("/")) { + // Java 17 and below: + // (new File("foo", "/")).toString() = "foo/" + // (new File("foo/", "/")).toString() = "foo/" + // Java 21: + // (new File("foo", "/")).toString() = "foo" + // (new File("foo/", "/")).toString() = "foo" + if (base.endsWith("/")) + return base; + return base + path; + } String rv = (new File(base, path)).toString(); if (SystemVersion.isWindows()) rv = rv.replace("\\", "/"); diff -Nru i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java --- i2p-2.4.0/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java 2024-04-10 02:29:57.000000000 +0000 @@ -48,6 +48,7 @@ import net.i2p.util.Translate; import net.i2p.util.UIMessages; +import org.klomp.snark.BandwidthListener; import org.klomp.snark.I2PSnarkUtil; import org.klomp.snark.MagnetURI; import org.klomp.snark.MetaInfo; @@ -346,8 +347,10 @@ "var deleteMessage2 = \"" + _t("Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?") + "\";\n" + "\n" + "\n" + - "\n"); + "\n" + + "\n"); } + out.write("\n"); out.write(HEADER_A + _themePath + HEADER_B); // ...and inject CSS to display panels uncollapsed @@ -835,6 +838,7 @@ out.write(' '); out.write(_t("Dht Debug")); out.write("
"); + out.write(_manager.getBandwidthListener().toString()); out.write(dht.renderStatusHTML()); out.write("
"); } @@ -1452,6 +1456,7 @@ String i2cpOpts = buildI2CPOpts(req); String upLimit = req.getParameter("upLimit"); String upBW = req.getParameter("upBW"); + String downBW = req.getParameter("downBW"); String refreshDel = req.getParameter("refreshDelay"); String startupDel = req.getParameter("startupDelay"); String pageSize = req.getParameter("pageSize"); @@ -1467,7 +1472,7 @@ boolean collapsePanels = req.getParameter("collapsePanels") != null; _manager.updateConfig(dataDir, filesPublic, autoStart, smartSort, refreshDel, startupDel, pageSize, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, - upLimit, upBW, useOpenTrackers, useDHT, theme, + upLimit, upBW, downBW, useOpenTrackers, useDHT, theme, lang, ratings, comments, commentsName, collapsePanels); // update servlet try { @@ -2535,7 +2540,7 @@ out.write("\" name=\"foo\" >
\n" + ""); out.write(_t("Torrent file")); - out.write(":\n" + + out.write(":\n" + ""); out.write(_t("Data dir")); @@ -2826,7 +2831,7 @@ out.write(": KBps "); out.write(_t("Half available bandwidth recommended.")); if (_context.isRouterContext()) { @@ -2836,6 +2841,24 @@ out.write(_t("Configure")); out.write("]"); } + out.write("\n" + + + ""); + out.write(_t("Down bandwidth limit")); + out.write(": KBps "); + out.write(_t("Half available bandwidth recommended.")); + if (_context.isRouterContext()) { + out.write(" ["); + out.write(_t("Configure")); + out.write("]"); + } + out.write("\n, 2014 -# slrslr, 2022-2023 +# slrslr, 2022-2024 # 57a25fa1c0d6d0e3f3bdacd805e33f7e_1a36302 , 2014 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: slrslr, 2022-2023\n" +"Last-Translator: slrslr, 2022-2024\n" "Language-Team: Czech (http://app.transifex.com/otf/I2P/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,334 +26,338 @@ msgstr "Neběží žádné další torrenty." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P tunel uzavřen." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Nebylo možné se připojit k I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Při připojování k I2P nastala chyba, zkontrolujte prosím nastavení I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "tmavý" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "světlý" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "lilek" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilka" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" -msgstr "Nejsou práva zápisu k datovému adresáři" +msgstr "Nejsou práva zápisu k datové složce" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" -msgstr "Datový adresář nemohl být vytvořen" +msgstr "Datová složka nemohla být vytvořena" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Celkový limit sdílečů změněn na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Nejmenší celkový limit sdílečů je {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Horní BW limit změněn na {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Nejmenší horní limit přenosové rychlist je {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Prodleva při startu změněna na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Doba aktualizace stavu (refresh time) změněna na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Aktualizace stavu vypnuta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Velikost stránky změněna na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Nové soubory budou veřejně přístupné" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Nové soubory nebudou veřejně přístupné" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" -msgstr "Datový adresář musí být absolutní úplná cesta" +msgstr "Datová složka musí být absolutní úplná cesta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" -msgstr "Datový adresář neexistuje" +msgstr "Datová složka neexistuje" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" -msgstr "Nejde o adresář" +msgstr "Nejde o složku" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Nečitelné" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" -msgstr "Datový adresář změněn na {0}" +msgstr "Datová složka změněna na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Změny I2CP a tunelu se projeví až po zastavení všech torrentů" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Nastavení (options) I2CP změněno na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Odpojuji se od starého I2CP cíle" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Nastavení (settings) I2CP změněno na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Nemůžu se připojit s novým nastavením I2CP, vracím se k předhozímu." -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Nemohu se opětovně připojit ani s předchozím nastavením!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Opětovně připojeno k novému I2CP cíli" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP listener restartován pro \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Automatické spuštění zapnuto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Automatické spuštění vypnuto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Zapnuto chytré řazení" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Vypnuto chytré řazení" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Zapnuto automatické spuštění" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Otevřené trackery vypnuty - aby se změna projevila je nutné restartovat všechny torrenty" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT povoleno." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." -msgstr "DHT zakázáno." +msgstr "DHT vypnuto." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHT změna vyžaduje vypnutí tunelu a znovuotevření" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Zapnutá Hodnocení." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Vypnutá Hodnocení." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Zapnuté Komentáře." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Vypnuté Komentáře." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Název komentáře nastaven na {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} vzhled načten." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Skládací panely zapnuty." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Skládací panely vypnuty." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Nastavení nebylo změněno." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Seznam otevřených trackerů změněn - aby se změna projevila je nutné restartovat všechny torrenty" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Privátní seznam trackerů změněn - ovlivní jen nově vytvořené torrenty." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Nemůžu uložit soubor s nastavením do souboru {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent soubor smazán: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrent soubor přesunut z {0} na {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Chyba: Nebylo možné přidat torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent již běží: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Nejde otevřít \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent s tímto infohašišem již běží: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Torrent se stejným umístěním dat již běží: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "CHYBA - Žádné I2P trackery v privátním torrentu \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Varování - Žádné I2P trackery v \"{0}\", budou oznámeny pouze I2P otevřeným trackerům a DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Varování - Žádné I2P trackery v \"{0}\", a otevřené trackery jsou vypnuté, bude k announci bude použito jen DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -361,44 +365,44 @@ "torrent." msgstr "Varování - Žádné I2P trackery v \"{0}\", a DHT i otevřené trackery jsou vypnuté, měli byste zapnout otevřené trackery nebo DHT před spuštěním torrentu." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent v \"{0}\" je chybný" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "CHYBA - nedostatek paměti, nemohu vytvořit torrent z {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Připojuji se k I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent přidán a spuštěn: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent přidán: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Získávám {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -406,56 +410,56 @@ "DHT." msgstr "Otevřené trackery jsou vypnuté a nemáme žádné DHT peery. Získání {0} možná neuspěje dokud nespustíte jiný torrent, nezapnete otevřené trackery, nebo nezapnete DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Přídávám {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Stahování již běží: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Chyba: nepodařilo se zkopírovat soubor torrentu do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Příliš mnoho souborů v \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Torrent soubor \"{0}\" nemůže končit v \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Žádné části v \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Příliš mnoho částí v \"{0}\", omezení je {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Části jsou příliš velké v \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Omezení je {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" nemá žádná data!" @@ -465,94 +469,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrenty větší než {0}B nejsou zatím podporovány \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Chyba: Nebylo možné odebrat torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent zastaven: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent smazán: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Přidávání torrents v {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Spouštění torrentu {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Šířka pásma nahrávání je {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Stahování dokončeno: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Chyba torrentu {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Otevírání I2P tunelu" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Otevírání I2P tunelu a spuštění všech torrentů." -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Zastavování všech torrentů a zavírání I2P tunelu." -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Zavírání I2P tunelu po upozornění trackerů." -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Dokončena kontrola souborů torrentu {0}, nyní {1} dokončeno" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Dokončena kontrola souborů torrentu {0}, nezměněno" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Chyba kontroly torrentu {0}" @@ -588,203 +597,203 @@ msgstr "Torrent získán z {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent je již ve frontě: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent na{0} nebyl platný" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Konfigurace" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonymní BitTorrent Klient" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark se zastavil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Router neběží" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Jste si jisti, že chcete smazat soubor \\''{0}\\'' (stažená data nebudou smazána) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Jste si jisti, že chcete smazat torrent \\''{0}\\'' a všechna jeho stažená data?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Obnovit stránku" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Klikněte na \"Přidat torrent\" tlačítko pro získání torrentu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "smazat zprávy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Stav" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Seřadit podle {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Skrýt peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Ukázat peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Typ souboru" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Odhadovaný zbývající čas" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Staženo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Velikost" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Poměr nahrávání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Nahráno" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "RX Rychlost" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Rychlost Stahování" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "TX Rychlost" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Rychlost Nahrávání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Zastavit všechny torrenty a I2P tunel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Zastavit vše" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Spustit všechny zastavené torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Spustit vše" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Spustit všechny torrenty a I2P tunel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "Nenalezeny žádné torrenty." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Žádné torrenty nebyly načteny." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Celkové" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -793,7 +802,7 @@ msgstr[2] "{0} torrentů" msgstr[3] "{0} torrentů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -802,7 +811,7 @@ msgstr[2] "{0} připojených peerů" msgstr[3] "{0} připojených peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -811,224 +820,224 @@ msgstr[2] "{0} DHT peerů" msgstr[3] "{0} DHT peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Cíl" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Náš cíl (identita) pro tuto relaci" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" -msgstr "Dht Ladění" +msgstr "DHT ladění" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "První" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "První stránka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Předchozí" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Předchozí stránka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Další" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Další stránka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Poslední" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Poslední stránka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Nebylo možné přidat torrent {0} do jiného torrentu: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Stažení z ne-I2P umístění {0} není podporováno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Neplatná URL: Musí začínat \"{0}\" nebo \"{1}\"" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet smazán: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Torrent soubor nemohl být smazán: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Stažení smazáno: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Data soubor smazán: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Data soubor nemohl být smazán: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" -msgstr "Adresář nemohl být smazán: {0}" +msgstr "Složka nemohla být smazána: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" -msgstr "Adresář smazán: {0}" +msgstr "Složka smazána: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Nebylo možné přidat torrent končící \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent s tímto názvem je již spuštěn: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" -msgstr "Nebylo možné přidat torrent včetně I2P adresáře: {0}" +msgstr "Nebylo možné přidat torrent včetně I2P složky: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Není možné přidat torrent {0} včetně jiného torrentu: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Chyba - Není možné zahrnout alternativní trackery bez primárního trackeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Chyba - Není možné míchat privátní a veřejné trackery v torrentu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent vytvořen pro \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Mnoho I2P trackerů vyžaduje registraci nových torrentů před seedováním - proveďte jí před spuštěním \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Chyba vytvořením torrentu pro \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Nebylo možné vytvořit torrent pro neexistující data: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" -msgstr "Chyba vytváření torrentu - musíte uvést soubor nebo adresář" +msgstr "Chyba vytváření torrentu - musíte uvést soubor nebo složku" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Smazat vybrané" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Uložit nastavení trackeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Odebráno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Přidat tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Vložte platné názvy a adresy trackerů" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Obnovit výchozí" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Obnoveny výchozí trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Kontrola" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Přidělování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Chyba Trackeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1037,17 +1046,17 @@ msgstr[2] "{0} peerů" msgstr[3] "{0} peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Startuji" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Seedování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1056,27 +1065,27 @@ msgstr[2] "Seedování {0} peerům" msgstr[3] "Seedování {0} peerům" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Dokončit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Stahuji od {0} z {1} peerů v roji" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1085,7 +1094,7 @@ msgstr[2] "Stahování od {0} peerů" msgstr[3] "Stahování od {0} peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1094,471 +1103,479 @@ msgstr[2] "Připojeno k {0} peerům" msgstr[3] "Připojeno k {0} peerům" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Nečinné" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Připojeno k {0} z {1} peerů v roji" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Žádné peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Zastaven" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Torrent detaily" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Komentáře" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Zobrazit soubory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Otevřít soubor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "kompletní" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "přejmenování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Dokončeno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Zastavit torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Zastaveno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Spustit torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Zapnout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Odebrat torrent z aktivního seznamu, smazání .torrent souboru." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Smazat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Smazat .torrent soubor a související data soubory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Smazat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Peer připojený do roje" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Neznámý" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Cíl (identita) peera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Nezajímavý (Peer nemá žádné části, které potřebujeme)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Přiškrcený (Peer nedovoluje požádat o specifické části)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Nezajímající se (Nemáme žádné části, které peer potřebuje)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Škrtící (Nedovolujeme peerovi požádat o specifické části)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detaily na {0} trackeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Informace" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Přidat torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Z URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Vložte adresu torrent souboru ke stažení (jen I2P), magnet odkaz, nebo info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Přidat torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Torrent soubor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" -msgstr "Data adresář" +msgstr "Datová složka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" -msgstr "Vložte adresář pro uložení dat v (výchozí {0})" +msgstr "Zadejte složku pro uložení dat v (výchozí {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Můžete také zkopírovat .torrent soubory do: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Odebráním .torrent dojde k zastavení." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Vytvořit torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Data k seedování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" -msgstr "Soubor nebo adresář k seedování (celá cesta nebo v rámci adresáře {0} )" +msgstr "Soubor nebo složka k seedování (celá cesta nebo v rámci složky {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Vytvořit torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primární" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativní" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Typ Trackeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standardní" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Otevřít" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Soukromé " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "žádný" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" -msgstr "Datový adresář" +msgstr "Datová složka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" -msgstr "Adresář kde jsou uloženy torrenty a stažená/sdílená data" +msgstr "Složka kde jsou uloženy torrenty a stažená/sdílená data" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Soubory které mohou číst všichni" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Nastavte ostatním místním uživatelům práva přístupu ke staženým souborům" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Automaticky spustit torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Automaticky spustit torrenty když jsou přidány a po startu I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Chytré řazení torrentů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorovat slova jako je 'a' a 'the' při řazení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Skládací panely" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Váš prohlížeč nepodporuje tuto funkci" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Povolit 'Přidat Torrent' a 'Vytvořit Torrent' panelům srolování/složení a složit automaticky v nezabudovaném režimu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Jazyk" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Vzhled" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Pro manuální změnu vzhledu vypněte univerzální vzhledy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Univerzální vzhledy jsou vypnuté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Konfigurovat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Čas obnovení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Jak často je stav torrentu aktualizován na hlavní stránce" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nikdy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Prodleva spuštění" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Jak dlouho trvá než jsou po startu I2PSnark spuštěny torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minut" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Velikost stránky" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Maximální počet torrentů zobrazených na stránce" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Limit souběžných nahrávání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Maximální počet peerů kterým se bude zároveň nahrávat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Limit nahrávání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Maximální dovolený datový tok pro nahrávání" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Polovina dostupného datového toku je doporučena" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Zobrazit nebo změnit datový tok routeru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Také použít otevřené trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Oznámit torrenty otevřeným trackerům i trackerům uvedeným v torrent souboru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Zapnout DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Použít DHT k nalezení dalších peerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Zapnout Hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Zobrazit hodnocení na stránkách torrentů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Zapnout Komentáře" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Zobrazit komentáře na stránkách torrentů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Autor komentáře" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Nastavit autorské jméno pro mé komentáře a hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Příchozí Nastavení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Odchozí Nastavení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP možnosti" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Uložit nastavení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Vybrat trackery pro odebrání z I2PSnark seznamu známých trackerů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Jméno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "Webová adresa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Announce adresa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Označit tracker pro smazání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Přidat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Neplatná magnet adresa {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1567,7 +1584,7 @@ msgstr[2] "1 skok" msgstr[3] "{0} skoků" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1576,230 +1593,230 @@ msgstr[2] "1 tunel" msgstr[3] "{0} tunelů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Upravit Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Umístění dat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Primární Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Tracker Seznam" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Webové Seedy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Komentář" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Vytvořen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Vytvořil/a" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Přidáno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Poslední aktivita" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnet odkaz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Soukromý torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Dokončení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Zbývá" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Přeskočeno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Soubory" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Části" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Velikost části" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Obnovit stránku pro zobrazení výsledků" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Vynutit Kontrolu" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent musí být zastaven" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Zkontrolovat integritu stažených souborů" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Přidat nebo odebrat trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Stáhnout soubory v pořadí" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Stáhnout části v pořadí" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Uložit Volbu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Zdroj Nenalezen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Zdroj" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Základ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Zdroj Neexistuje" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" -msgstr "Adresář" +msgstr "Složka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Stav Stahování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Priorita Stahování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" -msgstr "Nahoru do nadřazeného adresáře" +msgstr "Nahoru do nadřazené složky" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Audio Playlist" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrent nenalezen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Soubor nenalezen v torrentu?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Náhled" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Přidat prioritu stahovanému souboru" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Vysoká" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Stáhnout soubor normální prioritou" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normální" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Nestahovat tento soubor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Přeskočit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Nastavit vše na vysokou" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Nastavit vše na normální" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Přeskočit vše" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Uložit priority" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Hodnocení a Komentáře" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Jméno autora je vyžadováno pro hodnocení i komentování" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Vaše jméno autora pro zveřejněné komentáře a hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Zapnout zobrazování a přidávání komentářů pro tento torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1808,52 +1825,52 @@ msgstr[2] "1 hvězd" msgstr[3] "{0} hvězd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Bez hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Ohodnotit a Komentovat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Ohodnotit Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Přidat komentář" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mé Hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Průměrné Hodnocení" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Žádná komunitní hodnocení nejsou nyní k dispozici" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Označit pro smazání" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Smazat vybrané" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Přidat Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Uložit Změny" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_de.po i2p-2.5.0/apps/i2psnark/locale/messages_de.po --- i2p-2.4.0/apps/i2psnark/locale/messages_de.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_de.po 2024-04-10 02:29:57.000000000 +0000 @@ -25,10 +25,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: Fabian Schuler, 2022\n" -"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n" +"Language-Team: German (http://app.transifex.com/otf/I2P/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -40,332 +40,338 @@ msgstr "Keine weiteren Torrents laufen." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P-Tunnel geschlossen." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Verbindung zu I2P nicht möglich" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Fehler beim Verbinden mit I2P - Überprüfen Sie Ihre I2CP-Einstellungen!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "dunkel" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "hell" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanille" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Keine Schreibberechtigungen für Datenverzeichnis" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Datenverzeichnis kann nicht erstellt werden" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Gesamthochladerbegrenzung geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minimale Gesamthochladerbegrenzung ist {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Hochladebandbreitenbegrenzung geändert auf {0}kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minimale Hochladebandbreitenbegrenzung ist {0} kbyte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Startverzögerung geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Aktualisierungsrate geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Aktualisierung deaktiviert" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Seitengröße geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Neu Dateien werden allgemein lesbar sein." -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Neue Dateien werden nicht allgemein lesbar sein." -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Datenverzeichnis muss ein absoluter Pfad sein" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Datenverzeichnis nicht vorhanden" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Kein Verzeichnis" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Unlesbar" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Datenverzeichnis geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents wirksam" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP-Optionen geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Altes I2CP-Ziel wird getrennt" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP-Einstellungen geändert auf {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die alten I2CP-Einstellungen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Verbinden mit den alten Einstellungen nicht möglich!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Verbunden auf dem neuem I2CP-Ziel" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-Lauscher neu gestartet für \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Autostart wird aktiviert" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Autostart wird deaktiviert" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Smarte Sortierung aktivieren" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Smarte Sortierung deaktivieren" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT aktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT deaktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHT-Änderungen erfordern das Anhalten und erneutes Öffnen des Tunnels" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Bewertungen aktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Bewertungen deaktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Kommentare aktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Kommentare deaktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Kommentarname auf {0} gesetzt." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "Thema {0} geladen." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Einklappbare Panels aktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Einklappbare Panels deaktiviert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Konfiguration nicht geändert." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu gestartet werden" -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Liste privater Tracker geändert - betrifft nur neu erstellte Torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Konnte Konfiguration nicht in {0} speichern" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrentdatei gelöscht: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrent Datei von {0} nach {1} verschoben" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht hinzufügen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent läuft schon: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kann \"{0}\" nicht öffnen" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent mit diesem Infohash läuft schon: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Torrent mit der gleichen Datenadresse läuft bereits: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "FEHLER - Keine I2P-Tracker im privaten Torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Warnung - Keine I2P-Tracker in \"{0}\", es wird nur bei I2P-OpenTrackern und mittels DHT bekanntgeben" -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Warnung - Keine I2P-Tracker in \"{0}\" und OpenTrackers sind deaktiviert. Bekanntgabe erfolgt nur mittels DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -373,40 +379,44 @@ "torrent." msgstr "Warnung - Keine I2P-Tracker in \"{0}\", und DHT und OpenTrackers sind deaktiviert. Sie sollten DHT oder OpenTrackers vor dem Starten des Torrents aktivieren." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent in \"{0}\" ist nicht gültig" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "FEHLER - Unzureichender Arbeitsspeicher, kann keinen Torrent von {0} erstellen." -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Verbinde mit I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent hinzugefügt und gestartet: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent hinzugefügt: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "{0} wird abgerufen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -414,55 +424,56 @@ "DHT." msgstr "Das Verwenden von OpenTrackern ist deaktiviert und wir haben keine DHT-Gegenstellen. Das Abrufen von {0} könnte scheitern, sofern Sie keinen anderen Torrent starten. Aktivieren Sie OpenTracker oder DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "{0} wird hinzugefügt" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Herunterladen läuft bereits: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Fehler beim Kopieren der Torrentdatei nach {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Zu viele Dateien in \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Torrent Datei \"{0}\" kann nicht mit \".torrent\" enden!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Keine Teile in \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Zu viele Teile in \"{0}\", das Limit ist {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Teile sind zu groß in \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Limit ist \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" hat keine Daten!" @@ -472,98 +483,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrents größer als {0}B sind noch nicht unterstützt \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Fehler: Konnte den Torrent \"{0}\" nicht entfernen" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent gestoppt: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent entfernt: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Torrents in {0} werden hinzugefügt" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Torrent {0} wird gestartet" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Hochladebandbreitenbegrenzung ist {0} KByte/s." -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Herunterladen abgeschlossen: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Fehler bei Torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "I2P-Tunnel wird geöffnet" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Den I2P-Tunnel öffnen und alle Torrents starten." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Alle Torrents stoppen und den I2P-Tunnel schließen." -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Der I2P-Tunnel wird nach Benachrichtigung der Tracker geschlossen." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Überprüfung von Torrent {0} beendet, nun {1} vollständig" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Überprüfung von Torrent {0} beendet, keine Änderung" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Fehler bei der Überprüfung von Torrent {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Keine gültigen Tracker für {0}. OpenTrackers oder DHT aktivieren?" @@ -594,1236 +611,1260 @@ msgstr "Torrent abgerufen von {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ist schon in der Warteschlange: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent in {0} war nicht gültig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Konfiguration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonymer BitTorrent-Client" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark wurde beendet." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Router ist Offline" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Sind Sie sicher, dass Sie die Datei \\''{0}\\'' löschen möchten (Heruntergeladene Daten werden nicht gelöscht)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle heruntergeladenen Daten löschen wollen?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Seite aktualisieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Klicken Sie die \"Torrent Hinzufügen\"-Schaltfläche, um den Torrent abzurufen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "Nachrichten löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Sortieren nach {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Teilnehmer ausblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Teilnehmer einblenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Dateityp" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Geschätzte verbleibende Zeit" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr " Empf." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Heruntergeladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Größe" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr " Send." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Hochladeverhältnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Hochgeladen" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Übertragungsrate für den Empfang" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Herunterladegeschwindigkeit" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Übertragungsrate fürs Senden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Hochladegeschwindigkeit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Alle Torrents und den I2P-Tunnel stoppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Alle stoppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Alle gestoppten Torrents fortsetzen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Alle starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Alle Torrents und den I2P-Tunnel starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Keine Torrents geladen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Gesamt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 Torrent" msgstr[1] "{0} Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 verbundener Teilnehmer" msgstr[1] "{0} verbundene Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 DHT-Gegenstelle" msgstr[1] "{0} DHT-Gegenstellen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Ziel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Unsere Adresse (Identität) für diese Session." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "DHT Debug" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Erste" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Erste Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Vorherige" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Vorherige Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Nächste" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Nächste Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Letzte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Letzte Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Kann den Torrent {0} nicht hinzufügen, da dieser in einem anderen Torrent ist: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Herunterladen aus nicht-I2P Quellen {0} ist nicht unterstützt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Ungültige URL: Muss mit \"{0}\" oder \"{1}\" beginnen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnetlink gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Torrentdatei konnte nicht gelöscht werden: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Download gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Datendatei gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Daten konnten nicht gelöscht werden: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Das Verzeichnis {0} konnte nicht gelöscht werden." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Verzeichnis gelöscht: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Kann keinen Torrent mit der Endung \".torrent\" hinzufügen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent mit diesem Namen ist schon aktiv: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Kann keinen Torrent hinzufügen, der das I2P Verzeichnis beinhaltet: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Kann den Torrent {0} nicht hinzufügen, da dieser den Torrent {1} enthält." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Fehler - Einfügen alternativer Tracker ohne primären Tracker nicht möglich" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Fehler - Mischen von privaten und öffentlichen Trackern in einem Torrent nicht möglich" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent erstellt für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt wird. Bitte tun Sie dies vor dem Start von \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Fehler beim Erstellen eines Torrents für \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Kann keinen Torrent für nicht existente vorhandene erstellen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein Verzeichnis angeben." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Ausgewählte löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Trackerkonfiguration speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Entfernt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Tracker hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Geben Sie einen gültigen Tracker-Namen und die URLs ein" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Auf Standardeinstellungen zurücksetzen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Auf Standard-Tracker zurückgesetzt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Überprüfe" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Reserviere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Trackerfehler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 Teilnehmer" msgstr[1] "{0} Teilnehmern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Verteile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "Verteile an {0} Teilnehmer" msgstr[1] "Verteile an {0} Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Downloaden von {0} aus {1} Teilnehmern im Schwarm." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "Downloade von {0} Teilnehme" msgstr[1] "Downloade von {0} Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "Verbunden mit {0} Teilnehmer" msgstr[1] "Verbunden mit {0} Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Stillstand" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Verbunden zu {0} aus {1} Teilnehmern im Schwarm." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Keine Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Gestoppt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Details" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Kommentare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Dateien ansehen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Datei öffnen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "vollständig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "verbleibend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Fertig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Torrent stoppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Stopp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Torrent starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Entfernen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Lösche die .torrent-Datei und die dazugehörige Datendateien." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Klient zum Schwarm angeheftet." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Unbekannt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Adresse (Identität) des Klienten." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Quelle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteressant (Der Teilnehmer hat keine Teile, die wir benötigen)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Gedrosselt (Der Teilnehmer hat uns nicht erlaubt, Teile anzufordern)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninteressiert (Wir haben keine Teile, die der Teilnehmer benötigt)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Gedrosselt (Wir erlauben dem Teilnehmer nicht, Teile anzufordern)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Details beim Tracker {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Torrent hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Von URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Geben Sie die Torrentdatei Download Adresse (nur I2P Adresse), Magnetlink, oder den Infohash ein." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Füge Torrent hinzu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Torrentdatei" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Datenverzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Geben Sie das Verzeichnis zum Speichern der Daten ein (Standardeinstellung {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Alternativ können Sie die .torrent-Dateien auch nach {0} kopieren." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Das Entfernen der .torrent-Datei stoppt den jeweiligen Torrent." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Torrent erstellen" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Daten zum Verteilen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Datei oder Verzeichnis zum Verteilen (Gesamter Pfad oder aus dem Verzeichnis {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Torrent erstellen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primär" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Trackertyp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standard" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Offen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "keiner" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Datenverzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Verzeichnis in dem Torrentdateien und heruntergeladene/freigegebene Dateien gespeichert sind." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Dateien von allen lesbar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Zugriffsrechte korrekt setzen, damit andere lokale Benutzer auf die heruntergeladene Dateien zugreifen können." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Torrents automatisch starten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Torrents beim Hinzufügen automatisch starten und automatisch restarten beim Start von I2PSnark." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Smarte Torrent Sortierung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignoriert Wörter wie 'the' bei der Sortierung." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Einklappbare Panels" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Dein Browser unterstützt diese Funktion nicht." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Erlaube das die 'Torrent hinzufügen' und 'Torrent erzeugen' Panels einklappbar sind und klappe diese im nicht-embedded Mode ein." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Sprache" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Aufmachung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Um die Oberflächen Themen manuell zu ändern, deaktiviere universelle Themenanpassung." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Universelle Themeneinstellung ist aktiviert." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Konfigurieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Aktualisierungsintervall" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Wie oft wird der Torrentstatus auf der Hauptseite aktualisiert." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Startverzögerung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Zeitraum bis die Auto-Start torrents beim Start von I2PSnark geladen werden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "Minuten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Seitengröße" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Maximale Anzahl angezeigter Torrents pro Seite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Gesamtlimit an Hochladern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Maximale Anzahl an Upload-Teilnehmern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "Teilnehmer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Bandbreitenbegrenzung beim Hochladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Maximale allozierte Bandbreite für den Upload" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Halbe verfügbare Bandbreite wird empfohlen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Routerbandbreite ansehen oder ändern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Auch OpenTracker verwenden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Torrents zu Open Trackern und auch zu Trackern aus dem Torrent File publizieren." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "DHT aktivieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Benutze DHT um weitere Teilnehmer zu finden." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Ratings aktivieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Zeige die Rating auf der Torrentseite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Kommentare aktivieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Zeige Kommentare auf der Torrentseite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Kommentar Author" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Setze den Authornamen für deine Kommentare und Ratings" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Einstellungen eingehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Einstellungen ausgehend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP-Host" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP-Port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP-Optionen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Einstellungen speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Wähle die Trackers zum Entfernen aus der I2PSnark Trackerliste aus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Namen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "Webseiten-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Ankündigungs-URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Kennzeichne Tracker zum Löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Ungültige Magnet-URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 Zwischenstation" msgstr[1] "{0} Zwischenstationen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 Tunnel" msgstr[1] "{0} Tunnel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Torrent bearbeiten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Torrentdatei" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Datenadresse" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info-Hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Primärer Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Tracker-Liste" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Web Seeder" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Kommentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Erstellt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Erstellt von" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Hinzugefügt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Letzte Aktivität" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnetlink" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Privater Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Fortschritt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Verbleibend" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Übersprungen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Dateien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Teile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Stückgröße" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Für Resultate Seite aktualisieren" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Überprüfung forcieren" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent muss beendet werden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Integrität der heruntergeladenen Dateien überprüfen." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Tracker hinzufügen oder entfernen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Dateien in Reihenfolge herunterladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Teile in Reihenfolge herunterladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Speichere Voreinstellungen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Ressouce nicht gefunden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Ressource" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Basis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Ressource existiert nicht" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Verzeichnis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Download Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Download Priorität" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Eine Hierarchie nach oben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Audio Playliste" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrentdatei nicht gefunden?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Datei nicht gefunden im Torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Vorschau" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Datei mit hoher Priorität herunterladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Hoch" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Datei mit normaler Priorität herunterladen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Laden Sie diese Datei nicht herunter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Überspringen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Alle auf hoch festlegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Alle auf normal festlegen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Alle überspringen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Prioritäten speichern" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Ratings und Kommentare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Authorname zum bewerten und kommentieren nötig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Dein Authorname für veröffentlichte Kommentare und Ratings." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Aktiviere Kommentare zu Torrents zu betrachten und abzugeben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "1 Stern" msgstr[1] "{0} Sterne" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Kein Rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Bewertung und Kommentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Bewerte Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Kommentar hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mein Rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Durchschnittliches Rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Derzeit kein Rating der Gruppe verfügbar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Zum Löschen markiert" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Ausgewählte Emails löschen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Tracker hinzufügen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Änderungen speichern" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_en.po i2p-2.5.0/apps/i2psnark/locale/messages_en.po --- i2p-2.4.0/apps/i2psnark/locale/messages_en.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_en.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -23,433 +23,437 @@ msgstr "" #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "" #. TODO - if the existing one is a magnet, delete it and add the metainfo instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and " "DHT only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " "disabled, you should enable open trackers or DHT before starting the torrent." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " "succeed until you start another torrent, enable open trackers, or enable DHT." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "" @@ -461,94 +465,99 @@ #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); #. -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "" @@ -584,1250 +593,1258 @@ msgstr "" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent " "file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_es.po i2p-2.5.0/apps/i2psnark/locale/messages_es.po --- i2p-2.4.0/apps/i2psnark/locale/messages_es.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_es.po 2024-04-10 02:29:57.000000000 +0000 @@ -22,7 +22,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: Manuel , 2023\n" "Language-Team: Spanish (http://app.transifex.com/otf/I2P/language/es/)\n" @@ -37,334 +37,338 @@ msgstr "No hay más torrents intercambiandose." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Túnel I2P cerrado." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Enlace magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Imposible conectarse a I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Error al conectar a I2P - ¡compruebe sus preferencias de I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "oscuro" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "claro" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "púrpura" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "por defecto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "No hay permisos de escritura para el directorio de datos" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "No se pudo crear el directorio de datos" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "El límite total de usuarios subiendo ha cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "El límite mínimo total de usuarios subiendo es {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "El límite de ancho de banda de subida cambió a {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "El límite mínimo de ancho de banda de subida es {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "El retardo en el arranque se ha cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Hora de actualización cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Actualización deshabilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Tamaño de página cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Los ficheros nuevos serán públicamente legibles" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Los ficheros nuevos no serán públicamente legibles" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "La carpeta de datos tiene que ser una ruta absoluta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "La carpeta de datos no existe" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "No es una carpeta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "No se pudo leer" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Carpeta de datos cambiada a {0} " -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Los cambios de I2CP (protocolo cliente I2P) y túnel serán efectivos después de detener todos los torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Opciones I2CP cambiadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Desconectando destino I2CP antiguo" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferencias de I2CP cambiadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "No se pudo conectar usando las nuevas preferencias de I2CP (protocolo cliente I2P), volviendo a las antiguas" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "¡No se pudo reconectar usando las preferencias antiguas!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Reconectado con el nuevo destino I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "El escuchador de I2CP se reinició para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Arranque automático activado" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Arranque automático desactivado" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Ordenación inteligente habilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Ordenación inteligente deshabilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Trackers (rastreadores) abiertos activados - requiere reiniciar el torrent para que sea efectivo." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Trackers (rastreadores) abiertos desactivados - requiere reiniciar el torrent para que sea efectivo." -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT habilitada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT deshabilitada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Cambiar la DHT (tabla de hash distribuida) requiere cerrar el túnel y volver a abrirlo" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Valoraciones habilitadas." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Valoraciones deshabilitadas." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Comentarios habilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Comentarios deshabilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Nombre de los comentarios establecido a {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "Tema cargado: {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Paneles ocultables habilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Paneles ocultables deshabilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "La configuración no cambió." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "La lista de trackers (rastreadores) abiertos cambió - requiere reiniciar el torrent para que sea efectiva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "La lista de trackers (rastreadores) privados cambió - afactará sólo a los torrents creados a partir de ahora." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "No se pudo guardar la configuración en {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Fichero torrent borrado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Fichero torrent movido de {0} a {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Error: No se pudo añadir el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent ya en marcha: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "No se pudo abrir \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Ya hay un torrent con esta información de hash (identificador criptográfico): {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Ya se está ejecutando un torrent con la misma fuente de datos: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ERROR - No hay trackers I2P en el torrent privado \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", sólo se anunciará a trackers abiertos I2P y a la DHT (tabla de hash distribuida)." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y los trackers abiertos están deshabilitados. Sólo se anunciará a la DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -372,44 +376,44 @@ "torrent." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y la DHT (tabla de hash distribuida) y los trackers abiertos están deshabilitados, debe habilitar los trackers abiertos o la DHT antes de iniciar el torrent." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "El torrent en \"{0}\" no es válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERROR - Sin memoria disponible, no se pudo crear un torrent a partir de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Conectando a I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent añadido e iniciado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent añadido: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Obteniendo {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -417,56 +421,56 @@ "DHT." msgstr "Los rastreadores abiertos están desactivados y no hay pares DHT. Es posible que no se puedan obtener para {0} hasta que no inicie otro torrent, active los rastreadores abiertos o active la DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Añadiendo {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Descarga ya en marcha: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "No se pudo copiar el fichero torrent a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "¡Demasiados ficheros en \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "¡El fichero torrent \"{0}\" no puede terminar en \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "¡No hay fragmentos en \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "¡Demasiados fragmentos en \"{0}\", el límite es {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "¡Los fragmentos son demasiado grandes en \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "El límite es de \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "¡El torrent \"{0}\" no tiene datos!" @@ -476,94 +480,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "¡Los torrents más grandes que {0}B no están soportados aún \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Error: No se pudo eliminar el torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "El torrent se detuvo: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent eliminado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Añadiendo torrents en {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Iniciando el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "El limite de ancho de banda de subida es {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Descarga finalizada: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Error en el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Abriendo el túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abriendo el túnel I2P e iniciando todos los torrents ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Deteniendo todos los torrents y cerrando el túnel I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Cerrando túnel I2P después de avisar a los trackers" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "El rechequeo del torrent {0} finalizó, {1} ahora completos" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "El rechequeo del torrent {0} finalizó, inalterado" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Error al comprobar el torrent {0}" @@ -599,203 +608,203 @@ msgstr "Torrent obtenido desde {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ya en cola: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "El torrent en {0} no era válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Configuración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Cliente BitTorrent anónimo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark se ha detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "El router está caído" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "¿Está seguro de que quiere borrar el fichero \\''{0}\\'' (los datos descargados no serán borrados)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "¿Está seguro de que quiere borrar el torrent \\''{0}\\'' y todos los datos descargados correspondientes?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Actualizar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Haga clic en el botón \"Añadir torrent\" para obtener un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "eliminar mensajes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Ordenado por {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Ocultar pares ('peers')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Mostrar pares ('peers')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Tipo de fichero" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Llegada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Tiempo restante estimado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Receptor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Descargado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Tamaño" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Transmisor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Tasa de descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Tasa de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Detener todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Detener todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Iniciar todos los torrents parados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Iniciar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "No se encontraron torrents." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "No hay torrents cargados." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Totales" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -803,7 +812,7 @@ msgstr[1] "{0} torrents" msgstr[2] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -811,7 +820,7 @@ msgstr[1] "{0} pares conectados" msgstr[2] "{0} pares conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -819,224 +828,224 @@ msgstr[1] "{0} pares DHT" msgstr[2] "{0} pares DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Nuestro destino I2P (identidad) para esta sesión" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Depuración de la DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Primera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Primera página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Página anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Siguiente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Página siguiente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Última" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Última página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "No puede añadir un torrent {0} dentro de otro torrent: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "No se admiten descargas desde ubicaciones {0} que no sean I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "URL no válida: Debe empezar por \"{0}\" o \"{1}\"" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet borrado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "El fichero torrent no se pudo eliminar: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Descarga borrada: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Fichero de datos borrado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "No se pudo borrar el fichero de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "No se pudo borrar la carpeta {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Carpeta borrada: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "No se pudo añadir un torrent que acaba en \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Un torrent con este nombre ya está intercambiandose: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "No puede añadir un torrent que incluye un directorio I2P: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "No puede añadir un torrent {0} que incluye otro torrent: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Error - No se pueden incluir trackers alternativos sin un tracker principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Error - No se pueden mezclar trackers privados y públicos en un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent creado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Muchos trackers (rastreadores) I2P requieren que registre los nuevos torrents antes del seeding (sembrado) - por favor hágalo antes de iniciar \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Error al crear un torrent para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "No se pudo crear un torrent para los datos inexistentes: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Error al crear torrent - ha de introducir un fichero o carpeta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Borrar seleccionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Guardar configuración de tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Eliminado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Añadir tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Introduzca nombre y URLs de tracker (rastreador) válidos" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Restaurar predeterminados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Trackers (rastreadores) predeterminados restaurados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Comprobando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Asignando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Error del tracker (rastreador)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1044,17 +1053,17 @@ msgstr[1] "{0} pares" msgstr[2] "{0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Iniciando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Sembrando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1062,27 +1071,27 @@ msgstr[1] "Sembrando a {0} pares" msgstr[2] "Sembrando a {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Descargando de {0} de {1} pares (peers) en enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "Bien" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1090,7 +1099,7 @@ msgstr[1] "Descargando desde {0} pares" msgstr[2] "Descargando desde {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1098,471 +1107,479 @@ msgstr[1] "Conectado con {0} pares" msgstr[2] "Conectado con {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Conectado a {0} de {1} pares (peers) en enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Sin pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Detalles del torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Ver ficheros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Abrir fichero" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "restante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Completado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Detener el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Detener" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Iniciar el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Eliminar el torrent de la lista de torrents activos, borrando el fichero .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Eliminar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Eliminar el archivo .torrent y los archivos de datos asociados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Borrar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Par (peer) acoplado al enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Desconocido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destino I2P (identidad) del par (peer)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Semilla (seed)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Sin interés (el par no tiene las partes que necesitamos)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Restringido (el par no nos está permitiendo solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "No interesado (no tenemos las partes que el par precisa)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Restringiendo (no estamos permitiendo al par solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detalles en el tracker (rastreador) {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Información" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Añadir torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Desde la URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Introduzca la URL de descarga del archivo torrent (sólo I2P), el enlace magnet o el hash informativo." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Añadir torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Fichero torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Dir de datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Introduzca el directorio en el que guardar los datos (por defecto {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "También puede copiar ficheros .torrent a: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Eliminar un fichero .torrent provocará que se detengan sus transferencias." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Crear un torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Datos a sembrar ('seed')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fichero o directorio a sembrar (seed) (ruta completa o dentro del directorio {0} ) " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Crear torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Tipo de rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Estándar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Abrir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "ninguno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Carpeta de datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Directorio donde se almacenan los ficheros torrent y los descargados/compartidos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Ficheros legibles por todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Establezca los permisos de fichero para permitir a otros usuarios locales acceder a los ficheros descargados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Auto iniciar torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Inicializar torrents automáticamente al añadirlos y reinicializarlos cuando se inice I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Ordenación inteligente de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorar palabras como 'a' (un/una) y 'the' (el/la) al ordenar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Paneles plegables" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Su navegador no soporta esta característica." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Permitir que los paneles 'Añadir torrent' y 'Crear torrent' se oculten, y que lo hagan por defecto en modo no integrado." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Idioma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Para cambiar temas decorativos manualmente, deshabilite el tema universal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "El tema universal está habilitado." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Hora de actualización" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Con qué frecuencia se actualiza el estado del torrent en la página principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nunca" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Retardo al arrancar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Cuánto transcurre hasta que se cargan los torrent auto-inicializados al iniciar I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minutos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Tamaño de página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Número máximo de torrents a mostrar por página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Límite total de usuarios subiendo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Número máximo de pares para la subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Límite de velocidad de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Máximo ancho de banda asignado para subida" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Se recomienda la mitad del ancho de banda disponible." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Mostrar o cambiar ancho de banda del router (enrutador)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Usar también trackers (rastreadores) abiertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Anunciar torrents a trackers abiertos así como a trackers listados en el archivo torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Habilitar DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Usar DHT para encontrar pares (peers) adicionales" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Habilitar valoraciones" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Mostrar valoraciones en páginas de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Habilitar comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Mostrar comentarios en páginas de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Autor del comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Establezca el nombre de autor para sus comentarios y valoraciones" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Preferencias de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Preferencias de salida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Anfitrión I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Puerto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Opciones de I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Guardar configuración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Seleccionar trackers para eliminación de la lista de conocidos de I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nombre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL del sitio web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL de anunciamientos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Marcar tracker para eliminación" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Añadir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL de magnet no válida: {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1570,7 +1587,7 @@ msgstr[1] "{0} saltos" msgstr[2] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1578,230 +1595,230 @@ msgstr[1] "{0} túneles" msgstr[2] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Editar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Ubicación de los datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Información de hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Tracker principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista de trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Semillas web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Creado en" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Creado por" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Añadido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Última actividad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Enlace de magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrent privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Finalización" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Restante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Omitido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Ficheros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Partes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Tamaño de las partes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Refrescar página por los resultados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Forzar rechequeo" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent debe detenerse" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Comprobar la integridad de los archivos descargados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Añadir o eliminar trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Descargar archivos en orden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Descargar fragmentos por orden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Guardar preferencia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Recurso no encontrado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Recurso" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Base" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Los recursos no existen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Carpeta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Estado de la descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Prioridad de la descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Subir a la carpeta del siguiente nivel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Lista de reproducción de audio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "¿No se encotró el fichero torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "¿No se encontró el fichero en el torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Vista Previa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Descargar fichero con prioridad alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Descargar fichero con prioridad normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "No descargar este fichero" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Saltar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Configurar todos a alto " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Configurar todos a normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Omitir todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Valoraciones y comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Se requiere el nombre del autor para valorar o comentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Su nombre de autor para comentarios y valoraciones publicadas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Habilitar visionado y publicado de comentarios para este torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1809,52 +1826,52 @@ msgstr[1] "{0} estrellas" msgstr[2] "{0} estrellas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Sin valoración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Valorar y comentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Valorar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Añadir comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mi valoración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Valoración media" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "No hay valoraciones de la comunidad disponibles actualmente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marcar para borrado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Borrar seleccionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Añadir tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Guardar cambios" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_es_AR.po i2p-2.5.0/apps/i2psnark/locale/messages_es_AR.po --- i2p-2.4.0/apps/i2psnark/locale/messages_es_AR.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_es_AR.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: duck \n" "Language-Team: Spanish (Argentina) (http://app.transifex.com/otf/I2P/language/es_AR/)\n" @@ -23,334 +23,338 @@ msgstr "No hay más torrents intercambiandose." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Túnel I2P cerrado." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Enlace magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Imposible conectarse a I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Error al conectar a I2P - ¡compruebe sus preferencias de I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "oscuro" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "claro" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "púrpura" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "por defecto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "No hay permisos de escritura para el directorio de datos" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "No se pudo crear el directorio de datos" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "El límite total de usuarios subiendo ha cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "El límite mínimo total de usuarios subiendo es {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "El límite de ancho de banda de subida cambió a {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "El límite mínimo de ancho de banda de subida es {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "El retardo en el arranque se ha cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Hora de actualización cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Actualización deshabilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Tamaño de página cambiado a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Los ficheros nuevos serán públicamente legibles" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Los ficheros nuevos no serán públicamente legibles" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "La carpeta de datos tiene que ser una ruta absoluta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "La carpeta de datos no existe" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "No es una carpeta" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Ilegible" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Carpeta de datos cambiada a {0} " -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Los cambios de I2CP (protocolo cliente I2P) y túnel serán efectivos después de detener todos los torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Opciones I2CP cambiadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Desconectando destino I2CP antiguo" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferencias de I2CP cambiadas a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "No se pudo conectar usando las nuevas preferencias de I2CP (protocolo cliente I2P), volviendo a las antiguas" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "¡No se pudo reconectar usando las preferencias antiguas!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Reconectado con el nuevo destino I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "El escuchador de I2CP se reinició para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Arranque automático activado" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Arranque automático desactivado" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Ordenación inteligente habilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Ordenación inteligente deshabilitada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Trackers (rastreadores) abiertos activados - requiere reiniciar el torrent para que sea efectivo." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Trackers (rastreadores) abiertos desactivados - requiere reiniciar el torrent para que sea efectivo." -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT habilitada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT deshabilitada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Cambiar la DHT (tabla de hash distribuida) requiere cerrar el túnel y volver a abrirlo" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Valoraciones habilitadas." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Valoraciones deshabilitadas." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Comentarios habilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Comentarios deshabilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Nombre de los comentarios establecido a {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "Tema cargado: {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Paneles ocultables habilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Paneles ocultables deshabilitados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "La configuración no cambió." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "La lista de trackers (rastreadores) abiertos cambió - requiere reiniciar el torrent para que sea efectiva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "La lista de trackers (rastreadores) privados cambió - afactará sólo a los torrents creados a partir de ahora." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "No se pudo guardar la configuración en {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Fichero torrent borrado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Fichero torrent movido de {0} a {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Error: No se pudo añadir el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent ya en marcha: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "No se pudo abrir \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Ya hay un torrent con esta información de hash (identificador criptográfico): {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Ya se está ejecutando un torrent con la misma fuente de datos: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ERROR - No hay trackers I2P en el torrent privado \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", sólo se anunciará a trackers abiertos I2P y a la DHT (tabla de hash distribuida)." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y los trackers abiertos están deshabilitados. Sólo se anunciará a la DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -358,44 +362,44 @@ "torrent." msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y la DHT (tabla de hash distribuida) y los trackers abiertos están deshabilitados, debe habilitar los trackers abiertos o la DHT antes de iniciar el torrent." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "El torrent en \"{0}\" no es válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERROR - Sin memoria disponible, no se pudo crear un torrent a partir de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Conectando a I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent añadido e iniciado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent añadido: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Obteniendo {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -403,56 +407,56 @@ "DHT." msgstr "Los rastreadores abiertos están desactivados y no hay pares DHT. Es posible que no se puedan obtener para {0} hasta que no inicie otro torrent, active los rastreadores abiertos o active la DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Añadiendo {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Descarga ya en marcha: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "No se pudo copiar el fichero torrent a {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "¡Demasiados ficheros en \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "¡El fichero torrent \"{0}\" no puede terminar en \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "¡No hay fragmentos en \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "¡Demasiados fragmentos en \"{0}\", el límite es {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "¡Los fragmentos son demasiado grandes en \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "El límite es de \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "¡El torrent \"{0}\" no tiene datos!" @@ -462,94 +466,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "¡Los torrents más grandes que {0}B no están soportados aún \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Error: No se pudo eliminar el torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "El torrent se detuvo: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent eliminado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Añadiendo torrents en {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Iniciando el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "El limite de ancho de banda de subida es {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Descarga finalizada: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Error en el torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Abriendo el túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abriendo el túnel I2P e iniciando todos los torrents ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Deteniendo todos los torrents y cerrando el túnel I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Cerrando túnel I2P después de avisar a los trackers" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "El rechequeo del torrent {0} finalizó, {1} ahora completos" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "El rechequeo del torrent {0} finalizó, inalterado" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Error al comprobar el torrent {0}" @@ -585,203 +594,203 @@ msgstr "Torrent obtenido desde {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent ya en cola: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "El torrent en {0} no era válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Configuración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Cliente BitTorrent anónimo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark se ha detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "El router I2P está caído" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "¿Está seguro de que quiere borrar el fichero \\''{0}\\'' (los datos descargados no serán borrados)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "¿Está seguro de que quiere borrar el torrent \\''{0}\\'' y todos los datos descargados correspondientes?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Recargar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Haga clic en el botón \"Añadir torrent\" para obtener un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "eliminar mensajes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Ordenado por {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Ocultar pares ('peers')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Mostrar pares ('peers')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Tipo de fichero" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Llegada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Tiempo restante estimado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Rec" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Descargado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Talle" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Env" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Tasa de descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Tasa de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Tasa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Detener todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Detener todo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Iniciar todos los torrents parados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Iniciar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos los torrents y el túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "No se encontraron torrents." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "No hay torrents cargados." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Totales" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -789,7 +798,7 @@ msgstr[1] "{0} torrents" msgstr[2] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -797,7 +806,7 @@ msgstr[1] "{0} pares conectados" msgstr[2] "{0} pares conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -805,224 +814,224 @@ msgstr[1] "{0} pares DHT" msgstr[2] "{0} pares DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Nuestro destino I2P (identidad) para esta sesión" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Depuración de la DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Primera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Primera página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Página anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Siguiente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Página siguiente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Última" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Última página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "No puede añadir un torrent {0} dentro de otro torrent: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "No se admiten descargas desde ubicaciones {0} que no sean I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "URL no válida: Debe empezar por \"{0}\" o \"{1}\"" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet borrado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "El fichero torrent no se pudo eliminar: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Descarga borrada: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Fichero de datos borrado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "No se pudo borrar el fichero de datos: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "No se pudo borrar la carpeta {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Carpeta borrada: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "No se pudo añadir un torrent que acaba en \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Un torrent con este nombre ya está intercambiandose: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "No puede añadir un torrent que incluye un directorio I2P: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "No puede añadir un torrent {0} que incluye otro torrent: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Error - No se pueden incluir trackers alternativos sin un tracker principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Error - No se pueden mezclar trackers privados y públicos en un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent creado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Muchos trackers (rastreadores) I2P requieren que registre los nuevos torrents antes del seeding (sembrado) - por favor hágalo antes de iniciar \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Error al crear un torrent para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "No se pudo crear un torrent para los datos inexistentes: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Error al crear torrent - ha de introducir un fichero o carpeta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Borrar seleccionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Guardar configuración de tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Eliminado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Añadir tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Introduzca nombre y URLs de tracker (rastreador) válidos" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Restablecer valores predeterminados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Trackers (rastreadores) predeterminados restaurados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Comprobando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Asignando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Error del tracker (rastreador)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1030,17 +1039,17 @@ msgstr[1] "{0} pares" msgstr[2] "{0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Iniciando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Sembrando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1048,27 +1057,27 @@ msgstr[1] "Sembrando a {0} pares" msgstr[2] "Sembrando a {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Completar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Descargando de {0} de {1} pares (peers) en enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1076,7 +1085,7 @@ msgstr[1] "Descargando desde {0} pares" msgstr[2] "Descargando desde {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1084,471 +1093,479 @@ msgstr[1] "Conectado con {0} pares" msgstr[2] "Conectado con {0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Conectado a {0} de {1} pares (peers) en enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Sin pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Detalles del torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Ver ficheros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Abrir fichero" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "restante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Completado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Detener el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Detener" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Iniciar el torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Eliminar el torrent de la lista de torrents activos, borrando el fichero .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Remover" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Eliminar el archivo .torrent y los archivos de datos asociados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Borrar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Par (peer) acoplado al enjambre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Desconocido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destino I2P (identidad) del par (peer)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Semilla (seed)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Sin interés (el par no tiene las partes que necesitamos)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Restringido (el par no nos está permitiendo solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "No interesado (no tenemos las partes que el par precisa)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Restringiendo (no estamos permitiendo al par solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detalles en el tracker (rastreador) {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Información" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Añadir torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Desde la URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Introduzca la URL de descarga del archivo torrent (sólo I2P), el enlace magnet o el hash informativo." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Añadir torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Fichero torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Dir de datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Introduzca el directorio en el que guardar los datos (por defecto {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "También puede copiar ficheros .torrent a: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Eliminar un fichero .torrent provocará que se detengan sus transferencias." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Crear un torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Datos a sembrar ('seed')" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fichero o directorio a sembrar (seed) (ruta completa o dentro del directorio {0} ) " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Crear torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primaria" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Tipo de rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Estándar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Abrir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "ninguno" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Carpeta de datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Directorio donde se almacenan los ficheros torrent y los descargados/compartidos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Ficheros legibles por todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Establezca los permisos de fichero para permitir a otros usuarios locales acceder a los ficheros descargados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Auto iniciar torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Inicializar torrents automáticamente al añadirlos y reinicializarlos cuando se inice I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Ordenación inteligente de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorar palabras como 'a' (un/una) y 'the' (el/la) al ordenar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Paneles plegables" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Su navegador no soporta esta característica." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Permitir que los paneles 'Añadir torrent' y 'Crear torrent' se oculten, y que lo hagan por defecto en modo no integrado." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Idioma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Para cambiar temas decorativos manualmente, deshabilite el tema universal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "El tema universal está habilitado." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Hora de actualización" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Con qué frecuencia se actualiza el estado del torrent en la página principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nunca" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Retardo al arrancar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Cuánto transcurre hasta que se cargan los torrent auto-inicializados al iniciar I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minutos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Tamaño de página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Número máximo de torrents a mostrar por página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Límite total de usuarios subiendo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Número máximo de pares para la subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Límite de velocidad de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Máximo ancho de banda asignado para subida" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Se recomienda la mitad del ancho de banda disponible." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Mostrar o cambiar ancho de banda del router (enrutador)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Usar también trackers (rastreadores) abiertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Anunciar torrents a trackers abiertos así como a trackers listados en el archivo torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Habilitar DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Usar DHT para encontrar pares (peers) adicionales" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Habilitar valoraciones" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Mostrar valoraciones en páginas de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Habilitar comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Mostrar comentarios en páginas de torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Autor del comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Establezca el nombre de autor para sus comentarios y valoraciones" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Preferencias de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Preferencias de salida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Anfitrión I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Puerto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Opciones de I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Guardar configuración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Seleccionar trackers para eliminación de la lista de conocidos de I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nombre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL del sitio web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL de anunciamientos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Marcar tracker para eliminación" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Agregar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL de magnet no válida: {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1556,7 +1573,7 @@ msgstr[1] "{0} saltos" msgstr[2] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1564,230 +1581,230 @@ msgstr[1] "{0} túneles" msgstr[2] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Editar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Ubicación de los datos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Información de hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Tracker principal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista de trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Semillas web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Creado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Creado por" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Añadido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Última actividad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Enlace de magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrent privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Finalización" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Restante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Omitido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Archivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Partes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Tamaño de las partes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Refrescar página por los resultados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Forzar rechequeo" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent debe detenerse" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Comprobar la integridad de los archivos descargados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Añadir o eliminar trackers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Descargar archivos en orden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Descargar fragmentos por orden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Guardar preferencia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Recurso no encontrado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Recurso" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Base" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Los recursos no existen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Directorio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Estado de la descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Prioridad de la descarga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Subir a la carpeta del siguiente nivel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Lista de reproducción de audio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "¿No se encotró el fichero torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "¿No se encontró el fichero en el torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Vista Previa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Descargar fichero con prioridad alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Alto" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Descargar fichero con prioridad normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "No descargar este fichero" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Omitir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Configurar todos a alto " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Configurar todos a normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Omitir todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Valoraciones y comentarios" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Se requiere el nombre del autor para valorar o comentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Su nombre de autor para comentarios y valoraciones publicadas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Habilitar visionado y publicado de comentarios para este torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1795,52 +1812,52 @@ msgstr[1] "{0} estrellas" msgstr[2] "{0} estrellas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Sin valoración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Valorar y comentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Valorar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Añadir comentario" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mi valoración" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Valoración media" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "No hay valoraciones de la comunidad disponibles actualmente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marcar para borrado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Borrar seleccionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Añadir tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Guardar cambios" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_fr.po i2p-2.5.0/apps/i2psnark/locale/messages_fr.po --- i2p-2.4.0/apps/i2psnark/locale/messages_fr.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_fr.po 2024-04-10 02:29:57.000000000 +0000 @@ -21,10 +21,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: vex vex, 2022\n" -"Language-Team: French (http://www.transifex.com/otf/I2P/language/fr/)\n" +"Language-Team: French (http://app.transifex.com/otf/I2P/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -36,332 +36,338 @@ msgstr "Plus aucun torrent en cours." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Le tunnel I2P est fermé." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Impossible de se connecter à I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erreur de connexion à I2P - Vérifiez vos paramètres I2CP !" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "sombre" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "clair" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "aubergine" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanille" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Aucun droit d’écriture pour le répertoire de données" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Le répertoire de données ne peut pas être créé" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "La limite totale de téléverseurs a été portée à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "La limite minimale totale de téléverseurs est de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "La limite de bande passante en amont a été changée à {0} ko/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "La limite de bande passante minimale en amont est de {0} ko/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Le retard de démarrage a été changé à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "L’intervalle d’actualisation a été changé à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "L’actualisation est désactivée" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "La taille de la page a été changée à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Les nouveaux fichiers seront lisibles publiquement" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Les nouveaux fichiers ne seront pas lisibles publiquement" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Le répertoire de données doit être un chemin absolu" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Le répertoire de données n’existe pas" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "N’est pas un répertoire" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Illisible" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Le répertoire de données a été changé à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Les modifications d’I2CP et des tunnels prendront effet après arrêt de tous les torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Les options d’I2CP ont été changées en {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Déconnexion de l’ancienne destination I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Les paramètres d’I2CP ont été changés à {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Impossible de se connecter avec les nouveaux paramètres, retour aux anciens paramètres d’I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Impossible de se reconnecter avec les anciens paramètres !" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Reconnecté sur la nouvelle destination I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "L’écouteur I2CP a été redémarré pour « {0} »" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Le démarrage automatique a été activé" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Le démarrage automatique a été désactivé" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Le tri automatique a été activé" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Le tri automatique a été désactivé" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Les traqueurs ouverts ont été activés. Les torrents doivent être redémarrés pour qu’ils prennent effet." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Les traqueurs ouverts ont été désactivés. Les torrents doivent être redémarrés pour qu’ils prennent effet." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "La table de hachage distribuée a été activée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "La table de hachage distribuée a été désactivée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Le changement apporté à la table de hachage distribuée exige la fermeture et la réouverture du tunnel" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Les évaluations ont été activées." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Les évaluations ont été désactivées." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Les commentaires ont été activés." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Les commentaires ont été désactivés." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Le nom des commentaires est défini à {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "Le thème {0} a été chargé." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Les panneaux rabattables sont activés." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Les panneaux rabattables sont désactivés." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "La configuration est inchangée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "La liste des traqueurs ouverts a été modifiée. Les torrents doivent être redémarrés pour qu’elle prenne effet." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "La liste des traqueurs privés a été modifiée. Cela n’a fait que les torrents créés nouvellement." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Impossible d’enregistrer la configuration sur {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent supprimé : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Le fichier torrent a été déplacé de {0} vers {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erreur : Impossible d’ajouter le torrent : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent déjà en cours : {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Impossible d’ouvrir « {0} »" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Un torrent avec ces renseignements d’empreinte est déjà en cours : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Un torrent avec le même emplacement des données est déjà en cours : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ERREUR : Il n’y a pas de traqueur I2P dans le torrent privé « {0} »" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Avertissement : il n’y a pas de traqueur I2P dans « {0} ». L’annonce ne se fera qu’aux traqueurs ouverts d’I2P et à la table de hachage distribuée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Avertissement : il n’y a pas de traqueur I2P dans « {0} » et les traqueurs ouverts sont désactivés. L’annonce ne se fera qu’à la table de hachage distribuée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -369,40 +375,44 @@ "torrent." msgstr "Avertissement : il n’y a pas de traqueur I2P dans « {0} », et la table de hachage distribuée et les traqueurs ouverts sont désactivés. Vous devriez activer les traqueurs ouverts ou la table de hachage distribuée avant de démarrer le torrent." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Le torrent situé dans « {0} » est invalide" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent à partir de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Connexion à I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent ajouté et démarré : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent ajouté : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Récupération de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -410,55 +420,56 @@ "DHT." msgstr "Les traqueurs ouverts sont désactivés et nous n’avons aucun pair de table de hachage distribuée. La récupération de {0} pourrait ne pas réussir tant que vous ne démarrerez pas un autre torrent, activerez les traqueurs ouverts ou activerez la table de hachage distribuée." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Ajout de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Téléchargement déjà en cours : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Échec de copie du fichier torrent vers {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Trop de fichiers dans « {0} » ({1}) !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Le fichier torrent « {0} » ne peut pas se terminer par « .torrent » !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Aucun morceau dans « {0} » !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Il y a trop de morceaux dans « {0} », la limite est de {1} !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Les morceaux sont trop volumineux dans « {0} » ({1} !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "La limite est de « {0} » o" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Le torrent « {0} » ne contient aucunes données !" @@ -468,98 +479,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Les torrents dépassant {0} o ne sont pas encore pris en charge « {1} » !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erreur : Impossible de supprimer le torrent « {0} »" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent arrêté : {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent supprimé : « {0} »" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Ajout de torrents dans {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Démarrage du torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "La limite de bande passante en amont est de {0} ko/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Téléchargement terminé : « {0} »" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Erreur dans le torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Ouverture du tunnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Ouverture du tunnel I2P et démarrage de tous les torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Arrêt de tous les torrents et fermeture du tunnel I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Fermeture du tunnel I2P après notification aux traqueurs." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Fin de la vérification du torrent {0}, maintenant {1} terminé" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Fin de la vérification du torrent {0}, inchangé" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Erreur de vérification du torrent {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Aucun traqueur valide pour {0}. Activer les traqueurs ouverts ou la table de hachage distribuée ?" @@ -590,197 +607,203 @@ msgstr "Le torrent a été récupéré de {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent déjà dans la file d’attente : {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Le torrent {0} n’était pas valide" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Configuration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Client BitTorrent anonyme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark s’est arrêté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Le routeur est hors service" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Voulez-vous vraiment supprimer le fichier « {0} » (les données téléchargées ne seront pas supprimées) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Voulez-vous vraiment supprimer le torrent « {0} » ainsi que toutes les données téléchargées ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Actualiser la page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Cliquer sur le bouton « Ajouter le torrent » pour récupérer le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "effacer les messages" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "État" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Trier par {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Cacher les pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Afficher les pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Type de fichier" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Fin prévue" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Temps restant prévu" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Récep." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Téléchargé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Taille" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Trans." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Ratio de téléversement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Téléversé" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Débit de récep." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Débit aval" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Débit de trans." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Débit amont" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Arrêter tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Arrêter tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Démarrer tous les torrents arrêtés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Démarrer tout" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Démarrer tous les torrents et le tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Aucun torrent n’est chargé." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Totaux" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -788,7 +811,7 @@ msgstr[1] "{0} torrents" msgstr[2] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -796,7 +819,7 @@ msgstr[1] "{0} pairs connectés" msgstr[2] "{0} pairs connectés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -804,219 +827,224 @@ msgstr[1] "{0} pairs de la table de hachage distribuée" msgstr[2] "{0} pairs de la table de hachage distribuée" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Dest." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Notre destination (identité) pour cette session" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Débogage de la table de hachage distribuée" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Première" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Première page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Préc." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Page précédente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Suiv." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Page suivante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Dernière" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Dernière page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Impossible d’ajouter le torrent {0} dans un autre torrent : {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Le téléchargement de l’emplacement {0} extérieur à I2P n’est pas pris en charge" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "L’URL est invalide : elle doit commencer par « {0} » ou « {1} »" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet supprimé : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Impossible de supprimer le fichier du torrent : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Téléchargement supprimé : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Fichier de données supprimé : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Impossible de supprimer le fichier de données : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Impossible de supprimer le répertoire : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Répertoire supprimé : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Impossible d’ajouter un torrent se terminant par « .torrent » : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Un torrent portant ce nom est déjà en cours : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Impossible d’ajouter un torrent incluant un dossier I2P : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Impossible d’ajouter un torrent {0} incluant un autre torrent : {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Erreur - Impossible d’inclure des traqueurs de remplacement sans traqueur primaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Erreur - Impossible de mélanger traqueurs public et privés dans un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent créé pour « {0} " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "De nombreux traqueurs I2P exigent que vous référenciez les nouveaux torrents avant de les propager. Veuillez le faire avant de démarrer « {0} » !" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erreur de création d’un torrent pour « {0} »" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Impossible de créer un torrent pour des données inexistantes : {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Erreur de création du torrent — vous devez saisir un fichier ou un répertoire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Supprimer les éléments sélectionnés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Enregistrer la configuration du traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Retiré" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Ajouter un traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Saisir un nom de traqueur et des URL valides" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Restaurer les valeurs par défaut" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Les traqueur par défaut ont été restaurés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Vérification" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Allocation" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Erreur de traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1024,17 +1052,17 @@ msgstr[1] "{0} pairs" msgstr[2] "{0} pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Démarrage" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Propagation en cours" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1042,27 +1070,27 @@ msgstr[1] "Propagation vers {0} pairs" msgstr[2] "Propagation vers {0} pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Terminé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Téléchargement à partir de {0} de {1} pairs dans l’essaim" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "Correct" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1070,7 +1098,7 @@ msgstr[1] "Téléchargement à partir de {0} pairs" msgstr[2] "Téléchargement à partir de {0} pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1078,462 +1106,479 @@ msgstr[1] "Connecté à {0} pairs" msgstr[2] "Connecté à {0} pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Bloqué" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Connecté à {0} de {1} pairs dans l’essaim" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Aucun pair" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Arrêté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Infos détaillées du torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Commentaires" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Voir les fichiers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Ouvrir le fichier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "terminé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "restant" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Terminé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Arrêter le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Arrêter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Démarrer le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Démarrer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Retirer le torrent de la liste des torrents actifs, supprimant le fichier .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Retirer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Supprimer le fichier .torrent et les fichiers de données associés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Supprimer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Le pair est attaché à l’essaim" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Inconnu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destination (identité) du pair" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Propager" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Sans intérêt (le pair n’a pas les morceaux dont nous avons besoin)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Étranglé (le pair ne nous permet pas de demander des morceaux)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Sans intérêt (nous n’avons pas les morceaux dont le pair a besoin)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Étranglement (nous ne permettons pas au pair de demander des morceaux)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Détails au traqueur {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Renseignements" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Ajouter le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "De l’URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Saisissez l’URL de téléchargement du fichier torrent (I2P seulement), le lien magnet ou les renseignements de l’empreinte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Ajouter le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Fichier torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Répertoire des données" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Saisir le répertoire où enregistrer les données (par défaut {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Vous pouvez aussi copier les fichiers .torrent dans : {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "La suppression d’un fichier .torrent arrêtera le torrent." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Créer un torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Données à propager" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fichier ou dossier à propager (chemin complet ou dans le dossier {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Créer un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Traqueurs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "De remplacement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Type de traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Ouvert" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "aucun" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Répertoire des données" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Répertoire où les torrents et les fichiers téléchargés ou partagés sont stockés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Les fichiers sont lisibles par tous" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Définir les droits des fichiers pour autoriser aux autres utilisateurs locaux d’accéder aux fichiers téléchargés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Démarrer automatiquement les torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Lancer automatiquement les torrents lors de l’ajout et les reprendre quand I2PSnark démarre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Triage intelligent des torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorer les mots tels que « a » et « the » lors du tri" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Panneaux rabattables" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Votre navigateur ne prend pas en charge cette fonction." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Permettre au panneau 'Ajouter un torrent' et 'Créer un torrent' d’être rabattus et les rabattre par défaut en mode non intégré." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Langue" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Thème" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Pour changer les thèmes manuellement, désactiver le thème universel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Le thème universel est activé." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Intervalle d’actualisation" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Fréquence de mise à jour de l’état du torrent sur la page principale" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Jamais" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Délai de démarrage" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Délai avant le chargement des torrents lancés automatiquement quand I2PSnark démarre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minutes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Taille de page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Nombre maximal de torrents à afficher par page" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Limite totale de téléverseurs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Nombre maximal de pairs pour le téléversement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Limite de bande passante en amont" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Bande passante maximale allouée au téléversement" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "La valeur recommandée est la moitié de la bande passante disponible. " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Visualiser ou modifier la bande passante du routeur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Utiliser également les traqueurs ouverts" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Annoncer les torrents aux traqueurs ouverts ainsi qu’aux traqueurs listés dans le fichier du torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Activer la table de hachage distribuée" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Utiliser la table de hachage distribuée pour découvrir d’autres pairs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Activer les évaluations" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Afficher les évaluations sur les pages des torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Activer les commentaires" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Afficher les commentaires sur les pages des torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Auteur du commentaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Définir le nom d’auteur pour vos commentaires et évaluations" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Paramètres des connexions entrantes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Paramètres des connexions sortantes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Hôte I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Port I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Options d’I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Enregistrer la configuration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Sélectionner les traqueurs à supprimer de la liste Connus d’I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nom" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL du site Web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL d’annonce" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Marquer le traqueur pour suppression" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Ajouter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "L’URL magnet {0} est invalide" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1541,7 +1586,7 @@ msgstr[1] "{0} sauts" msgstr[2] "{0} sauts" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1549,234 +1594,230 @@ msgstr[1] "{0} tunnels" msgstr[2] "{0} tunnels" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Modifier Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Fichier torrent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Emplacement des données" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Hachage d’infos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Traqueur primaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Liste des traqueurs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Graines Web" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Commentaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Créé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Créé par" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Ajouté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Dernière activité" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Lien magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrent privé" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Achèvement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Restant" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Ignoré" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Fichiers" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Morceaux" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Taille des morceaux" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Actualiser la page pour obtenir des résultats" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Forcer une revérification" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent doit être arrêté" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Vérifier l’intégrité des fichiers téléchargés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Ajouter ou enlever les traqueurs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Télécharger les fichiers en ordre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Télécharger les morceaux en ordre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Enregistrer la préférence" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "La ressource est introuvable" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Ressource" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Base" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "La ressource n’existe pas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Répertoire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "État de téléchargement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Priorité de téléchargement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Vers le répertoire parent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Liste de lecture audio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Le torrent est-il introuvable ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Le fichier est-il introuvable dans le torrent ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Aperçu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Télécharger le fichier avec une grande priorité" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Haute" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Télécharger le fichier avec un priorité normale" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normale" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Ne pas télécharger ce fichier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Ignorer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Tout définir à Haute" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Tout définir à Normale" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Tout ignorer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Enregistrer les priorités" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Évaluations et commentaires" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Le nom de l’auteur est exigé pour évaluer ou commenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Votre nom d’auteur pour les commentaires et les évaluations publiés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Activer la visualisation et la publication de commentaires pour ce torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1784,52 +1825,52 @@ msgstr[1] "{0} étoiles" msgstr[2] "{0} étoiles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Aucune évaluation" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Évaluer et commenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Évaluer le torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Ajouter un commentaire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mon évaluation" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Évaluation moyenne" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Aucune évaluation par la communauté n’est proposée actuellement" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marquer pour suppression" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Supprimer les éléments sélectionnés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Ajouter un traqueur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Enregistrer les changements" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_hu.po i2p-2.5.0/apps/i2psnark/locale/messages_hu.po --- i2p-2.4.0/apps/i2psnark/locale/messages_hu.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_hu.po 2024-04-10 02:29:57.000000000 +0000 @@ -14,10 +14,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: vargaviktor , 2022\n" -"Language-Team: Hungarian (http://www.transifex.com/otf/I2P/language/hu/)\n" +"Language-Team: Hungarian (http://app.transifex.com/otf/I2P/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,332 +29,338 @@ msgstr "Nincs több futó torrent." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P alagút lezárva." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Mágnes" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Sikertelen csatlakozás az I2P-hez" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Hiba az I2P-hez való csatlakozáskor - ellenőrizd az I2CP beállításait!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "sötét" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "világos" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "lila" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanília" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Nincs írási jogosultság az adatkönyvtárra" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Adatkönyvtár nem hozható létre" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Teljes feltöltők korlátja megváltoztatva a következőre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Teljes feltöltők minimum korlátja a következő: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Feltöltési sávszélesség korlátja megváltoztatva a következőre: {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "A minimum feltöltési sávszélesség korlátja {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Késleltetés indításkor megváltoztatva a következőre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Frissítési idő a következőre változott: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Frissítés kikapcsolva" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Oldalméret megváltoztatva erre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Az új fájlok nyilvánosan olvashatók lesznek" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Az új fájlok nyilvánosan nem lesznek olvashatók" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Az adatkönyvtár elérési útjának abszolútnak kell lennie" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Az adatkönyvtár nem létezik" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Nem könyvtár" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Olvashatatlan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Adatkönyvtár megváltoztatva erre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Az I2CP-re és alagutakra vonatkozó változtatások az összes torrent leállítása után lépnek érvénybe" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP opciók a következőre lettek változtatva: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Lekapcsolódás a régi I2CP célállomásról" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP beállítások a következőre változtak: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Sikertelen kapcsolódás az új beállításokat használva, visszatérés a régi I2CP beállításokhoz" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Sikertelen újrakapcsolódás a régi beállításokat használva!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Újracsatlakozva az új I2CP célállomásra" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP figyelő újraindítva a következőhöz: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Automatikus indítás engedélyezve" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Automatikus indítás kikapcsolva" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Okosrendezés engedélyezve" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Okosrendezés letiltva" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Nyílt követők (tracker) engedélyezve - az érvénybe lépéshez a torrent újraindítása szükséges." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Nyílt követők (tracker) kikapcsolva - az érvénybe lépéshez a torrent újraindítása szükséges." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT engedélyezve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT letiltva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHT változtatásához alagút kikapcsolása és újranyitása szükséges" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Besorolás engedélyezve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Besorolás letiltva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Hozzászólások engedélyezve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Hozzászólások letiltva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Hozzászólások neve bállítva erre: {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} téma betöltve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Összecsukható panelek engedélyezve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Összecsukható panelek letiltva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Beállítások nem lettek megváltoztatva." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Nyílt Követők (tracker) listája megváltozott - az érvénybe lépéshez a torrent újraindítása szükséges." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Megváltozott a privát tracker lista - csak az újonnan létrehozott torrentekre vonatkozik." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Nem sikerült a beállítások mentése a következőre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent fájl törölve: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrent fájl átmozgatva innen: {0} ide: {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Hiba: a következő torrent hozzáadása sikertelen: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent már fut: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "\"{0}\" megnyitása sikertelen" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "A torrent már fut ezzel az infó hash-el: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "A torrent már fut és adatainak helye ugyanaz: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "HIBA - Nincsenek I2P követők (trackerek) a következő privát torrentben: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Figyelmeztetés - Nincsenek I2P követők itt: \"{0}\", csak az I2P nyilvános követőkön és DHT-n lesz közzétéve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Figyelmeztetés - Nincsenek I2P követők itt: \"{0}\", és nyilvános követők letiltva, csak DHT-n lesz közzétéve." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -362,40 +368,44 @@ "torrent." msgstr "Figyelmeztetés - Nincsenek I2P követők itt: \"{0}\", valamint a DHT és nyilvános követők letiltva, engedélyezned kellene a nyilvános követőket vagy DHT-t a torrent indítása előtt." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Érvénytelen torrent a következőben: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "HIBA - nincs több memória, torrent létrehozása sikertelen a következőből: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Kapcsolódás az I2P-hez" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent hozzáadva és indítva: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent hozzáadva: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Leszedés: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -403,55 +413,56 @@ "DHT." msgstr "Nyilvános követők letiltva és nincsenek DHT társak. {0} leszedése lehet, hogy sikertelen addig, amíg el nem indítasz egy másik torrentet, engedélyezed a nyilvános követőket vagy engedélyezek a DHT-t." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "{0} Hozzáadása" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Futó letöltés: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Nem sikerült a torrent fájl másolása a következőre: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Túl sok fájl itt: \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Torrent fájl \"{0}\" nem végződhet ezzel: \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Nincsenek darabok itt: \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Túl sok darab itt: \"{0}\", a határ ez: {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Darabok túl nagyok itt: \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "A határ {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" nem tartalmaz adatot!" @@ -461,98 +472,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrent, amely nagyobb, mint {0}B még nincs támogatva \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Hiba: a következő torrent eltávolítása sikertelen: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent leállítva: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent eltávolítva: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Torrentek hozzáadása a következőben: {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "{0} torrent indítása" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Feltöltési sebesség korlát {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "A letöltés befejeződött: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Hiba a következő torrenten: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Az I2P alagút megnyitása" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Az I2P alagút megnyitás, minden torrent indítás alatt." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Az összes torrent leállítás és az I2P alagút lezárás alatt." -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Az I2P alagút bezásra kerül a követők értesítése után." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Elkészült az újraellenőrzése ennek a torrentnek: {0}, most {1} kész" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Elkészült az újraellenőrzése ennek a torrentnek: {0}, változatlan" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Hiba a következő torrent ellenőrzése közben: {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Nincsenek érvényes követők ehhez: {0} - engedélyezd a nyilvános követőket vagy a DHT-t?" @@ -583,1236 +600,1260 @@ msgstr "Torrent leszedve a következőről: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent már a sorban van: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Érvénytelen torrent a következő helyen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Beállítások" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Névtelen BitTorrent Kliens" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark leállt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Router leállva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Biztos, hogy törölni akarod a következő fájlt: \\''{0}\\'' (a letöltött adatok nem lesznek törölve) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Biztos, hogy törlöd a következő torrentet és az összes letöltött adatot: \\''{0}\\'' ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrentek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Lap újratöltése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Torrent leszedéséhez kattints a \"Torrent hozzáadása\" gombra" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "üzenetek törlése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Állapot" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Rendezés eszerint: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Társak Elrejtése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Társak Megjelenítése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Fájltípus" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "BIE" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Becsült hátralévő idő" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Be" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Letöltött" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Méret" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Ki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Feltöltési arány" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Feltöltött" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "RX Mértéke" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Letöltési Sebesség" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "TX Mértéke" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Feltöltési Sebesség" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Minden torrent és az I2P alagút leállítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Mindet Leállít" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Összes leállt torrent elindítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Mind Indítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Minden torrent és az I2P alagút indítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Egy torrent sem került betöltésre." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Összesen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrent" msgstr[1] "{0} torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 csatlakozott társ" msgstr[1] "{0} csatlakzott társ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 DHT társ" msgstr[1] "{0} DHT társ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Cél" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Úticélunk (azonosítónk) erre a munkafázisra" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht Hibaelhárítás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Első" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Első oldal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Előző" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Előző oldal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Következő" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Következő oldal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Utolsó" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Utolsó oldal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Nem lehet hozzáadni ezt a torrentet: {0} egy másik torrenten belül: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Letöltés nem az I2P-hez tartozó helyről: {0} nincs támogatva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Érvénytelen URL: Ezzel kell kezdődnie: \"{0}\" vagy ezzel: \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Mágnes észlelve: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Torrent fájlt nem sikerült törölni: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Letöltés törölve: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Adatfájl törölve: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Adatfájl törlése nem sikerült: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Könyvtár nem törölhető: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Könyvtár törölve: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Nem lehet hozzáadni torrent-et, amely \".torrent\"-el végződik: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent már fut ezzel a névvel: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Az I2P könyvtárát tartalmazó torrent nem adható hozzá: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Nem lehet hozzáadni torrentet {0} mely másik torrentet tartalmaz: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Hiba - nem tartalmazhat helyettes követőket elsődleges követő nélkül" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Hiba - nem lehet összekeverni magán és nyilvános követőket egy torrenten belül" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent létrehozva a következőnek: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Sok I2P követő (tracker) megköveteli az új torrentek regisztrációját táplálás (seed) előtt - kérlek, regisztrálj, mielőtt elindítod a következőt: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Hiba történt a torrent létrehozásakor \"{0}\" számára" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Nem sikerült torrent létrehozása, nemlétező adat: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Hiba a torrent létrehozásakor - Fájl vagy könyvtár megadása kötelező" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Kijelöltek törlése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Követő beállításainak mentése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Eltávolítva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Követő (tracker) hozzáadása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Adj meg érvényes követő (tracker) nevet és URL címeket" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Alapértelmezések visszaállítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Alapértelmezett követők (trackerek) visszaállítva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Ellenőrzés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Helyfoglalás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Követő (tracker) Hiba" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 társ" msgstr[1] "{0} társ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Indítás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Táplálás (seeding)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "Táplálás {0} társnak" msgstr[1] "Táplálás {0} társnak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Kész" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Letöltés {0} / {1} társtól a bolyban" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "Rendben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "Letöltés {0} társtól" msgstr[1] "Letöltés {0} társtól" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "Csatlakozva {0} társhoz" msgstr[1] "Csatlakozva {0} társhoz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Beragadt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Csatlakozva {0} / {1} társhoz a bolyban" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Nincsenek Társak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Leállítva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Torrent részletek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Megjegyzések" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Fájlok megtekintése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Fájl megnyitása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "kész" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "hátralévő" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Kész" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Torrent leállítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Leállítás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Torrent indítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Indítás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Torrent eltávolítása az aktív listáról, a .torrent fájl törlésével" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Eltávolítás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Töröld ki a .torrent fájlt és a hozzá tartozó adatfájlokat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Törlés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Társ csatlakozott a bolyhoz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Ismeretlen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "A társ úticélja (azonosítója)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Táplálás (Seed)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Érdektelen (társ nem rendelkezik számunkra szükséges részekkel)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Eltömődött (a társ nem engedi részek igénylését)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Érdektelen (nem rendelkezünk a társak számára szükséges részekkel)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Eltömődött (a társak számára a részek igénylése nem engedélyezett)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Részletek a következő követőn (tracker): {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Infó" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Torrent Hozzáadása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "URL címről" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Add meg a torrent fájl letöltési URL-jét (csak I2P), mágnes hivatkozást, vagy info hash-t" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Torrent hozzáadása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Torrent fájl" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Adat mappa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Add meg a mappát, ahová az adatok mentésre kerülnek (alapértelmezésben {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Másolhatsz .torrent fájlokat a következőhöz is: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "A .torrent fájl eltávolításával meg fog állni." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Torrent létrehozása" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Adat táplálásra (seed)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fájl vagy mappa a tápláláshoz (teljes elérési út vagy mappán belül {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Torrent létrehozása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Követők (trackerek)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Elsődleges" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Helyettesítők" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Követő Típusa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Normál" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Megnyitás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privát" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "semmi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Adatkönyvtár" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Mappa, ahol a torrented és a letöltött/megosztott fájlok kerülnek tárolásra" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Mindenki által olvasható fájlok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Állítsd be a fájlok engedélyeit, hogy a letöltött fájlokhoz elérést biztosíts más helyi felhasználók számára" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Torrentek automatikus indítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Automatikusan elindítja a torrenteket hozzáadáskor és újraindítja a torrenteket, amikor I2PSnark elindul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Okos torrent rendezés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Szavak, mint 'a' és 'the' kihagyása rendezésnél" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Összecsukható panelek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "A böngésződ nem támogatja ezt a funkciót." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Megengedi, hogy a 'Torrent Hozzáadása' és a 'Torrent Létrehozása' panelek összecsukhatóak legyenek, és nem-beágyazott módban alapértelmezésben csukja őket össze" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Nyelv" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Téma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "A témák kézi változtatásához tiltsd le az átfogó témákat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Átfogó témák engedélyezve." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Beállít" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Idő frissítése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "A torrentek állapota milyen gyakran kerül frissítésre a főoldalon" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Soha" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Indítási késleltetés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Mennyi idő telik el, milőtt az automatikusan induló torrented betöltésre kerülnek az I2PSnark indításánál" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "perc" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Oldalméret" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Oldalanként megjelenítendő torrentek maximális száma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrentek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Teljes feltöltők korlát" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Társak maximális száma feltöltéshez" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "társak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Feltöltési sávszélesség korlát" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Rendelkezésre bocsátott maximális sávszélesség feltöltéshez" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "A rendelkezésre álló sávszélesség fele javasolt." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "A router sávszélesség megtekintése vagy megváltoztatása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Nyílt követőket (tracker) is használjon" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Torrentek közzététele a nyilvános követőkön és a torrent fájlban lévő követőkön is" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "DHT engedélyezése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "DHT használata további társak megtalálásához" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Besorolás Engedélyezése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Besorolás megjelenítése a torrent oldalakon" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Hozzászólások Engedélyezése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Hozzászólások megjelenítése a torrent oldalakon" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Hozzászólás Szerzője" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Beállítja a szerző nevét a hozzászólásaidhoz és besorolásaidhoz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Bejövő Beállítások" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Kimenő Beállítások" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP hoszt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP opciók" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Beállítások mentése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Eltávolításra szánt követők kiválasztása az I2PSnark ismert listájából" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Név" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "Weboldal URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Bejelentési URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Követő kijelölése törlésre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Hozzáadás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Érvénytelen mágnes URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 ugrás" msgstr[1] "{0} ugrás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 alagút" msgstr[1] "{0} alagút" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Torrent szerkesztése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Torrent fájl" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Adat helye" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Infó hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Elsődleges Követő" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Követő Lista" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Webes Táplálás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Megjegyzés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Létrehozva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Létrehozta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Hozzáadva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Utolsó aktivitás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Mágnes link" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Privát torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Befejezés" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Hátralévő" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Kihagyva" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Fájlok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Részek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Rész méret" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Az eredményekért frissítsd az oldalt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Újraellenőrzés kényszerítése" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "A Torrentet le kell állítani" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "A letöltött fájlok épségének ellenőrzése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Tracker-ek hozzáadása vagy eltávolítása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Fájlok letöltése sorrendben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Darabok letöltése sorrendben" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Kiválasztás Mentése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Erőforrás Nem Található" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Forrás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Bázis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Erőforrás nem létezik" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Könyvtár" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Letöltés Állapota" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Letöltés Sürgőssége" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Vissza a felsőbb szintű könyvtárba" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Hang Lejátszólista" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrent nem található?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "File nem található a torrentben?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Előnézet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Fájl letöltése nagy sürgősséggel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Magas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Fájl letöltése szokásos sürgősséggel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normál" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Ne töltsd le ezt a fájlt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Kihagy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Mindet nagyra állít" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Mindet szokásosra állt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Mindet kihagy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Tulajdonságok mentése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Besorolások és Hozzászólások" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Szerző neve szükséges besoroláshoz vagy hozzászóláshoz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Szerzői neved a közzétett hozzászólásokhoz és besorolásokhoz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Hozzászólások megtekintésének és küldésének engedélyezése ehhez a torrenthez" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "1 csillag" msgstr[1] "{0} csillag" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Nincs besorolás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Besorolás és Hozzászólás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Torrent Besorolása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Hozzászólás hozzáadása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Az Én Besorolásom" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Átlagos Besorolás" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Közösségi besorolás jelenleg nem áll rendelkezésre" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Törlésre kijelöl" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Kiválasztottak Törlése" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Követő (tracker)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Tracker hozzáadása" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Változtatások mentése" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_in.po i2p-2.5.0/apps/i2psnark/locale/messages_in.po --- i2p-2.4.0/apps/i2psnark/locale/messages_in.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_in.po 2024-04-10 02:29:57.000000000 +0000 @@ -9,10 +9,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" -"PO-Revision-Date: 2022-02-09 19:23+0000\n" -"Last-Translator: Robert Dafis \n" -"Language-Team: Indonesian (http://www.transifex.com/otf/I2P/language/id/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-02-13 12:00+0000\n" +"Last-Translator: Robert Dafis , 2017-2018\n" +"Language-Team: Indonesian (http://app.transifex.com/otf/I2P/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,332 +24,338 @@ msgstr "Tidak ada lagi torrents yang berjalan." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Tunnel I2P ditutup" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet " #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Kesalahan menghubungkan ke I2P - periksa pengaturan I2CP Anda!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "gelap" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "terang" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilla" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Tidak ada hak akses tulis untuk direktori data" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Direktori data tidak dapat dibuat" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Batas penguploadr total diubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Batas total pengupload minimum adalah {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Batas Upload BW berubah menjadi {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Batas bandwidth upload minimum adalah {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Startup delay berubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Waktu refresh berubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Refresh dinonaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Ukuran halaman berubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "File baru akan dapat dibaca oleh publik" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "File baru tidak akan dapat dibaca publik" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Direktori data harus berupa absolute path" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Direktori data tidak ada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Bukan direktori" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Tidak terbaca" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Direktori data diubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CP dan perubahan tunnel akan berlaku setelah menghentikan semua torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Opsi I2CP diubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Memutus destinasi I2CP lama" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Pengaturan I2CP diubah menjadi {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Tidak dapat terhubung dengan pengaturan baru, kembali ke pengaturan I2CP lama" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Tidak dapat menyambung kembali dengan pengaturan lama!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Terhubung kembali pada destinasi I2CP yang baru" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP listener dimulai ulang untuk \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Autostart diaktifkan " -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Autostart dinonaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Smart sort diaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Smart sort dinonaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Open tracker diaktifkan - torrent perlu direstart untuk berlaku." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Open tracker dinonaktifkan - torrent perlu direstart untuk diterapkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT diaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT dinonaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Perubahan DHT membutuhkan shutdown tunnel dan membukanya kembali" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Rating diaktifkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Rating dinonaktifkan" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Komentar diaktifkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Komentar dinonaktifkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Nama komentar diatur untuk {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "theme {0} dimuat." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Collapsible panels diaktifkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Collapsible panels dinonaktifkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Konfigurasi tidak berubah." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Daftar Open Tracker berubah - restart torrent yang diperlukan untuk diterapkan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Daftar Private Tracker berubah - hanya memberikan efek ke torrent yang baru diciptakan." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Tidak dapat menyimpan konfigurasi ke {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "File torrent: {0} dihapus" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "File Torrent pindah dari {0} ke {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Kesalahan: Tidak dapat menambahkan torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent sedang berjalan: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Tidak bisa membuka \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent dengan hash info ini sudah berjalan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "KESALAHAN - tidak ada I2P tracker di private torrent \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Peringatan - Tidak ada tracker I2P di dalam \"{0}\", akan mengumumkan kepada open tracker I2P dan hanya DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Peringatan - Tidak ada tracker I2P di \"{0}\", dan open tracker dinonaktifkan, hanya akan diumumkan ke DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -357,40 +363,44 @@ "torrent." msgstr "Peringatan - Tidak ada tracker I2P di \"{0}\", dan DHT dan open tracker dinonaktifkan, anda harus mengaktifkan open tracker atau DHT sebelum memulai torrent." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent di \"{0}\" tidak valid" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "KESALAHAN - kehabisan memory - tidak bisa membuat torrent dari {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Menghubungkan ke I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent ditambah dan dijalankan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent ditambahkan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Mengambil {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -398,55 +408,56 @@ "DHT." msgstr "Open trackers dinonaktifkan dan DHT peers tidak ada. Pengambilan {0} mungkin tidak berhasil sampai anda memulai torrent lain, mengaktifkan open tracker, atau mengaktifkan DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Menambah {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Download sudah berjalan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Gagal mengkopi torrent file kepada {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Terlalu banyak file di dalam \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "File torrent \"{0}\" tidak dapat berakhir dengan \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Tidak ada potongan di dalam \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Terlalu banyak potongan di \"{0}\", batasnya adalah {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Potongan terlalu besar di dalam \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Batasnya adalah {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" tidak punya data!" @@ -456,98 +467,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrents lebih besar dari {0}B belum didukukung \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Kesalahan: Tidak dapat menghapus torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent berhenti: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent dihapus: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Menambah torrent di dalam {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Memulai torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Batas bandwidth upload adalah {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Download selesai: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark " - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Kesalahan pada torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark " + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Membuka I2P tunnel" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Membuka tunnel I2P dan mulai semua torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Menghentikan semua torrents dan menutup tunnel I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Menutup tunnel I2P setelah memberitahukan tracker" -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Selesai memeriksa torrent {0}, sekarang {1} selesai" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Selesai memeriksa torrent {0}, tidak berubah" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Error dalam memeriksa torrent {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Tidak ada tracker yang valid untuk {0} - aktifkan opentrackers atau DHT?" @@ -578,1226 +595,1250 @@ msgstr "Torrent diambil dari {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent sudah dalam antrian: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent di {0} tidak valid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Konfigurasi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonymous BitTorrent Client " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark sudah berhenti" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Router tidak aktif" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Apakah anda yakin anda ingin menghapus file \\'' {0} \\'' (data yang sudah di download tidak akan dihapus)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Apakah anda yakin anda ingin menghapus torrent \\'' {0} \\'' dan semua data yang telah didownload?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Halaman Refresh" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Klik tombol \"Add Torrent\" untuk mengambil torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "Hapus pesan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Status " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Urutkan dengan {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Sembunyikan peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Tunjukkan peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Tipe file" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Waktu selesai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Perkiraan waktu tersisa" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Telah terdonwload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Ukuran" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Rasio upload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Telah terupload" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Tingkat RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Kecepatan download" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Tingkat TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Kecepatan upload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Hentikan semua torrents dan tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Hentikan semua" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Mulai semua torrents yang berhenti" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Mulai semua" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Mulai semua torrents dan tunnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Tidak ada torrent dimuat." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0} torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0} peer yang terhubung" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "{0} peer DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Destinasi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Destinasi (identitas) kita untuk sesi ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht Debug " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Pertama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Halaman pertama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Sebelumnya" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Halaman sebelumnya" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Berikutnya" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Halaman berikutnya" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Terakhir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Halaman terakhir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Tidak dapat menambahkan torrent {0} dalam torrent lain: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "File torrent tidak dapat dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Download dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "File data yang dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Data file tidak dapat dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Direktori tidak dapat dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Direktori telah dihapus: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Tidak dapat menambahkan torrent yang namanya diakhiri dengan \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent dengan nama ini sudah berjalan: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Tidak dapat menambahkan torrent termasuk direktori I2P: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Tidak dapat menambahkan torrent {0} termasuk torrent lain: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Kesalahan - tidak dapat menyertakan alternate tracker tanpa primary tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Kesalahan - tidak dapat mencampur private dan public tracker di torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent yang dibuat untuk \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Banyak I2P tracker mengharuskan anda untuk mendaftar torrents baru sebelum seeding - silahkan melakukannya sebelum memulai \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Error membuat torrent untuk \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Tidak dapat membuat torrent untuk data yang tidak ada: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Kesalahan membuat torrent - anda harus memasukkan file atau direktori" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Hapus pilihan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Simpan konfigurasi tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Telah dihapus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Tambahkan tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Masukkan nama tracker dan URL yang valid " #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Kembalikan ke default" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Tracker default yang telah dikembalikan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Memeriksa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Mengalokasikan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Tracker Error " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0} peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Memulai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Seeding " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "Seeding kepada {0} peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Selesai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Men-download dari {0} dari peer {1} di dalam swarm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OKE" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "Men-download dari {0} peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "Terhubung ke {0} peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Stalled " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Terhubung ke {0} dari peer {1} di dalam swarm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Tidak ada peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "dihentikan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Rincian torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Lihat file" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Buka file" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "Selesai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "Tersisa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Selesai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Hentikan torrent ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Hentikan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Mulai torrent ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Mulai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Hapus torrent dari daftar aktif, hapus .torrent file" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Hapus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Hapus file .torrent dan file data terkait" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Hapus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Rekan melekat ke swarm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Tidak diketahui" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destinasi (identitas) peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Seed " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (peer memiliki potongan-potongan yang tidak kita perlu)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Chocked (peer tidak membiarkan kita untuk meminta potongan)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (kita memiliki potongan-potongan diinginkan peer)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (kita tidak membiarkan peer meminta potongan)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Rincian di {0} tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Tambahkan Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Dari URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Tambahkan torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "File torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Direktori data" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Masukkan direktori untuk menyimpan data (default {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Anda juga dapat mengkopi file .torrent: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Menghapus sebuah file .torrent akan menyebabkan downloadnya berhenti." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Buat Torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Data untuk seeding" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "File atau direktori yang akan di-seeding (path lengkap atau dalam direktori {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Buat torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackers " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Utama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Aternatif" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Jenis Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Terbuka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Pribadi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "Tidak ada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Direktori data" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Direktori di mana torrent dan file didownload/dibagikan disimpan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "File yang dapat dibaca oleh semua" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Atur file permission untuk memungkinkan pengguna lokal untuk mengakses file yang telah didownload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Mulai otomatis torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Otomatis mulai torrents ketika ditambahkan dan restart torrents ketika I2PSnark dimulai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Smart torrent sorting " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Abaikan kata-kata seperti 'a' dan 'the' ketika menyortir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Collapsible panels" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Browser anda tidak mendukung fitur ini." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Membuat panel 'Tambah Torrent' dan 'Buat Torrent' menjadi collaps, dan collaps secara default dalam mode non-embedded" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Bahasa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Theme " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Untuk mengubah theme secara manual, nonaktifkan universal theming" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Universal theming diaktifkan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Konfigurasi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Waktu refresh" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Seberapa sering status torrent diperbarui pada halaman utama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Tidak akan." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Penundaan startup" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Berapa lama torrents yang sudah dimuat, dimulai secara otomatis ketika I2PSnark dimulai" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "Menit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Ukuran halaman" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Jumlah maksimum torrents ditampilkan per halaman" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Total batas uploader" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Jumlah maksimum peer yang kepadanya kita upload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "peer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Batas bandwidth upload" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Bandwidth maksimum yang dialokasikan untuk meng-upload" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Setengah bandwidth yang tersedia direkomendasikan." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Lihat atau ubah bandwidth router" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Juga gunakan open tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Umumkan torrents kepada open tracker serta tracker yang tercantum dalam torrent file" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Aktifkan DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Gunakan DHT untuk menemukan peer tambahan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Aktifkan rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Tampilkan rating pada halaman torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Aktifkan komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Tampilkan komentar pada halaman torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Penulis komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "tetapkan nama penulis untuk komentar dan penilaian anda" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Setting inbound" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Setting outbound" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Host I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Port I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Opsi I2pC" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Simpan konfigurasi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Pilih tracker untuk penghapusan dari I2PSnark's known list" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL situs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Umumkan URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Tandai tracker untuk dihapus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Tambahkan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Magnet URL {0} tidak valid" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0} hop " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0} tunnel " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "File torrent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Lokasi data" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info hash " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Primary Tracker " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Daftar Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Dibuat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Dibuat oleh" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Telah ditambah" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Aktivitas terakhir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Link magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Private torrent " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Selesai dalam" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Tersisa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Dilewatkan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "FIle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Potongam" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Ukuran potongan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Refresh halaman untuk melihat hasil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Force Recheck " #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Priksa integritas file yang telah di-download" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Download file secara berurutan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Download potongan secara berurutan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Simpan preferensi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Sumber daya yang tidak ditemukan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Sumber daya" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Base " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Sumber daya tidak ada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Direktori" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Status Download" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Prioritas Download " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Ke tingkat direktori yang lebih tinggi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrent tidak ditemukan?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "File tidak ditemukan di torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Preview " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Men-download file pada prioritas tinggi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Tinggi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Men-download file pada prioritas normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Jangan download file ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Lewati" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Atur semua menjadi tinggi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Atur semua menjadi normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Lewati semua" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Simpan prioritas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Rating dan Komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Nama penulis diperlukan untuk memberikan rating atau komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Nama penulis anda untuk rating dan komentar yang diterbitkan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Aktifkan melihat dan memberikan komentar untuk torrent ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "{0} bintang" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Tidak ada rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Berikan Rating dan Komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Berikan Rating kepada Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Tambahkan Komentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Rating yang Saya Berikan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Nilai Rata-Rata Rating" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Community rating tidak tersedia saat ini" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Tandai untuk dihapus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Hapus Yang Dipilih" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_ja.po i2p-2.5.0/apps/i2psnark/locale/messages_ja.po --- i2p-2.4.0/apps/i2psnark/locale/messages_ja.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_ja.po 2024-04-10 02:29:57.000000000 +0000 @@ -5,16 +5,16 @@ # # Translators: # kami , 2014-2015 -# daingewuvzeevisiddfddd, 2022-2023 +# daingewuvzeevisiddfddd, 2022-2024 # daingewuvzeevisiddfddd, 2020-2021 # daingewuvzeevisiddfddd, 2021 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: daingewuvzeevisiddfddd, 2022-2023\n" +"Last-Translator: daingewuvzeevisiddfddd, 2022-2024\n" "Language-Team: Japanese (http://app.transifex.com/otf/I2P/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -27,334 +27,338 @@ msgstr "これ以上のトレントを稼働しないでください。" #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2Pトンネルは閉じました。" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "マグネット" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "I2Pに接続できません" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "I2Pへの接続中にエラー - I2CP設定を確認して下さい!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "ダーク" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "ライト" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "なすび" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "バニラ" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "データディレクトリへの書き込み権限がありません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "データディレクトリを作成できません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "合計アップローダー数の上限は{0}に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "最低合計アップローダー数の上限は{0}です" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "アップロード帯域幅の上限は{0}Kbpsに変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "最低アップロード帯域幅の上限は{0}KBpsです" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "起動延滞時間は{0}に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "更新時間は{0}に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "更新は無効です" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "ページの大きさは{0}に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "新しいファイルは公衆に読めるようになります" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "新しいファイルは公衆に読めるようにはなりません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "データディレクトリを変更する前に全てのトレントを停止してください" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "データディレクトリは絶対パスでなければいけません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "データディレクトリは存在しません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "ディレクトリではありません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "読み取り不可です" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "データディレクトリは {0} へ変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CPとトンネルの変更されたものは、全てのトレントが停止した後に反映されます" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP設定は {0} に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "古いI2CP宛先を切断しています" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP設定は {0} に変更されました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "新しい設定で接続できず、古いI2CP設定に戻しました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "古い設定で再接続できません!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "新しいI2PC宛先で再接続しました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CPリスナーは\"{0}\"で再起動しました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "自動開始を有効にしました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "自動開始を無効にしました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "気の利いた並び替えを有効にしました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "気の利いた並び替えを無効にしました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "オープントラッカーを有効化 - 反映には、トレントの再起動が必要です。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "オープントラッカーを無効化 - 反映には、トレントの再起動が必要です。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHTを有効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHTを無効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHTの変更には、トンネルのシャットダウンと再開放が必要です" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "評価を有効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "評価を無効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "コメントを有効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "コメントを無効にしました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "コメントの名前を {0} に設定する。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} テーマを読み込みました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "折り畳めるパネルが有効化されました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "折り畳めるパネルが無効化されました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "設定は変更されませんでした。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "オープントラッカー一覧が変更されました - 反映には、トレントの再起動が必要です。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "プライベートトラッカー一覧が変更されました - 新しく作成されたトレントのみに影響します" -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "設定を {0} に保存できません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "トレントファイルを削除しました: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "トレントファイルを {0} から {1} へ移動しました" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "エラー: トレント {0} は追加されませんでした" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "トレントは既に稼働しています: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "\"{0}\" を開けません" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "この info hash を持つトレントは既に稼働しています: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "同じデータの場所を持つトレントは既に稼働しています: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "エラー - プライベートトレント \"{0}\" にI2Pトラッカーがありません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "警告 - I2Pトラッカーは\"{0}\"にないので、I2PオープントラッカーとDHTのみにアナウンスします。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "警告 - I2Pトラッカーは\"{0}\"になく、I2Pオープントラッカーは無効なので、DHTのみにアナウンスします。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -362,44 +366,44 @@ "torrent." msgstr "警告 - I2Pトラッカーは\"{0}\"になく、I2PオープントラッカーとDHTは無効なので、トレントを開始する前にオープントラッカーまたはDHTを有効にする必要があります。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "\"{0}\"のトレントは無効です" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "エラー - メモリ不足、 {0} からトレントファイルを作成できません" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "I2Pに接続しています" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "トレントの追加と開始をしました: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "トレントを追加しました: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "{0} を取得中" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -407,56 +411,56 @@ "DHT." msgstr "オープントラッカーは無効になっており、DHTピアはありません。別のトレントを開始するか、オープントラッカーを有効にするか、DHTを有効にするまで、 {0} の取得が成功しない場合があります。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "{0} を追加" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "ダウンロードは既に稼働しています: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "{0} へのトレントファイルのコピーに失敗しました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "\"{0}\"にはファイルが多すぎます(\"{1}\")!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "トレントファイル\"{0}\"は\".torrent\"で終われません!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "\"{0}\"に断片がありません!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "\"{0}\"に断片が多すぎます、上限は {1} です!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "\"{0}\"では断片が大きすぎます({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "上限は{0}Bです" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "トレント\"{0}\"にはデータがありません" @@ -466,94 +470,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "{0}Bより大きいトレントは、まだサポートされていません \"{1}\" !" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "エラー: そのトレント {0} を削除できませんでした" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "トレントを停止しました: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "トレントを削除しました: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "{0} にトレントを追加" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "トレント {0} を開始" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "下り帯域幅の上限は{0}KBpsです" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "上り帯域幅の上限は{0}KBpsです" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "ダウンロードが完了しました: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "トレント {0} でエラー" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "I2Pトンネルを開放" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "I2Pトンネルを開放し、全てのトレントを開始しました。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "全てのトレントを停止し、I2Pトンネルを閉じます。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "トラッカーに通知してからI2Pトンネルを閉じます。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "トレント {0} の確認が終了しました、現在 {1} 完了しました" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "トレント {0} の確認が終了しました、変更されてません" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "トレント {0} の確認エラー" @@ -589,1242 +598,1250 @@ msgstr "トレントを {0} から取得しました" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "トレントは既に待機列にあります: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0} でのトレントは有効ではありませんでした" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "匿名ビットトレントクライアント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnarkは停止しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "ルーターは落ちています" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "そのファイル \\\"{0}\\\" を削除してもよろしいですか(ダウンロードしたデータは削除されません)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "そのトレント \\\"{0}\\\" と全てのダウンロードしたデータを削除してもよろしいですか?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "トレント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "ページを更新する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "トレントを取得するために、\"トレントを追加\"ボタンをクリックしてください" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "通知消去" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "状態" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "{0}で並び替える" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "ピアを隠す" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "ピアを見せる" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "トレント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "ファイルの種類" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "推定残り時間" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "受信機" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "ダウンロード済み" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "大きさ" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "送信機" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "アップロード率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "アップロードした量" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "受信機率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "ダウン率" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "送信機率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "アップ率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "全てのトレントとI2Pトンネルを停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "全て停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "停止されたトレントを全て開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "全て開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "全てのトレントとI2Pトンネルを開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "トレントが見つかりません。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "トレントは読み込まれていません。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "合計" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0}個のトレント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0}個の接続したピア" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "{0}個のDHTピア" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "このセッション用の宛先(同一性)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dhtデバッグ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "最初" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "最初のページ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "前へ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "前のページ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "次へ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "次のページ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "最後" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "最後のページ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "別のトレントの内部にトレント {0} を追加できません: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "I2P以外の場所 {0} からのダウンロードはサポートされていません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "無効なURL: \"{0}\"または\"{1}\"で始まる必要があります。" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "URLを入力するか、トレントファイルを選択してください" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "マグネットを削除しました: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "トレントファイルを削除できませんでした: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "ダウンロードを削除しました: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "データファイルを削除しました: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "データファイルを削除できませんでした: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "ディレクトリを削除できませんでした: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "ディレクトリを削除しました: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "\".torrent\"で終わるトレントを追加できません: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "その名前のトレントは既に稼働しています: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "I2Pディレクトリを含むトレントを追加できません: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "別のトレントを含むトレント {0} を追加できません: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "エラー - 第一トラッカーを含めずに、代替トラッカーを含められません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "エラー - トレントの中にプライベートと公開のトラッカーを混ぜられません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "\"{0}\"用のトレントを作成しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "たくさんのI2Pトラッカーはシードする前に、あなたに新しいトレントの登録を要求します - 開始する前に行ってください \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "\"{0}\"用のトレントで作成エラー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "存在しないデータのトレントを作成できません: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "トレント作成エラー - ファイルまたはディレクトリを入力する必要があります" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "選択したものを削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "トラッカー設定を保存" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "削除しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "トラッカーを追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "有効なトラッカー名とURLを入力してください" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "規定に戻す" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "規定のトラッカーを復元しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "確認中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "割当中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "トラッカーエラー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0}ピア" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "起動中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "シード中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "{0}個のピアがシード中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "完了" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "スウォームにある{1}個中{0}個のピアからダウンロード中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "{0}個のピアからダウンロード中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "{0}個のピアに接続しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "停滞" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "スウォームにある{1}個中{0}個のピアに接続しました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "ピアなし" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "トレントの詳細" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "コメント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "ファイルを表示" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "ファイルを開く" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "残り" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "完結" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "トレントを停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "トレントを開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "アクティブ一覧からトレントを削除、 .torrent ファイルを削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr ".torrentファイルと関連付けられたデータファイルを削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "スウォーム付属のピア" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "不明" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "ピアの宛先(同一性)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "シード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "無関心中(そのピアは私たちが必要な断片を持ちません)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "被抑制(そのピアは、私たちが断片を要求することを許可していません)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "被無関心(私たちはそのピアが必要な断片を持ちません)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "抑制中(私たちは、そのピアが断片を要求することを許可していません)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "詳細をトラッカー {0} で" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "情報" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "トレントを追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "URLから" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "トレントファイルのダウンロードURL(I2Pのみ)、マグネットリンク、または info hash を入力してください" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "トレントを追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "トレントファイル" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "データのディレクトリ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "データを保存するディレクトリを入力します(規定 {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr ".torrent ファイルをコピーすることもできます: {0} 。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr ".torrent を削除すると停止します。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "トレントを作成" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "シードするデータ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "シードするファイルまたはディレクトリ(フルパスまたはディレクトリ {0} 内)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "トレントを作成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "トラッカー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "第一" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "代替" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "トラッカーの種類" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "標準" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "オープン" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "プライベート" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "なし" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "データディレクトリ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "トレントと、ダウンロードした、または共有したファイルが保存されているディレクトリ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "ファイルが全員に読み取り可能" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "他のローカルユーザーがダウンロードしたファイルにアクセスするために、ファイルの権限を許可に設定します。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "トレントを自動開始" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "I2PSnarkが起動すると、トレントの追加と再開をし、自動的にトレントを開始します" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "気の利いたトレント並び替え" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "並べ替え時に'a'や'the'などの単語を無視する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "折り畳み可能なパネル" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "あなたのブラウザはこの機能をサポートしません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "'トレントを追加'と'トレントを作成'のパネルが折り畳まれ、埋め込まないモードでは規定で折り畳まれることを許可します" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "言語" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "テーマ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "テーマを手動で変更するには、universal テーマを無効にします" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "universal テーマは有効です。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "更新時間" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "メインページのトレントの状態の更新頻度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "行わない" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "起動を遅らせる" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "I2PSnarkの起動時に自動開始されたトレントが読み込まれるまでの時間" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "ページの大きさ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "1ページ毎に表示されるトレントの最大数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "トレント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "合計アップローダーの上限" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "アップロード用ピアの最大数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "ピア" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "上り帯域幅の上限" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "アップロードに割り与えられた最大帯域幅" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "割り与えられた最大帯域幅" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "半分の帯域幅を利用可能にすることを推奨します。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "ルーターの帯域幅を表示または変更" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "下り帯域幅の上限" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "オープントラッカーも使う" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "トレントファイルに記載されているトラッカーだけでなく、オープントラッカーにトレントをアナウンスします。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "DHTを有効化" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "DHTを使用して追加のピアを見つける" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "評価を有効化" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "トレントページに評価を表示する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "コメントを有効化" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "トレントページにコメントを表示する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "コメントの作成者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "コメントと評価のための作成者名を設定する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "着信設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "送信設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CPホスト" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CPポート" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "設定を保存する" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "I2PSnark の既知の一覧から削除するトラッカーを選択します。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "名前" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "ウェブサイトURL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "アナウンスURL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "トラッカーを削除にマーク" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "マグネットURL {0} は無効です" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}ホップ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}トンネル" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "トレントを編集" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "データの場所" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "第一トラッカー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "トラッカー一覧" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "ウェブシード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "コメント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "生成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "作成者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "最後の活動" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "マグネットリンク" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "プライベートトレント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "完了" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "残り" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "スキップしました" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "ファイル個数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "断片個数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "断片の大きさ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "結果のためにページを更新" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "強制再確認" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "トレントを停止しなければなりません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "ダウンロードしたファイルの整合性を確認" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "トラッカーを追加または削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "ファイルを順にダウンロード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "断片を順にダウンロード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "設定を保存" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "リソースが見つかりません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "リソース" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Base" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "リソースが存在しません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "ディレクトリ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "ダウンロード状況" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "ダウンロード優先度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "上位ディレクトリへ上がる" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "音声再生一覧" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "トレントが見つかりませんか?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "トレントにファイルが見つかりませんか?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "プレビュー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "高い優先度でファイルをダウンロード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "高い" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "普通の優先度でファイルをダウンロード" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "普通" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "このファイルをダウンロードしない" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "スキップ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "全て高くする" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "全て普通にする" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "全てスキップ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "優先度を保存" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "評価とコメント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "評価またはコメントには作成者名が必要です" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "公開されるコメントと評価のための、あなたの作成者名" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "このトレントでコメントの表示と投稿を有効にする" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "星{0}個" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "評価なし" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "評価とコメント" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "トレントを評価" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "コメントを追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "私の評価" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "平均評価" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "コミュニティの評価は現在利用できません" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "削除にマーク" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "選択したものを削除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "トラッカー" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "トラッカーを追加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "変更を保存" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_pl.po i2p-2.5.0/apps/i2psnark/locale/messages_pl.po --- i2p-2.4.0/apps/i2psnark/locale/messages_pl.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_pl.po 2024-04-10 02:29:57.000000000 +0000 @@ -15,15 +15,15 @@ # ☆Verdulo, 2016-2017 # ☆Verdulo, 2021 # ☆Verdulo, 2017 -# Waldemar Napora, 2022 +# f91d578b5f6d79f8731c18a004205359_9ca50b9, 2022 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: Waldemar Napora, 2022\n" -"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n" +"Last-Translator: f91d578b5f6d79f8731c18a004205359_9ca50b9, 2022\n" +"Language-Team: Polish (http://app.transifex.com/otf/I2P/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -35,332 +35,338 @@ msgstr "Nie ma więcej uruchomionych torrentów." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Zamknięto tunel I2P." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Nie można połączyć się z I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Nie można się połączyć z I2P, sprawdź swoje ustawienia I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "ciemny" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "jasny" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "bakłażan" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilla" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Brak praw zapisu w katalogu danych" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Katalog nie może zostać utworzony" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Ograniczenie liczby uploaderów zmieniono do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minimalny całkowity limit uploadera: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Ograniczenie pasma wyjściowego zmieniono na: {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minimalne pasmo wyjściowe to: {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Opóźnienie uruchamiania zmieniono na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Czas odświeżania zmieniony na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Odświeżanie wyłączone" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Rozmiar strony zmieniony do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Nowe pliki będą publicznie dostępne" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Nowe pliki nie będą publicznie dostępne" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Katalog danych musi być pełną ścieżką" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Katalog danych nie istnieje" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "To nie jest katalog" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Nieczytelne" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Katalog danych zmieniony do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Zmiany dotyczące I2CP i tuneli będą wprowadzone po zatrzymaniu wszystkich torrentów." -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Opcje I2CP zmienione na {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Rozłączanie starych celów I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Ustawienia I2CP zmienione do: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Nie można połączyć się z nowymi ustawieniami, powrót do starych ustawień I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Nie można się połączyć ze starymi ustawieniami!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Ponowne podłączanie do nowych celów I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Nasłuch I2CP zrestartowany dla \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Włączono automatyczne uruchamianie" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Wyłączono automatyczne uruchamianie" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Włączono sprytne sortowanie" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Wyłączono sprytne sortowanie" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Włączono otwarte trackery - wymagane ponowne uruchomienie torrenta." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Wyłączono otwarte trackery - wymagane ponowne uruchomienie torrenta." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT włączone." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT wyłączone." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Zmiana DHT wymaga zamknięcia tunelu i jego ponownego otwarcia" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Włączono oceny." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Wyłączono oceny." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Włączono komentarze." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Wyłączono komentarze." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Nazwa komentarza ustawiona na {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "Załadowano skórkę {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Włączono rozwijalne panele." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Wyłączono rozwijalne panele." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Ustawienia niezmienione." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Lista otwartych trackerów została zmieniona – wymagane ponowne uruchomienie torrenta." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Lista prywatnych trackerów została zmieniona – dotyczy tylko nowo utworzonych torrentów." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Nie można zapisać konfiguracji do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Plik torrenta usunięto: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrent przeniesiony z {0} do {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Błąd: Nie można dodać torrenta {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent już uruchomiony: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Nie można otworzyć \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent o tym hashu jest już uruchomiony: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Torrent z tą samą lokalizacją danych jest już uruchomiony: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "BŁĄD – brak trackerów w prywatnym torrencie \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Uwaga – Nie ma trackerów I2P w \"{0}\", zostanie to zameldowane tylko do otwartych trackerów i DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Uwaga – Brak trackerów I2P w \"{0}\", a otwarte trackery są wyłączone. Torrent będzie działał wyłącznie w oparciu o DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -368,40 +374,44 @@ "torrent." msgstr "Uwaga – Brak trackerów I2P w \"{0}\". Otwarte trackery i DHT również są wyłączone. Należy włączyć otwarte trackery lub DHT przed rozpoczęciem torrenta." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent w \"{0}\" jest niepoprawny" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "BŁĄD – Brak pamięci, nie można utworzyć pliku torrent z {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Łączenie z I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent dodany i uruchomiony: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent dodany: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Pobieranie: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -409,55 +419,56 @@ "DHT." msgstr "Otwarte trackery są wyłączone i nie mamy żadnych peerów DHT. Pobranie z {0} może się nie udać, dopóki nie uruchomisz innego torrenta, włączysz otwarte trackery lub włączysz DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Dodawanie {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Pobieranie już zostało uruchomione: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Nie udało się skopiować pliku torrent do {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Zbyt wiele plików w \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Plik torrent \"{0}\" nie może kończyć się na \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Brak kawałków w \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Zbyt dużo kawałków w \"{0}\", limit wynosi {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Kawałki są zbyt duże w \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Granica to {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" nie zawiera danych!" @@ -467,98 +478,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrenty większe niż {0}B nie są jeszcze wspierane \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Błąd: nie można usunąć torrenta {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent zatrzymany: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent usunięty: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Dodawanie torrentów w {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Uruchamianie torrenta: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Limit transferu połączeń wychodzących to {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Pobieranie ukończone: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Błąd w torrencie {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Otwieranie tunelu I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Otwieranie tunelu I2P i uruchamianie wszystkich torrentów." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Zatrzymywanie wszystkich torrentów i zamykanie tunelu I2P." -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Zamknięcie tunelu I2P po powiadomieniu trackerów." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Zakończono sprawdzanie torrenta {0}, teraz {1} jest zakończony" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Zakończono sprawdzanie torrenta {0}, bez zmian" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Błąd sprawdzania torrenta {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Brak prawidłowych trackerów dla {0} – włączyć otwarte trackery lub DHT?" @@ -589,197 +606,203 @@ msgstr "Torrent pobrano z {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent już w kolejce: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent pobrany z {0} jest niepoprawny" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Ustawienia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonimowy klient protokołu BitTorrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark został zatrzymany" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Węzeł jest wyłączony" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Czy jesteś pewnien, że chcesz usunąć plik \\''{0}\\'' (pobrane dane nie będą usunięte) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Czy na pewno chcesz usunąć plik \\''{0}.torrent\\'' oraz pobrane dane?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Odśwież stronę" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Kliknij \"Dodaj torrent\" by pobrać torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "wyczyść komunikaty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Stan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Sortuj wg {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Ukryj peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Pokaż peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Rodzaj pliku" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Pozostało" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Szacowany pozostały czas" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Pobrano" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Rozmiar" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Współczynnik wysyłania (ratio)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Wysłano" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "↓" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Prędkość pobierania" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "↑" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Prędkość wysyłania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Zatrzymaj wszystkie torrenty i tunel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Zatrzymaj wszystkie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Uruchom wszystkie zatrzymane torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Uruchom wszystkie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Uruchom wszystkie torrenty i tunel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Nie załadowano torrentów." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Łącznie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -788,7 +811,7 @@ msgstr[2] "{0} torrentów" msgstr[3] "{0} torrentów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -797,7 +820,7 @@ msgstr[2] "{0} podłączonych peerów" msgstr[3] "{0} podłączonych peerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -806,219 +829,224 @@ msgstr[2] "{0} peerów DHT" msgstr[3] "{0} peerów DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Cel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Nasz adres docelowy (identyfikacja) dla tej sesji" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Odpluskwianie DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Pierwsza" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Pierwsza strona" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Poprzednia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Poprzednia strona" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Następna" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Następna strona" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Ostatnia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Ostatnia strona" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Nie można dodać torrenta {0} wewnątrz innego torrenta {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Pobieranie z lokalizacji innej niż I2P {0} nie jest wspierane" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Nieprawidłowy URL: Musi zaczynać się z \"{0}\" lub \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Odnośnik Magnet usunięty: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Nie można usunąć pliku torrent: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Pobrane usunięte: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Pliki z danymi usunięte: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Nie można usunąć pliku z danymi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Katalog nie może być usunięty: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Usunięto katalog: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Nie można dodać torrent kończącego się \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent z tą nazwą już jest uruchomiony: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Nie można dodać torrenta zawierającego katalog I2P: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Nie można dodać torrenta {0} zawierającego inny torrent {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Błąd – Nie można dodać alternatywnych trackerów bez głównego trackera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Błąd – Nie można mieszać prywatnych i publicznych trackerów w torrencie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Utworzono torrent dla \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Wiele trackerów w I2P wymaga zarejestrowania torrenta przed seedowaniem – proszę, zrób tak przed uruchomieniem \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Błąd podczas tworzenia torrenta dla: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Nie można utworzyć torrenta dla nieistniejących danych: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Błąd przy tworzeniu torrenta – musisz podać plik lub katalog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Usuń zaznaczone" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Zapisz ustawienia trackerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Usunięto" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Dodaj tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Podaj prawidłową nazwę trackera i URL" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Przywróć domyślne" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Przywrócono domyślne trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Sprawdzanie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Alokowanie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Błąd trackera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1027,17 +1055,17 @@ msgstr[2] "{0} peerów" msgstr[3] "{0} peerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Uruchamianie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Seedowanie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1046,27 +1074,27 @@ msgstr[2] "Seedowanie do {0} peerów" msgstr[3] "Seedowanie do {0} peerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Zakończono" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Pobieranie od {0} z {1} rówieśnikom roju" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1075,7 +1103,7 @@ msgstr[2] "Pobieranie od {0} peerów" msgstr[3] "Pobieranie od {0} peerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1084,462 +1112,479 @@ msgstr[2] "Połączony z {0} peerami" msgstr[3] "Połączony z {0} peerami" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Utknięto" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Połączono z {0} z {1} rówieśnikom roju" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Brak peerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Zatrzymany" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Szczegóły torrenta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Komentarze" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Zobacz pliki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Otwórz plik" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "zakończono" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "pozostało" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Zakończony" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Zatrzymaj torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Zatrzymaj" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Uruchom torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Uruchom" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Usuń torrent z aktywnej listy, usuwając plik .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Usuń" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Usuń plik .torrent i powiązane pliki danych" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Usuń" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Rówieśnik w roju" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Nieznany" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Adres docelowy (identyfikator) rówieśnika" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Seed" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (peer nie ma piece'ów, które potrzebujemy)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Choked (peer nie pozwala nam na prośbę o piece)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (nie mamy piece'ów, których peer potrzebuje)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (nie pozwalamy peerowi na prośbę o piece)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Szczegóły na trackerze {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Dodaj torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Z adresu URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Wpisz adres URL pobierania pliku (I2P tylko), magnet link lub info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Dodaj torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Plik torrent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Katalog na pobrane dane" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Podaj katalog do zapisu danych (domyślnie: {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Możesz także skopiować pliki .torrent do: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Usunięcie pliku .torrent spowoduje jego zatrzymanie." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Utwórz torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Dane do seedowania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Plik lub katalog do seedowania (pełna ścieżka lub katalog wewnątrz \"{0}\")" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Utwórz torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Główne" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternatywne" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Typ trackera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standardowy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Otwarty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Prywatny" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "brak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Katalog z danymi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Katalog przechowywania torrentów i udostępnianych/pobranych plików" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Pliki dostępne dla wszystkich" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Ustawia prawa do plików, aby inni użytkownicy lokalni mogli mieć dostęp do pobranych plików" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Uruchamiaj automatycznie torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Automatycznie startuj torrenty po dodaniu i po uruchomieniu I2PSnarka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Sprytne sortowanie torrentów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorowanie słów takich jak ‘a’ i ‘the’ przy sortowaniu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Rozwijalne panele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Twoja przeglądarka nie wspiera tej funkcji." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Pozwala na zwijanie paneli „dodaj torrent” „utwórz torrent” i domyślnie je zwija w trybie nie-wbudowanym" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Język" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Motyw" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Aby ręcznie zmienić skórkę, wyłącz ‘styl uniwersalny’" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Styl uniwersalny jest włączony" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Konfiguruj" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Czas odświeżania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Jak często odświeżać stan torrentów na stronie głównej" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nigdy" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Opóźnienie uruchomienia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Po jakim czasie automatycznie uruchamiać torrenty przy starcie I2PSnarka" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minuty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Rozmiar strony" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Maksymalna liczba wyświetlanych torrentów na stronę" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrenty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Całkowity limit uploaderów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Maksymalna liczba peerów dla wysyłania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "peery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Ograniczenie pasma wyjściowego" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Maksymalna przepustowość przeznaczona do wysyłania" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Zalecana połowa dostępnego pasma." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Zobacz lub zmień pasmo węzła" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Używaj również otwartych trackerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Ogłoś torrenty do otwartych trackerów jak również trackerów wymienionych w pliku torrenta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Włącz DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Użyj DHT, aby znaleźć dodatkowych rówieśników" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Włącz oceny" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Pokazuj oceny na stronie torrentów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Włącz komentarze" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Pokazuj komentarze na stronie torrentów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Autor komentarza" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Ustaw ksywkę dla wystawianych komentarzy i ocen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Tunele wejściowe" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Tunele wyjściowe" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Adres I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Port I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Parametry I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Zapisz ustawienia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Wybierz trackery do usunięcia z listy znanych trackerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nazwa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL strony www" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL rozgłaszania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Zaznacz tracker do usunięcia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Dodaj" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Nieprawidłowy link magnet {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1548,7 +1593,7 @@ msgstr[2] "{0} skoków" msgstr[3] "{0} skoków" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1557,234 +1602,230 @@ msgstr[2] "{0} tuneli" msgstr[3] "{0} tuneli" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Edytuj Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Plik torrent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Położenie danych" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Główny Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista Trackerów" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Komentarz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Utworzony" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Utworzony przez" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Dodany" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Ostatnia aktywność" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Link magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Prywatny torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Zakończono" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Pozostało" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Pominięty" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Pliki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Części" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Rozmiar części" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Odśwież stronę, aby zobaczyć" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Wymuś ponowne sprawdzenie" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent musi zostać zatrzymany" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Sprawdź integralność dla pobranych plików" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Dodaj lub usuń trackery" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Pobierz pliki w kolejności" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Pobierz części w kolejności" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Zapisz ustawienia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Nie znaleziono zasobu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Zasób" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Baza" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Zasób nie istnieje" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Katalog" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Stan pobierania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Priorytet pobierania" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Do katalogu nadrzędnego" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Playlista Audio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrent nie znaleziony?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Plik nie znaleziony w torrencie?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Podgląd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Pobierz plik z wysokich priorytetem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Wysoki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Pobierz plik z normalnym priorytetem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normalny" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Nie pobieraj pliku" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Pomiń" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Ustaw wszystkie na wysoki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Ustaw wszystkie na normalny" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Pomiń wszystkie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Zapisz priorytety" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Oceny i komentarze" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Wymagana ksywka, aby oceniać lub komentować" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Twoja ksywka użyta do opublikowanych komentarzy i ocen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Włącz przeglądanie i publikowanie komentarzy dla tego torrenta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1793,52 +1834,52 @@ msgstr[2] "{0} gwiazdek" msgstr[3] "{0} gwiazdek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Brak ocen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Oceń i skomentuj" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Oceń torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Dodaj komentarz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Moja ocena" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Średnia ocena" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Brak dostępnych ocen użytkowników" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Zaznacz do usunięcia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Usuń zaznaczone" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Dodaj Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Zapisz zmiany" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_pt.po i2p-2.5.0/apps/i2psnark/locale/messages_pt.po --- i2p-2.4.0/apps/i2psnark/locale/messages_pt.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_pt.po 2024-04-10 02:29:57.000000000 +0000 @@ -19,347 +19,353 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: Manuela Silva , 2017-2018\n" -"Language-Team: Portuguese (http://www.transifex.com/otf/I2P/language/pt/)\n" +"Language-Team: Portuguese (http://app.transifex.com/otf/I2P/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: ../java/src/org/klomp/snark/IdleChecker.java:76 msgid "No more torrents running." msgstr "Sem mais torrents em execução." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Túnel I2P fechado" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erro ao se conectar com I2P - Verifique a sua configuração I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "escuro" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "iluminado" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilla" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Sem permissões de gravação para a diretoria de dados" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Não é possível criar a diretoria de dados" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limite total de uploaders alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Limite mínimo de uploaders alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Largura de banda para a envio alterada para {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Largura de banda mínima para envio é {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Demora na inicialização alterada para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Tempo de actualização alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Actualização desactivada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Tamanho de pagina alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Novos ficheiros serão lidos pelo publico" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Novos ficheiros não serão lidos pelo publico" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Diretório de dados deve ter um caminho absoluto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Diretório de dados não existe" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Não é um diretório" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Ilegível" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Diretório de dados alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Mudanças do I2CP e do túnel farão efeito após interromper todos os torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "opções de I2cp alteradas para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Desconectando destinação anterior do I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Preferências do I2CP alteradas para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Conectar-se não foi posível com as novas preferências I2CP, utilizarei as anteriores." -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Impossível se conectar usando as preferências anteriores!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Conectado com a nova Destinação I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Conexão I2CP re-estabelecida para \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Ativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Desativado o iniciar automáticamente" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "Habilitar DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "Desabilitar DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Mudança no DHT requer fechamento e reabertura do túnel" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Comentário Ativado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Comentário Desativado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Configuração não mudada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrentes." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Lista de rastreadores privados alterada - somente afetará os novos torrentes criados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Não se pode guardar a configuração em {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Apagado o arquivo torrente: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erro: Não se pode adicionar o torrente {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "torrente já em marcha: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Não pode se abrir \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "torrente com este info hash já em marcha: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ERRO - Não há tracker I2P no torrent privado \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", o anúncio será feito apenas por rastreadores I2P abertos e DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e rastreadores I2P abertos estão desabilitados. O anúncio será feito apenas por DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -367,40 +373,44 @@ "torrent." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e DHT e rastreadores abertos estão desabilitados. Rastreadores abertos ou DHT devem ser habilitados antes de começar o torrente." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "O arquivo .torrent em \"{0}\" não é válido." -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Conectando com I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Buscando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -408,55 +418,56 @@ "DHT." msgstr "Rastreadores abertos estão desabilitados e não há participantes DHT. Descarregamento de {0} pode não prosseguir enquanto outra torrente não for iniciada, rastreadores abertos forem habilitados ou DHT habilitado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Adicionando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "arquivo já descarregando: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Não se pode copiar o torrente para {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "O limite são \"{0}\"Bytes" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "" @@ -466,98 +477,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erro: Não se pode quitar o torrente \"{0}\"." -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "torrente quitado: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Os torrentes serão adicionados em {0} ..." #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Iniciando o torrente {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Limite de transmissão de dados é {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Finalizada a descarga de \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Erro no torrente {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Abrindo o túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abrendo o túnel I2P e iniciando os torrentes ..." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Detindo todos os torrentes e fechando o túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Fechando túnel I2P após notificar os rastreadores." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Nenhum rastreador válido para {0} - habilitar rastreadores abertos ou DHT?" @@ -588,1236 +605,1270 @@ msgstr "torrente obtido de {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "torrente já na cola: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "torrente em {0} não foi válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Preferências" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Roteador não está funcionando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Tem a certeza que deseja apagar o ficheiro \\\"{0}\\\" (dados transferidos não serão apagados) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os dados descarregados deste torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Atualizar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Clique no botão \"Adicionar torrent\" para obter o torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "limpar mensagens" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Estado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "ocultar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "mostrar parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Tempo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Tempo que falta para completar" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Baixado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Descarregado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Tamanho" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Subido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Subido" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Taxa de recepção" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Taxa de descarga" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Taxa de transmissão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Taxa de subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Deter todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Deter tudos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Iniciar todos os torrents interrompidos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Arrancar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Iniciar todos os torrentes e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Não carregado nenhum torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrente" msgstr[1] "{0} torrentes" +msgstr[2] "{0} torrentes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 parceiro conectado" msgstr[1] "{0} parceiros conectados" +msgstr[2] "{0} parceiros conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 parceiros DHT" msgstr[1] "{0} parceiros DHT" +msgstr[2] "{0} parceiros DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" -msgstr "" +msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Prim." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Primeira página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Ant." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Página anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Próx." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Próxima página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Últ." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Última página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Apagada o magnet: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Download excluído: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Apagado o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Não se pode apagar o arquivo de dados: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Pasta não pôde ser excluída: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Pasta excluída: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Erro - Impossível incluir rastreadores alternativos sem o rastreador primário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Erro - Impossível misturar rastreadores públicos e privados num torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "torrente criado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erro ao criar o torrente \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Não se pode criar um torrente para dados que não existam: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Excluir selecionado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Salvar configurações do rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Excluído" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Adicionar tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Insira um nome válido para o tracker e URLs" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Voltar aos padrões" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Voltar aos rastreadores padrão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Verificando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Reservando espaço" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Erro do rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 parceiro" msgstr[1] "{0} parceiros" +msgstr[2] "{0} parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Iniciando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "semeando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "bem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "estancado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "sem parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "detenido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Detalhes do torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Comentários" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "mostrar arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "abrir arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "restantes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Completado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Deter o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Deter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Iniciar o torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Iniciar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Quitar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Apagar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "desconhecido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Semeador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "não interessante (O parceiro não tem peças que precisamos.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "desinteressado (Não temos as peças que o parceiro quer.)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "sufocando (De momento não estamos permitindo que os parceiros peçam mais peças)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detalhes no rastreador {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Adicionar um torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "URL fonte:" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Adicionar torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Arquivo torrente" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Também pode copiar arquivos torrentes a {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "A remoção de um arquivo .torrent fará com que ele pare." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Criar um torrente" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Dados para semear" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Criar torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Rastreadores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Padrão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "abrir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "nenhum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Pasta de dados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Ficheiro legível por todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Idioma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Tempo de actualização" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nunca" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Demora do arranque" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minutos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Tamanho da página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Limite global de subidores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "parceiros" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Limite de largura de banda para a subida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Se recomenda a metade da largura de banda disponível." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "mostrar e mudar as preferências da largura de banda do roteador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "usar também rastreadores abertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Habilitar DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Preferências de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Preferências de saida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Anfitrião de I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Porto I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Opções I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Guardar configuração" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nome" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL do Website" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL para anúncio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Adicionar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL magnet {0} não válida" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 salto" msgstr[1] "{0} saltos" +msgstr[2] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 túnel" msgstr[1] "{0} túneles" +msgstr[2] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Arquivo torrente" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Rastreador Primário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista de Rastreadores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Commentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Criado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Criado por" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Adicionado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Última atividade" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "URL magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrente privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Finalização" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Restantes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Ignorado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Tamanho das peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Recurso" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Pasta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Subir uma herarquia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Não achei o arquivo torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Arquivo não achado no torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Prévia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "alta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Ignorar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "" msgstr[1] "" +msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Adicionar Comentário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marcar para excluir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Apagar Selecionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Salvar Alterações" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_pt_BR.po i2p-2.5.0/apps/i2psnark/locale/messages_pt_BR.po --- i2p-2.4.0/apps/i2psnark/locale/messages_pt_BR.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_pt_BR.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,6 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: +# Cauan Henrique Zorzenon , 2024 # testsubject67 , 2014 # Eduardo Rodrigues, 2020 # L., 2015-2016 @@ -11,9 +12,9 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: Eduardo Rodrigues, 2020\n" +"Last-Translator: Cauan Henrique Zorzenon , 2024\n" "Language-Team: Portuguese (Brazil) (http://app.transifex.com/otf/I2P/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,334 +27,338 @@ msgstr "Sem mais torrents em execução." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Túnel I2P fechado" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Erro ao conectar a I2P - verifique as configurações de I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "escuro" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "luminoso" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilla" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Sem permissões de gravação para a diretoria de dados" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Não é possível criar a diretoria de dados" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limite de uploaders totais alterada para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Mínimo de uploaders totais alterada para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Limite de Up BW alterada para {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "O limite de mínimo de banda larga é {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Atraso de inicialização alterada para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Tempo de actualização alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Actualização desactivada" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Tamanho de pagina alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Novos ficheiros serão lidos pelo publico" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Novos ficheiros não serão lidos pelo publico" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Diretório de dados deve ter um caminho absoluto" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Diretório de dados não existe" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Não é um diretório" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Não legível" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Diretório de dados alterado para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Alterações em túneis e I2C entrarão em vigor depois de parar todos torrents" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "opções de I2cp alteradas para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Destino de I2CP antigo desconectando" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Configurações de I2CP alteradas para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Não é possível conectar com as novas configurações. Revertendo para as prévias configurações de I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Não é possível conectar com as novas configurações!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Reconectado à nova destinação de I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "Auditor I2CP recomeçadas a \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Autocomeço permitido" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Autocomeço não permitido" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Trackers abertos permitidos - reinício de torrents é preciso para entrar em vigor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Trackers abertos não permitidos - reinício de torrents é preciso para entrar em vigor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "Habilitar DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "Desabilitar DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Mudança no DHT requer fechamento e reabertura do túnel" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Comentário Ativado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Comentário Desativado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Configuração não modificada." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Lista de trackers abertos alterada - reinício de torrents é preciso para entrar em vigor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Lista de rastreadores privados alterada - somente afetará os novos torrentes criados." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Não é possivel salvar configurações para {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Arquivo de torrent deletado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Erro: não é possível adicionar o torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "torrente já em marcha: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Não é possível abrir \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "O torrent com este info has já está sendo executado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ERRO - Não há tracker I2P no torrent privado \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", o anúncio será feito apenas por rastreadores I2P abertos e DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e rastreadores I2P abertos estão desabilitados. O anúncio será feito apenas por DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -361,44 +366,44 @@ "torrent." msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e DHT e rastreadores abertos estão desabilitados. Rastreadores abertos ou DHT devem ser habilitados antes de começar o torrente." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "O torrent em \"{0}\" é inválido" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Conectando a I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Buscando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -406,56 +411,56 @@ "DHT." msgstr "Rastreadores abertos estão desabilitados e não há participantes DHT. Descarregamento de {0} pode não prosseguir enquanto outra torrente não for iniciada, rastreadores abertos forem habilitados ou DHT habilitado." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Adicionando {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "arquivo já descarregando: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Falha ao copiar arquivo de torrent de {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "O limite é {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "" @@ -465,94 +470,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Erro: não foi possível remover o torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent removido: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Adicionando torrents em {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Iniciando torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Limite de transmissão de dados é {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Download terminado: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Erro no torrente {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnar" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Abrindo o túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Abrindo o túnel I2P e começando todos os torrents." -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Parando todos os torrents e fechando o túnel I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Fechando túnel I2P após notificar os rastreadores." -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "" @@ -588,203 +598,203 @@ msgstr "torrente obtido de {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "torrente já na cola: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "torrente em {0} não foi válido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Configuração" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "O roteador está fora do ar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Tem a certeza que deseja apagar o ficheiro \\\"{0}\\\" (dados transferidos não serão apagados) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Tem certeza que quer remover o torrent \\''{0}\\'' e todas as informaçoes baixadas?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Recarregar página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Clique no botão \"Adicionar torrent\" para obter o torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "limpar mensagens" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Ocultar Pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Mostrar Pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Tempo restante estimado" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Baixado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Tamanho" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Uploaded" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Taxa de recepção" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Taxa de down" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Taxa de transmissão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Taxad de up" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Parar todos os torrents e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Parar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Iniciar todos os torrents interrompidos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Começar todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Começar todos os torrents e o túnel I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Nenhum torrent carregado." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Totais" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -792,7 +802,7 @@ msgstr[1] "{0} torrents" msgstr[2] "{0} torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -800,7 +810,7 @@ msgstr[1] "{0} pares conectados" msgstr[2] "{0} pares conectados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -808,224 +818,224 @@ msgstr[1] "{0} parceiros DHT" msgstr[2] "{0} parceiros DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" -msgstr "" +msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Primeiro" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Primeira página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Página anterior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Próximo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Próxima página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Último" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Última página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet deletado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Download excluído: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Arquivo de data deletado: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Não foi possível apagar o arquivo de data: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Pasta não pôde ser excluída: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Pasta excluída: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Erro - Impossível incluir rastreadores alternativos sem o rastreador primário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Erro - Impossível misturar rastreadores públicos e privados num torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent criado para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Muitos I2P trackers requerem o registro de torrents antes de seeding - por favor, faça isso antes de começar \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Erro ao criar torrent para \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Não foi possível criar um torrent para a informação inexistente: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Erro ao criar torrent - é preciso entrar com um arquivo ou diretório" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Apagar selecionados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Salvar configurações do rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Removido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Adicionar tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Insira um nome válido para o tracker e URLs" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Voltar ao padrão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Voltar aos rastreadores padrão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Verificando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Reservando espaço" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Erro de tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1033,17 +1043,17 @@ msgstr[1] "{0} pares" msgstr[2] "{0} pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Conectando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Propagando" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1051,27 +1061,27 @@ msgstr[1] "" msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1079,7 +1089,7 @@ msgstr[1] "" msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1087,471 +1097,479 @@ msgstr[1] "" msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Estagnado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Sem pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Parado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Detalhes do torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Comentários" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Ver arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Abrir arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "completo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "restantes" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Completado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Parar o torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Parar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Começar o torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Começar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Remover o torrent da lista de ativos, deletando o arquivo .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Remover" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Deletar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Desconhecido" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Propagar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Desinteressante (O par não tem partes que precisemos)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Engasgado (O par não está nos permitindo solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Desinteressado (Não temos quaisquer partes que o par precise)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Engasgando (O par está impossibilitado de solicitar partes)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detalhes em tracker {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Adicionar Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Do URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Adicionar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Arquivo torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Você pode também copiar arquivos .torrent para: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "A remoção de um .torrent parará a mesma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Criar Torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Dados a serem propagados" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Criar torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Rastreadores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primária" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Padrão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Abrir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "nenhum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Diretório de arquivo" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Ficheiro legível por todos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Idioma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Tempo de actualização" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Nunca" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Atraso de inicialização" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minutos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Tamanho da página" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrents" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Limite total do uploader" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "pares" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Up limite de banda larga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Se recomenda a metade da largura de banda disponível." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "mostrar e mudar as preferências da largura de banda do roteador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "usar também rastreadores abertos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Habilitar DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Preferências de entrada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Preferências de saida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Host do I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Porta do I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "opções I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Guardar configuração" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nome" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL do Website" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL para anúncio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Adicionar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL magnet {0} não válida" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1559,7 +1577,7 @@ msgstr[1] "{0} saltos" msgstr[2] "{0} saltos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1567,230 +1585,230 @@ msgstr[1] "{0} túneles" msgstr[2] "{0} túneles" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Rastreador Primário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista de Rastreadores" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Comentário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Criada" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Criado por" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Adicionado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Última atividade" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "URL magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrente privado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Finalização" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Restante" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Ignorado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Arquivos" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Tamanho das peças" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Recurso" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Diretório" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Subir uma herarquia" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Não achei o arquivo torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Arquivo não achado no torrente?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Mostrar previsão" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Alto" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Pular" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Guardar prioridades" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1798,52 +1816,52 @@ msgstr[1] "" msgstr[2] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Adicionar Comentário" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marcar para deleção" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Apagar selecionado" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Rastreador" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Salvar Alterações" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_ro.po i2p-2.5.0/apps/i2psnark/locale/messages_ro.po --- i2p-2.4.0/apps/i2psnark/locale/messages_ro.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_ro.po 2024-04-10 02:29:57.000000000 +0000 @@ -14,10 +14,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-02-09 19:13+0000\n" -"PO-Revision-Date: 2022-02-09 19:23+0000\n" -"Last-Translator: Predator \n" -"Language-Team: Romanian (http://www.transifex.com/otf/I2P/language/ro/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-02-13 12:00+0000\n" +"Last-Translator: polearnik , 2019\n" +"Language-Team: Romanian (http://app.transifex.com/otf/I2P/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -29,332 +29,338 @@ msgstr "Nu sunt torrente care rulează." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3149 -#: ../java/src/org/klomp/snark/SnarkManager.java:3160 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Tunel I2P închis." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2788 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:355 -#: ../java/src/org/klomp/snark/SnarkManager.java:1725 -#: ../java/src/org/klomp/snark/SnarkManager.java:2572 -#: ../java/src/org/klomp/snark/SnarkManager.java:2627 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1727 -#: ../java/src/org/klomp/snark/SnarkManager.java:2574 -#: ../java/src/org/klomp/snark/SnarkManager.java:2629 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Eroare de conectare la I2P - verificați setările I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "întunecat" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "luminos" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:146 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilie" -#: ../java/src/org/klomp/snark/SnarkManager.java:997 -#: ../java/src/org/klomp/snark/SnarkManager.java:1151 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:741 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Fără permisiuni de scriere pentru directorul de date" -#: ../java/src/org/klomp/snark/SnarkManager.java:1000 -#: ../java/src/org/klomp/snark/SnarkManager.java:1144 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:735 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Directorul de date nu poate fi creat" -#: ../java/src/org/klomp/snark/SnarkManager.java:1062 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Limita totală de incărcare schimbată la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1064 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Limita totală minimă de incărcare este {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1076 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Limita de incărcare BW schimbată la {0} Kbps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1078 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Limita de lățime de bandă minima la incărcarea este {0} Kbps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1090 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Pornire întarziată schimbată la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1101 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Timpul de reîmprospătare a fost schimbat la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Reîmprospătare dezactivată" -#: ../java/src/org/klomp/snark/SnarkManager.java:1119 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Dimensiunea paginii schimbată la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1129 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Fișierele noi vor putea fi citite public" -#: ../java/src/org/klomp/snark/SnarkManager.java:1131 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Fișierele noi nu vor putea fi citite public" -#: ../java/src/org/klomp/snark/SnarkManager.java:1139 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1050 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Directorul de date trebuie să fie o cale absolută" -#: ../java/src/org/klomp/snark/SnarkManager.java:1143 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Directorul de date nu există" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:737 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Nu este un director" -#: ../java/src/org/klomp/snark/SnarkManager.java:1148 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:739 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Necitibil" -#: ../java/src/org/klomp/snark/SnarkManager.java:1155 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Director de date schimbat la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1236 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Modificările asupra I2CP și tunel vor intra în vigoare după oprirea tuturor torrentelelor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1240 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Opțiunile I2CP schimbate la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1246 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Deconectez destinația veche I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1248 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Setările I2CP schimbate la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1253 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Nu se poate efectua conectarea cu noile setări, revin la setările vechi I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1257 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Nu se poate se poate efectua reconectarea cu setările vechi!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1259 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Reconectat la noua destinație I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1266 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP listener repornit pentru \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1279 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Autopornire activată" -#: ../java/src/org/klomp/snark/SnarkManager.java:1281 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Autopornire dezactivată" -#: ../java/src/org/klomp/snark/SnarkManager.java:1288 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Sortarea inteligentă activată" -#: ../java/src/org/klomp/snark/SnarkManager.java:1290 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Sortarea inteligentă dezactivată" -#: ../java/src/org/klomp/snark/SnarkManager.java:1297 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Trackere deschise activate - repornirea torrentui este necesara pentru a avea efect." -#: ../java/src/org/klomp/snark/SnarkManager.java:1299 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Trackere deschise dezactivate - repornirea torrentui este necesara pentru a avea efect." -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT activat." -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT dezactivat." -#: ../java/src/org/klomp/snark/SnarkManager.java:1310 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Schimbarea DHT-ului necesită oprirea tunelului și repornirea lui" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Evaluări activate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1319 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Evaluări dezactivate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Comentarii activate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1328 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Comentarii dezactivate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1341 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Numele comentariilor este setat pe {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1348 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} tema încărcată." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Panouri pliabile sunt activate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1357 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Panourile pliabile sunt dezactivate." -#: ../java/src/org/klomp/snark/SnarkManager.java:1367 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Configuraţie neschimbată." -#: ../java/src/org/klomp/snark/SnarkManager.java:1399 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Lista trackerelor deschise s-a schimbat - repornirea torrentui este necesara pentru a avea efect." -#: ../java/src/org/klomp/snark/SnarkManager.java:1409 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Lista trackerelor private s-a schimbat - afectează doar nou-createle torrente." -#: ../java/src/org/klomp/snark/SnarkManager.java:1455 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Imposibil de a salva configurarea {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1562 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1204 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Fișier torrent șters: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1565 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Fișier torrent mutat de la {0} la {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2841 -#: ../java/src/org/klomp/snark/SnarkManager.java:2847 -#: ../java/src/org/klomp/snark/SnarkManager.java:2851 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Eroare: Nu sa putut adăuga torentul {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1614 -#: ../java/src/org/klomp/snark/SnarkManager.java:1702 -#: ../java/src/org/klomp/snark/SnarkManager.java:3017 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrentul deja rulează: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1624 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Nu se poate deschide \"{0}\"." #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1643 -#: ../java/src/org/klomp/snark/SnarkManager.java:1801 -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrentul cu informațiile acestui hash rulează deja: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1649 -#: ../java/src/org/klomp/snark/SnarkManager.java:1896 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Torrent cu aceeași locație de date rulează deja: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1655 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "EROARE - Nu sunt trackere I2P in torrent privat \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1657 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", se va anunța numai la trackerele deschise I2P și DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1660 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", și trackerele deschise sunt dezactivate, se va anunța numai prin DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1662 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -362,40 +368,44 @@ "torrent." msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", și DHT și trackerele deschise sunt dezactivate, ar trebui să permiteți trackere deschise sau DHT înainte de a porni torrentul." -#: ../java/src/org/klomp/snark/SnarkManager.java:1688 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent în \"{0}\" este invalid" -#: ../java/src/org/klomp/snark/SnarkManager.java:1694 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "EROARE - Memorie ram plină, nu se pot crea torrente de la {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1721 -#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Se conectează la I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1733 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent adăugat și pornit: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1735 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent adăugat: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1813 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Preia {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1819 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -403,55 +413,56 @@ "DHT." msgstr "Trackerele deschise sunt dezactivate și nu avem participanți DHT. Descărcarea din{0} nu poate reuși până când nu veți porni un alt torrent, permite trackere deschise, sau permite DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1823 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Adaugă {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1856 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Descărcarea rulează deja: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1906 -#: ../java/src/org/klomp/snark/SnarkManager.java:1916 -#: ../java/src/org/klomp/snark/SnarkManager.java:1942 -#: ../java/src/org/klomp/snark/SnarkManager.java:2717 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr " Copierea fișierului torrentului în {0} a eșuat" -#: ../java/src/org/klomp/snark/SnarkManager.java:2421 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 +#: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Prea multe fișiere în \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2423 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Fișierul torrentului \"{0}\" nu se poate termina în \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2425 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Nu sunt bucăți în \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2427 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Prea multe bucăți în \"{0}\", limita este {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2429 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Bucățile sunt prea mari în \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2430 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Limita este de {0} B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2432 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrentul \"{0}\" nu conține date!" @@ -461,98 +472,104 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2441 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrentele mai mari de {0}B nu sunt suportate \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2458 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Eroare: Nu am putut șterge torentul {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2481 -#: ../java/src/org/klomp/snark/SnarkManager.java:2500 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent oprit: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2520 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent sters: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2536 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Adăugă torrente în {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2580 -#: ../java/src/org/klomp/snark/SnarkManager.java:2714 -#: ../java/src/org/klomp/snark/SnarkManager.java:3023 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Pornește torrentul {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2592 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Limita de lățime de bandă la incărcare este {0} Kbps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2648 -#: ../java/src/org/klomp/snark/SnarkManager.java:2654 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Descărcare terminată: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2008 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097 -msgid "I2PSnark" -msgstr "I2PSnark" - -#: ../java/src/org/klomp/snark/SnarkManager.java:2729 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Eroare de torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:3022 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 +msgid "I2PSnark" +msgstr "I2PSnark" + +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Deschide tunelul I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3042 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Deschiderea tunelului I2P și pornirea tuturor torrentelor." -#: ../java/src/org/klomp/snark/SnarkManager.java:3107 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Oprirea tuturor torrentelor și inchiderea tunelului I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3134 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Închiderea tunelului I2P după notificarea trackerelor." -#: ../java/src/org/klomp/snark/SnarkManager.java:3204 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "S-a terminat reverificarea torrentului {0}, acum {1} este finalizat" -#: ../java/src/org/klomp/snark/SnarkManager.java:3206 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "S-a terminat reverificarea torrentului {0}, este nemodificat" -#: ../java/src/org/klomp/snark/SnarkManager.java:3210 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Eroare la verificarea torrentului {0}" -#: ../java/src/org/klomp/snark/TrackerClient.java:245 +#: ../java/src/org/klomp/snark/TrackerClient.java:246 #, java-format msgid "No valid trackers for {0} - enable opentrackers or DHT?" msgstr "Nu sunt trackere valabile pentru {0} - permite opentrackers sau DHT?" @@ -583,197 +600,203 @@ msgstr "Torrent preluat de la {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent deja în coada de așteptare: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1146 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrentul la {0} nu a fost valid" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2814 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Configurație" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Client Bittorrent Anonim" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark s-a oprit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Router-ul este deactivat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:338 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Sigur doriți să ștergeți dosarul \\'' {0} \\'' (datele descărcate nu vor fi șterse)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:339 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Sigur doriți să ștergeți torrentul \\'' {0} \\'' și toate datele descărcate?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Reîmprospătează pagina" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Faceți click pe \"Adaugă torrent\" pentru a descărca torrentul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "șterge mesajele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Stare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:507 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Sortează după {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Ascunde participanți" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Arată participanți" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:557 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3085 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3465 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Tip fișier" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Estimare timp rămas" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Descărcat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:603 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3339 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Dimensiune" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Rată de încărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Încărcat" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "RX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Rată de descărcare " #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "TX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Rată de incărcare " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Oprește toate torrentele și tunelul I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Oprește toate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Pornește toate torrentele oprite" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:710 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Pornește toate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Pornește toate torrentele și tunelul I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:743 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 +msgid "No torrents found." +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Nici un torrent încărcat." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Total" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -781,7 +804,7 @@ msgstr[1] "{0} torrente" msgstr[2] "{0} torrenturi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -789,7 +812,7 @@ msgstr[1] "{0} utilizatori conectati" msgstr[2] "{0} participanți conectați" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:765 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -797,219 +820,224 @@ msgstr[1] "{0} parteneri DHT" msgstr[2] "{0} parteneri DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Dest" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Destinația (identitatea) noastră pentru această sesiune" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht Debug" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Primul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:916 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Prima pagină" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Prev" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:926 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Pagină anterioară" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Următorul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Pagina următoare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Ultimul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Ultima pagină" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Nu se poate adăuga torrentul {0} în interiorul altui torrent: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet șters: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Fișierul Torrent nu a putut fi șters: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Descărcare ștearsă: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1254 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Fișier data șters: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Fișierul de date nu a putut fi șters: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Dosarul nu a putut fi șters {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Director șters: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1355 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Nu se poate adăuga un torrent terminat în \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrentul cu acest nume deja rulează: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Nu se poate adăuga un torrent ce include un director I2P: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1381 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Nu se poate adăuga torrent {0} ce include un alt torrent: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Eroare - Nu pot conține trackere alternative fără un tracker primar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Eroare - Nu se poate amesteca trackere publice și private într-un torent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1442 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent creat pentru \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Multe trackere I2P cer să vă înregistrați torrentele noi înainte de seeding - vă rugăm să faceți acest lucru înainte de a începe \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1446 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Eroare la crearea unui torrent pentru \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Nu se poate crea un torrent pentru datele inexistente: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Eroare la crearea torrentului - trebuie să introduceți un fișier sau un director" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2798 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Șterge selectat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Salvați configurația trackerului" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Șters" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2797 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4279 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Adaugă tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Introduceți numele trackerului valid și URL-ul" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Restabiliți la setările de bază" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1571 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Restabiliți la setările de bază trackerele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3404 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Se verifică" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1688 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Se alocă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Eroare tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1706 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1761 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1017,17 +1045,17 @@ msgstr[1] "{0} parteneri" msgstr[2] "{0} parteneri" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3409 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Pornește" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Încărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1035,27 +1063,27 @@ msgstr[1] "Semănatul la {0} colegi" msgstr[2] "Semănatul la {0} colegi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1748 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3335 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3678 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Complet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Descărcarea de la {0} din {1} colegi în roi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1759 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1063,7 +1091,7 @@ msgstr[1] "Descărcarea de la {0} colegi" msgstr[2] "Descărcarea de la {0} colegi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1071,462 +1099,479 @@ msgstr[1] "Conectat la {0} colegi" msgstr[2] "Conectat la {0} colegi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1764 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Întrerupt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Conectat la {0} din {1} colegi în roi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1774 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Nu sunt participanți" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Oprit" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1812 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Detalii torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4036 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Comentarii " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1863 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Vezi fișierele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Deschide fișier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "complet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1883 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3691 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "rămas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Complet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Oprește torrentul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1931 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3416 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Stop" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Pornește torrentul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3418 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Start" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Scoateți torrentul din lista torrentelor active, ștergînd fișierul .torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Șterge" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Ștergeți fișierul .torrent și fișierele de date asociate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Șterge" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Peer lipit de roi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Necunoscut" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destinația (identitatea) semenului" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Donează" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Neinteresant (partenerul nu are bucățile de care avem nevoie)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2074 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Asfixiat (partenerul nu ne permite să solicităm bucăți)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2094 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Neinteresat (Nu avem piese de care are nevoie partenerul)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Asfixiat (Nu permitem partenerului să solicite bucăți)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detalii la tracker {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2229 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Adaugă torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2312 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Din URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Adaugă torent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Fișier torent" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Dir date" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Introdu directorul în care să se salveze datele (default {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "De asemenea, puteți copia fișierul .torrent la: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Stergînd .torrent va face ca acesta să se oprească." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Creează un torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2349 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Date pentru seedare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fișier sau director de seedare (calea completă sau în director {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Creează un torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2359 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Trackere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Tip Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2389 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standard" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3734 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Deschis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2397 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "nici unul" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Dosar cu date" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2443 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Director în care sunt stocate torentele și fișierele descărcate / partajate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Fișiere lizibile de către toți" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2452 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Setați permisiunile de fișiere pentru a permite altor utilizatori locali să acceseze fișierele descărcate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Pornește automat torrentele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2460 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Porniți automat torentele atunci când sunt adăugate și reporniți torrenturile atunci când începe I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Sortare inteligentă torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorați cuvinte precum „a” și „the” atunci când sortați" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2472 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Panouri pliabile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Browserul dvs. nu acceptă această caracteristică." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Permiteți panourilor „Adaugă torrent” și „Creați torrent” și se prăbușesc implicit în modul neincorporat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2492 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Limbă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Teme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Pentru a schimba manual temele, dezactivați tematica universală" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2511 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Tematica universală este activată." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2513 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4025 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Configurează" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Timp de reîmprospătare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Cât de des este actualizat starea de torrent pe pagina principală" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2552 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Niciodată" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Întârziere de pornire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2562 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Cu cât înainte să se încarce torentele pornite automat când începe I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2564 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minute" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Mărimea paginii" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2572 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Numărul maxim de torenți de afișat pe pagină" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2574 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "Torrente" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Limită totală de încărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Numărul maxim de colegi pentru încărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "Parteneri" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Limită de incărcare la lățimea de bandă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Lățime maximă de bandă alocată pentru încărcare" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Jumătate de lățime de bandă disponibilă este recomandată." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2617 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Vizualizează sau modifică lățimea de bandă a routerului" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2623 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Utilizați trackere deschise, de asemenea," -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2627 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Anunțați torentele pentru trackerele deschise, precum și următorii enumerați în fișierul torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2631 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Activează DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Folosiți DHT pentru a găsi colegi suplimentari" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2639 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Activați evaluările" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2643 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Afișați evaluări pe paginile de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2647 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Activați comentariile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Afișați comentarii la paginile de torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Autor de comentarii" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Setați numele autorului pentru comentarii și evaluări" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Setări de intrare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Setări de ieșire" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2688 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Gazdă I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2693 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Portul I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Opțiuni I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Salvare configurări" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2731 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Selectați trackerele pentru scoaterea din lista cunoscută a I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2734 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3576 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Nume" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL website" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL de anunțare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Marcați trackerul pentru ștergere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Adaugă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2835 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "URL-ul magnet invalid {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1534,7 +1579,7 @@ msgstr[1] "{0} hop-uri" msgstr[2] "{0} hop-uri" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1542,234 +1587,230 @@ msgstr[1] "{0} tunele" msgstr[2] "{0} tunele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3121 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3131 -msgid "Torrent file" -msgstr "Fișier torent" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Locaţie date" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3149 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Informație index" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3170 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Tracker primar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3189 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Lista Trackere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3215 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3237 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Comentariu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3247 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Creat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3258 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4307 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Creat de" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3268 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Adăugat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3288 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Ultima activitate " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Legătură Magnet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3317 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Torrent privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Completare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Rămas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Omis" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3383 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Fișiere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Bucăți:" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3394 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Dimensiune bucăți" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Reîmprospătare pagină pentru rezultate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3419 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Forțează reverificarea" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3431 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3425 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Verificați integritatea fișierelor descărcate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Descărcați fișierele în ordine" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Descărcați piese în ordine" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3452 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4047 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Salvați preferința" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Resursă Nu a fost găsită" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3463 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Resursă" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Baza" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3480 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Resursa nu există" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Dosar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3602 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Stare descărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Prioritate pentru descărcare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Spre dosarul de nivel superior" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3637 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Playlist audio" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrentul nu a fost găsit?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3675 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Fișierul nu a fost găsit în torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Previzualizare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Descărcați fișierul cu prioritate mare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Ridicat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Descărcați fișierul cu prioritate normală" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3783 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Nu descărcați acest fișier" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3788 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Omitere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3800 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Configurează toate ca înalte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Configurează toate ca normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3805 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Omite tot" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3806 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Salvați priorități" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Evaluări și comentarii" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Numele autorului trebuie să noteze sau să comenteze" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4029 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Numele autorului dvs. pentru comentarii și evaluări publicate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Activați vizualizarea și postarea de comentarii pentru acest torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4066 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1777,52 +1818,52 @@ msgstr[1] "{0} stele" msgstr[2] "{0} stele" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4068 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Fără evaluare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4083 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Evaluează și comentează" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4085 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Evaluează Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4087 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Adauga comentariu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4099 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Evaluarea mea" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4112 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4116 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Rata medie" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4117 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "În prezent nu există evaluări ale comunității disponibile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4165 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4251 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Marcați pentru ștergere" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4178 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Ștergeți selectate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4238 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4273 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Salvează modificările" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_ru.po i2p-2.5.0/apps/i2psnark/locale/messages_ru.po --- i2p-2.4.0/apps/i2psnark/locale/messages_ru.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_ru.po 2024-04-10 02:29:57.000000000 +0000 @@ -33,10 +33,10 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: R4SAS, 2023\n" -"Language-Team: Russian (Russia) (http://www.transifex.com/otf/I2P/language/ru_RU/)\n" +"Language-Team: Russian (Russia) (http://app.transifex.com/otf/I2P/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -48,332 +48,338 @@ msgstr "Нет запущенных торрентов." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3238 -#: ../java/src/org/klomp/snark/SnarkManager.java:3249 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "Соединение с I2P закрыто." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2869 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2615 -#: ../java/src/org/klomp/snark/SnarkManager.java:2679 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Невозможно соединиться с сетью I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2617 -#: ../java/src/org/klomp/snark/SnarkManager.java:2681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Ошибка соединения с I2P, проверьте настройки I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "темная" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "светлая" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilla" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1177 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1457 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Нет доступа на запись в каталог с данными" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:767 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Не удалось создать директорию для файлов" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Новое значение лимита количества слотов отдачи: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Минимально допустимое значение для количества слотов: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Новое значение лимита скорости отдачи: {0} КБ/с" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Минимально допустимое значение для лимита скорости отдачи: {0} КБ/с" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Задержка запуска изменена на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Время обновления изменено на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Обновление отключено" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Размер страницы изменён на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Новые файлы будут доступны для чтения публично" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Новые файлы не будут доступны для чтения публично" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1154 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Директория данных должна быть абсолютным путём" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Директория данных не существует" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Не директория" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Нечитаемо" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Директория данных изменена на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов." -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Параметры I2CP изменены на {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Разрываем старое I2CP соединение" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Новые параметры I2CP: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Не удалось пересоединиться с использованием старых настроек I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Переподключение по новому адресу I2CP" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-приёмник перезапущен для \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Автостарт включен" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Автостарт выключен" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Включена \"умная\" сортировка" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Отключена \"умная\" сортировка" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT включено." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT выключено." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Изменение DHT требует повторного открытия туннеля" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Рейтинги включены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Рейтинги выключены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Комментарии включены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Комментарии выключены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Имя в комментариях установлено в {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "загружена тема {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Сворачиваемые панели включены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Сворачиваемые панели отключены." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Настройки не изменились." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Изменен список открытых трекеров. Требуется перезапуск торрентов, чтобы изменения вступили в силу." -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Список частных трекеров изменился - влияет только на заново созданные торренты." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Не удалось сохранить настройки в {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1308 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Удален торрент: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Торрент-файл перемещен из {0} в {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2923 -#: ../java/src/org/klomp/snark/SnarkManager.java:2929 -#: ../java/src/org/klomp/snark/SnarkManager.java:2933 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Ошибка: Не удалось добавить торрент {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Торрент уже запущен: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Не удалось открыть \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1224 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Торрент с таким info hash уже запущен: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Торрент с таким же расположением данных уже запущен: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "ОШИБКА - нет I2P-трекеров в частном торренте \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Предупреждение - Нет I2P трекеров в \"{0}\", анонсирование будет выполняться только на открытых трекерах и в DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Предупреждение - Нет I2P трекеров в \"{0}\" и использование открытых трекеров запрещено, анонсирование будет выполняться только в DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -381,43 +387,44 @@ "torrent." msgstr "Предупреждение - Нет I2P трекеров в \"{0}\" и использование открытых трекеров и DHT запрещено. Следует разрешить их использование перед запуском торрента." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Торрент в \"{0}\" некорректен" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1252 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2596 -#: ../java/src/org/klomp/snark/SnarkManager.java:2607 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Устанавливается соединение с I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Торрент добавлен и запущен: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Добавлен торрент: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Получение торрента: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -425,56 +432,56 @@ "DHT." msgstr "Использование открытых трекеров запрещено и нет DHT-пиров. Передача {0} не может быть завершена. Запустите другой торрент или разрешите использование открытых трекеров и/или DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Добавление {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Загрузка уже запущена: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Не удалось скопировать торрент в: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "Слишком много файлов в \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Торрент-файл \"{0}\" не может оканчиваться на \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Нет частей в \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "Слишком много частей в \"{0}\", предел {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Слишком большой размер части в \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Наш предел {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Торрент \"{0}\" не содержит данных!" @@ -484,93 +491,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Торренты больше, чем {0} В не поддерживаются \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Ошибка: Невозможно удалить торрент {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Торрент остановлен {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Торрент удален: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Добавление торрентов через {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2632 -#: ../java/src/org/klomp/snark/SnarkManager.java:2763 -#: ../java/src/org/klomp/snark/SnarkManager.java:3109 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Запускаем торрент: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2644 -#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Ограничение отдачи {0} КБ/с" -#: ../java/src/org/klomp/snark/SnarkManager.java:2703 -#: ../java/src/org/klomp/snark/SnarkManager.java:2705 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Загрузка завершена: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2778 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Ошибка в торренте {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2823 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3273 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3108 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Открытие I2P туннеля" -#: ../java/src/org/klomp/snark/SnarkManager.java:3126 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Соединяемся с I2P и запускаем все торренты." -#: ../java/src/org/klomp/snark/SnarkManager.java:3196 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Останавливаем все торренты и закрываем соединение с I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:3223 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Закрытие туннеля I2P после уведомления трекеров" -#: ../java/src/org/klomp/snark/SnarkManager.java:3293 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Закончена перепроверка торрента {0}, теперь {1} завершен" -#: ../java/src/org/klomp/snark/SnarkManager.java:3295 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Закончена перепроверка торрента {0}, без изменений" -#: ../java/src/org/klomp/snark/SnarkManager.java:3299 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Ошибка проверки торрента {0}" @@ -606,201 +619,203 @@ msgstr "Получен торрент из: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Торрент уже в очереди: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1211 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Торрент, полученный из {0}, некорректен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2612 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:319 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Анонимный BitTorrent клиент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark остановился" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Маршрутизатор выключен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:343 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Вы уверены, что хотите удалить файл \\''{0}\\'' (загруженные данные не будут удалены) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:360 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Торренты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Обновить страницу" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Нажмите \"Добавить торрент\", чтобы получить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:469 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "очистить сообщения" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Статус" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3752 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3768 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3780 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Сортировать по {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Скрыть список пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Показать список пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:589 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3261 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3297 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3641 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Тип файла" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:607 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Примерное оставшееся время" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "Принято" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Получено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3515 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3766 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Размер" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "Отдано" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Коэффициент отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Отдано" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "Скорость получения" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Скорость загрузки" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "Скорость отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Скорость отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:713 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Остановить все торренты и закрыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Остановить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:726 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Запустить все остановленные торренты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Запустить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:740 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Запустить все торренты и открыть соединение с I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Нет загруженных торрентов." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Всего" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" @@ -809,7 +824,7 @@ msgstr[2] "{0} торрентов" msgstr[3] "{0} торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" @@ -818,7 +833,7 @@ msgstr[2] "{0} подсоединенных пиров" msgstr[3] "{0} подсоединенных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" @@ -827,219 +842,224 @@ msgstr[2] "{0} DHT пиров" msgstr[3] "{0} DHT пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Адрес назначения" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Мой адрес назначения в этой сессии" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Отладка DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Первый" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Первая страница" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Предыдущее" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1030 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Предыдущая страница" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Следующее" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Следующая страница" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Последний" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1071 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Последняя страница" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Не могу добавить торрент {0} в состав другого торрента: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1186 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "Загрузка не из I2P локации {0} не поддерживается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Некорректный URL: он должен начинаться с \"{0}\" или \"{1}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1334 +#. no file or URL specified +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 +msgid "Enter URL or select torrent file" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1347 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Не удалось удалить торрент-файл: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1332 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Загрузка удалена: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Файл удален: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1370 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Не удалось удалить файл: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Каталог не может быть удалён: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Каталог удалён: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Не могу добавить окончание торрента в файл \".torrent\": {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1467 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Торрент с таким именем уже запущен: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Не могу добавить торрент с I2P директорией: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1488 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Не могу добавить торрент {0}, включающий в себя другой торрент: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Ошибка - нельза добавить альтернативные трекеры без основного" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Ошибка - невозможно объединить приватный и публичный трекеры в торренте" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Создан торрент для \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста, проверьте, требуется ли это перед запуском \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1553 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Ошибка при создании торрента для: \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Торрент не создан — вы должны указать файл или директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Удалить выбранное" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1624 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Сохранить настройки трекеров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1641 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Удален" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1673 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2975 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Добавить трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1696 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Введите действительное название и URL трекера" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1701 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Восстановить значения по умолчанию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Восстановить трекеры по умолчанию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1817 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1818 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Проверка" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1822 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3587 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Выделение места" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Ошибка Трекера" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1872 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1877 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1889 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1894 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1900 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" @@ -1048,17 +1068,17 @@ msgstr[2] "{0} пиров" msgstr[3] "{0} пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1849 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1850 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3585 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Запускается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1859 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Раздается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" @@ -1067,27 +1087,27 @@ msgstr[2] "Раздаем {0} пирам" msgstr[3] "Раздаем {0} пирам" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1881 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3511 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Завершен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Скачиваем у {0} из {1} доступных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1886 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "Загружается" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1891 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" @@ -1096,7 +1116,7 @@ msgstr[2] "Загрузка с {0} пиров" msgstr[3] "Загрузка с {0} пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" @@ -1105,462 +1125,479 @@ msgstr[2] "Соединены с {0} пирами" msgstr[3] "Соединены с {0} пирами" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1896 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Простаивает" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Соединены с {0} из {1} доступных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1911 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Нет пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1914 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Остановлен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Подробная информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1972 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Комментарии" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Открыть директорию" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Открыть файл" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2016 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "загружено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3867 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2024 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3453 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Завершено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Остановить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Остановить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2077 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Запустить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2079 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Запустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2092 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Удалить торрент из списка и с диска" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2096 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Удалить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2111 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Удалить .torrent-файл и все связанные с ним файлы" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2115 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Стереть" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2131 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Пир присоединён к доступным" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2196 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Неизвестный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2206 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Адрес назначения пира" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2222 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Сид" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2248 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Uninteresting (У пира нет нужных нам частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2250 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Uninterested (У нас нет нужных этому пиру частей торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2272 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Детали на трекере {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Информация" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2484 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Добавить Торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2488 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Из URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2491 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Введите URL для скачивания torrent-файла (только I2P), magnet-ссылку или инфохэш" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Добавить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2500 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 +msgid "Torrent file" +msgstr "Торрент-файл" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Директория для файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Путь для сохранения файлов (по умолчанию {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2509 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Удаление .torrent-файла приведёт к остановке торрента." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2522 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Создать Торрент" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2525 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Файлы для раздачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Файл или директория для раздачи (полный путь или относительно директории {0} )" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2532 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Создать торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2535 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2904 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Основной" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Альтернативный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Тип трекера" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2565 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2914 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Стандартный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2567 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2916 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Открытый" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2569 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2918 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Частный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "нет" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2616 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Директория для файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Каталог для хранения торрентов и загруженных/раздаваемых файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Файлы доступны для чтения всеми" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Установить разрешения файла для доступа других локальных пользователей к загруженным файлам." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2632 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Автоматически стартовать торренты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Автоматически стартовать торренты при добавлении и перезапускать их, когда стартует I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "\"Умная\" сортировка торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2644 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Игнорировать артикли типа \"a\" и \"the\" при сортировке" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Сворачиваемые панели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Ваш браузер не поддерживает эту функцию." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Сделать панели «добавить торрент» и «создать торрент» сворачиваемыми, и свернуть их по умолчанию в невстраиваемом режиме." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2668 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Язык" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Тема" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2683 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Для ручного изменения тем выключите универсальную тему" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2687 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Универсальная тема включена." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2795 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4201 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2712 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Периодичность обновления интерфейса" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Как часто обновляется статус торрента на главной странице" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Никогда" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Задержка запуска" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2738 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "При старте I2PSnark как долго ждать перед автостартом торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2740 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "минут" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2745 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Размер страницы" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2748 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Максимальное количество торрентов на страницу" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2750 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "торренты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Ограничение количества слотов отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Максимальное количество пиров, которым будет раздаваться torrent одновременно" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Ограничение скорости отдачи" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2788 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Максимальная пропускная способность, выделенная на отдачу" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2790 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Рекомендуется использовать половину от доступной пропускной способности." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2799 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Дополнительно использовать открытые трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2803 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Анонсировать torrent как на открытые трекеры, так и на трекеры, указанные в torrent-файле" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Включить DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Использовать DHT для поиска дополнительных пиров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Включить рейтинги" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Отображать рейтинги на страницах торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2823 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Включить комментарии" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Показывать комментарии на страницах торрентов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Автор комментария" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Установить имя автора для ваших комментариев и рейтингов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Входящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2855 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Исходящие туннели" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "Адрес I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "Порт I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2884 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Параметры I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Сохранить настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2907 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Выбрать трекеры для удаления из списка I2PSnark" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3752 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Имя" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "URL сайта" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2920 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "URL анонсирования" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Пометить трекер для удаления" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Добавить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3011 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Неправильный magnet URL {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" @@ -1569,7 +1606,7 @@ msgstr[2] "{0} хопов" msgstr[3] "{0} хопов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" @@ -1578,234 +1615,230 @@ msgstr[2] "{0} туннелей" msgstr[3] "{0} туннелей" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3297 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3604 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Изменить торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3307 -msgid "Torrent file" -msgstr "Торрент-файл" - -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Расположение данных" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Инфо хэш" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Первичный трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Список трекеров" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "Web-сиды" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3413 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4469 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Комментарий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3423 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Создан" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3434 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4483 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Создан кем" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3444 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Добавлено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Последняя активность" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3478 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnet-ссылка" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3493 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Частный torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3507 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Загружено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3780 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Осталось" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3551 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Пропущено" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3559 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3565 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Размер части" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Обновите страницу для получения результатов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3595 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Быстрая повторная проверка" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3598 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3607 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4381 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Торрент должен быть остановлен" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "Проверить целостность содержимого загруженных файлов" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3610 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "Добавить или удалить трекеры" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3620 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Загрузить файлы по порядку" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Загрузить части по порядку" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4223 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Сохранить настройки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Ресурс не найден" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Ресурс" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3640 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "База" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Ресурс не существует" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3732 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Директория" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Статус загрузок" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3790 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Приоритет загрузки" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3802 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Перейти в директорию уровнем выше" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3813 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Аудио-плейлист" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3845 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Торрент не найден?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3851 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Не найден файл в торренте?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3893 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Предпросмотр" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3944 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Загружать файл с высоким приоритетом" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3949 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Высокий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3952 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Загружать файл с нормальным приоритетом" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Нормальный" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Не загружать этот файл" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3964 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Пропустить" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3976 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Всем высокий приоритет" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3979 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Всем нормальный приоритет" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3981 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Пропустить все" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3982 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Сохранить приоритеты" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4196 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Рейтинги и комментарии" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4199 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Требуется имя автора для добавления оценки или комментария" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Ваше имя автора для комментариев и рейтинга" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4219 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Включить возможность просмотра и написания комментариев для этого торрента" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" @@ -1814,52 +1847,52 @@ msgstr[2] "{0} звезд" msgstr[3] "{0} звезд" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4244 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Нет рейтинга" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4259 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Оценить и прокомментировать" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4261 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Оценть торрент" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Добавить комментарий" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Мой рейтинг" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4288 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Средний рейтинг" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Рейтинги сообщества в данный момент недоступны" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4341 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4427 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Пометить для удаления" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4354 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Удалить выбранное" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4414 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "Добавить трекер" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Сохранить изменения" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_sv.po i2p-2.5.0/apps/i2psnark/locale/messages_sv.po --- i2p-2.4.0/apps/i2psnark/locale/messages_sv.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_sv.po 2024-04-10 02:29:57.000000000 +0000 @@ -23,7 +23,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: Jonatan Nyberg, 2017,2021-2023\n" "Language-Team: Swedish (Sweden) (http://app.transifex.com/otf/I2P/language/sv_SE/)\n" @@ -38,334 +38,338 @@ msgstr "Inga fler torrenter körs." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P-tunneln är stängd." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "Det går inte att ansluta till I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "Problem vid anslutning till I2P - kontrollera dina inställningar för I2CP!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "mörkt" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "ljust" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilj" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Inga skrivbehörigheter för datamappen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Datamapp kan inte skapas" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Gräns för totalt antal uppladdare är ändrat till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "Minsta tillåtna gräns för uppladdare är {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Uppladdningsbandbredd bytt till {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "Minsta uppladdningsbandbredd är {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Fördröjning vid uppstart bytt till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Uppdateringstiden ändrad till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Uppdatering inaktiverad" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Torrenter per sida ändrat till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Nya filer kommer att vara offentligt läsbara" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Nya filer kommer inte att vara offentligt läsbara" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Datamappen måste vara en absolut sökväg" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Datamappen finns inte" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Inte en mapp" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Oläsbar" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Datamappen ändrad till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CP- och tunnelförändringar kommer träda i kraft efter alla torrenter stoppats" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "Alternativ för I2CP ändrade till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Kopplar ifrån gammal I2CP destination" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "Inställningar för I2CP ändrade till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Misslyckades med anslutningsförsök med nya inställningar, återställer de gamla I2CP inställningarna" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Misslyckades med anslutningsförsök med gamla inställningar!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Återanslöt mot den nya I2CP destinationen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "I2CP-lyssnare omstartad för \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Aktiverade automatisk start" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Inaktiverade automatisk start" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Aktiverade smart sortering" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Inaktiverade smart sortering" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Aktiverade offentliga spårare - torrenten måste startas om för att inställningen ska träda i kraft." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Inaktiverade offentliga spårare - torrenten måste startas om för att inställningen ska träda i kraft." -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "Aktivera DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "Inaktiverade DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "Förändring i DHT kräver att tunneln stängs och öppnas igen" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Aktiverade betyg." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Inaktiverade betyg." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Aktiverade kommentarer." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Inaktiverade kommentarer." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Kommentarnamn satt till {0}." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} temat laddat." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Fällbara paneler aktiverade." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Fällbara paneler inaktiverade." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Konfigurationen oförändrad." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Listan över offentliga spårare förändrad - torrenten måste startas om för att inställningen ska träda i kraft." -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Privat spårarlista ändrad - påverkar endast nyskapade torrenter." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Misslyckades med att spara inställningar till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrentfil borttagen: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrentfil flyttad från {0} till {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Problem: Kunde inte lägga till torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent redan igång: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "Kan inte öppna \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Torrent med denna infohash körs redan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "FEL - Inga I2P-spårare i den privata torrenten \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Varning - Inga I2P-spårare i \"{0}\", kommer enbart att annonsera till offentliga I2P-spårare och DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Varning - Inga I2P-spårare i \"{0}\" och offentliga spårare är inaktiverade, kommer enbart att annonsera till DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -373,44 +377,44 @@ "torrent." msgstr "Varning - Inga I2P-spårare i \"{0}\" och både DHT och offentliga spårare är inaktiverade, du bör aktivera offentliga spårare eller DHT innan du startar torrenten." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "Torrent i \"{0}\" är ogiltig" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "FEL - Minnet har tagit slut, kan inte skapa torrent från {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "Ansluter till I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent tillagd och startad: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent tillagd: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Hämtar {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -418,56 +422,56 @@ "DHT." msgstr "Publika spårare är inaktiverade och vi har inga DHT-jämlikar. Hämtningen av {0} kan kanske inte genomföras innan du startar en annan torrent eller aktiverar offentliga spårare eller DHT." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "Lägger till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Hämtar redan: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Misslyckades att kopiera torrentfil till {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "För många filer i \"{0}\" ({1})!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "Torrentfilen \"{0}\" kan inte sluta på \".torrent\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "Inga delar i \"{0}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "För många delar i \"{0}\", gränsen är {1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "Delarna är för stora i \"{0}\" ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Gränsen är {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "Torrent \"{0}\" har ingen data!" @@ -477,94 +481,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "Torrenter större än {0}B stöds inte än \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Fel: Kunde inte ta bort torrenten {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent stoppad: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent borttagen: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Lägger till torrenter om {0}" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "Startar torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Bandbreddsgräns för uppladdning är {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "Hämtning klar: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "Fel på torrent {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "Öppnar I2P-tunneln" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "Öppnar I2P-tunneln och startar torrenter." -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Stoppar alla torrenter och stänger I2P-tunneln." -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "Stänger I2P-tunnel efter att ha meddelat spårare." -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "Avslutade omkontroll av torrent {0}, nu {1} färdig" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "Avslutade omkontroll av torrent {0}, oförändrad" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "Fel vid kontroll av torrent {0}" @@ -600,1252 +609,1260 @@ msgstr "Torrent hämtad från {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent finns redan i kön: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "Torrent vid {0} var inte giltig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Konfiguration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonym BitTorrent-klient" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark har stoppats" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Routern är avstängd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "Är du säker på att du vill ta bort filen \\''{0}\\' (hämtade data kommer inte att tas bort) ?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "Är du säker på att du vill ta bort torrenten \"{0}\" och alla hämtade data?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Uppdatera sidan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Klicka på \"Lägg till torrent\" för att hämta en torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "rensa meddelanden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Status" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "Sortera efter{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Dölj jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Visa jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Filtyp" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "Förväntas klar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Uppskattad återstående tid" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "RX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Hämtat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Storlek" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "TX" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Sändningsförhållande" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Uppladdat" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "RX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "Nerhastighet" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "TX Rate" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Upphastighet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Stoppa alla torrenter och I2P-tunneln" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Stoppa alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Starta alla stannade torrenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Starta alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Starta alla torrenter och I2P-tunneln" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Inga torrenter inlästa." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Totalt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrent" msgstr[1] "{0} torrenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 ansluten klient" msgstr[1] "{0} anslutna jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 DHT klient" msgstr[1] "{0} DHT-jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Destination" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Vår destination (identitet) för denna session" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht-felsökning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "Första" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "Första sidan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Bakåt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Föregående sida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Nästa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Nästa sida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Sista" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Sista sidan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "Kan inte lägga till torrent{0} inuti annan torrent:{1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Torrentfilen kunde inte tas bort: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "Hämtning borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Datafil borttagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Datafil kunde inte tas bort: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Mappen kunde inta tas bort: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Mappen bort tagen: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "Kan inte lägga till en torrent som slutar på \".torrent\":{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Torrent med detta namn kör redan: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Kan inte lägga till en torrent som inkluderar en I2P directory:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "Kan inte lägga till en torrent{0} som inkluderar en annan torrent{1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Fel - Kan inte inkludera alternativa spårare utan en primär spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Fel - Kan inte blanda privata och publika spårare i samma torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "Torrent skapad för \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Många I2P spårare kräver att du registrerar nya torrenter innan uppladdningen påbörjas - gör det innan \"{0}\" startas" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "Misslyckades med att skapa torrent för \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Det går inte att skapa en torrent för de obefintliga data: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Misslyckades med att skapa torrent - en fil eller mapp måste anges" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Ta bort valda" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "Spara spårarkonfiguration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Borttagen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "Lägg till spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Ange giltigt namn och adresser för spåraren" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Återställ standardvärden" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Återställ standardspårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Kontrollerar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Allokerar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Spårarfel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 klient" msgstr[1] "{0} jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Startar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Uppladdning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Färdig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Hämtar från {0} av {1} jämlikar i svärm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "OK" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "" msgstr[1] "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Avstannad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Ansluten till {0} av {1} jämlikar i svärm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Inga jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Stoppad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Torrentdetaljer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Kommentarer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Se filer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Öppna fil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "färdig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "kvar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Färdig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Stoppa torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Stoppa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Starta torrenten" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Starta" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "Ta bort torrenten från den aktiva listan, tar bort .torrent filen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Ta bort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "Ta bort .torrent-filen och tillhörande datafiler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Ta bort" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Jämlike fäst vid svärm" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Okänd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Destinat (identitet) för jämlike" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Källa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "Ointressant (jämlike har inga delar vi behöver)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Strypt (jämlike låter oss inte be om delar)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "Ointresserad (vi har inga delar jämlike behöver)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Stryper (vi låter inte jämlike be om delar)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Detaljer för {0}-spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Lägg till torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Adress" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Ange webbadress för hämtning av torrentfiler (endast I2P), magnetlänk eller infohash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Lägg till torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Torrentfil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Datamapp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Ange mappen att spara data i (standard {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "Du kan även kopiera .torrent-filer till: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "Om du tar bort en .torrent stoppas den." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Skapa torrent" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Data att ladda upp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Fil eller mapp att distribuera (fullständig sökväg eller inom mapp {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Skapa torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Primär" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternativ" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Spårartyp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standard" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Öppen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Privat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "inga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Datamapp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Mapp var torrenter och hämtade/delade filer lagras" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Filer läsbara av alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Ställ in filbehörigheter för att tillåta andra lokala användare att komma åt de nedladdade filerna" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Starta torrenter automatiskt" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Starta automatiskt torrenter när de läggs till och starta om torrenter när I2PSnark startar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Smart torrentsortering" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Ignorera ord som \"a\" och \"the\" vid sortering" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Fällbara paneler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Språk" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Om du vill ändra teman manuellt, inaktivera universella teman" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Universella teman är aktiverad." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Inställningar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Uppdateringsintervall" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Hur ofta torrentstatus uppdateras på huvudsidan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Aldrig" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Uppstartsfördröjning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "Hur länge innan automatiskt startade torrenter laddas när I2PSnark startar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "minuter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Per sida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Maximalt antal torrenter som ska visas per sida" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrenter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Gräns för totalt antal uppladdare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Gräns för uppladdningsbandbredd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Maximal bandbredd avsedd för uppladdning" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Hälften av tillgänglig bandbredd rekommenderas." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Se eller ändra routerns bandbredd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Använd också öppna spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "Aktivera DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Använd DHT för att hitta ytterligare jämlikar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Aktivera betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Visa betyg på torrentsidor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Aktivera kommentarer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Visa kommentarer på torrentsidor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Kommentarförfattare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Ange författarnamnet för dina kommentarer och betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Inställningar för inkommande" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Inställningar för utgående" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP-värd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP-port" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "Alternativ för I2CP" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Spara konfiguration" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "Välj spårare för borttagning från I2PSnarks kända lista" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Namn" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "Webbplatsadress" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Annonseringsadress" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "Markera spårare för borttagning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Lägg till" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "Ogiltig magnetwebbadress {0}" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 hopp" msgstr[1] "{0} hopp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 tunnel" msgstr[1] "{0} tunnlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Plats för data" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Info hash" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Primär spårare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Spårarlista" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Kommentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Skapad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Skapad av" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Tillagd" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Senaste aktivitet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnetlänk" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Privat torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Färdigställning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Kvar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Hoppade över" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Filer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Delar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Delstorlek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Uppdatera sidan för resultat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Tvinga omkontroll" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Spara preferens" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Resurs hittades inte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Resurs" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Grund" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Resurs finns inte" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Mapp" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "Hämtningsstatus" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "Hämtningsprioritet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Upp till högre mappnivå" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrenten hittades inte?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Filen hittades inte i torrent?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Förhandsgranskning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Hämta filen med hög prioritet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Hög" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Hämta filen med normal prioritet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Hämta inte den här filen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Hoppa över" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Sätt alla höga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Sätt alla normala" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Hoppa över alla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Spara prioriteter" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Betyg och kommentarer" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Författarnamn krävs för att betygsätta eller kommentera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Ditt författarnamn för publicerade kommentarer och betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Aktivera visning och inläggning av kommentarer för denna torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "1 stjärna" msgstr[1] "{0} stjärnor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Inget betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Betygsätt och kommentera" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Betygsätt torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Lägg till kommentar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Mitt betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Genomsnittligt betyg" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Inga gemenskapsbetyg är för närvarande tillgängliga" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Markera för borttagning" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Ta bort Valda" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Bevakare" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Spara ändringar" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_tr.po i2p-2.5.0/apps/i2psnark/locale/messages_tr.po --- i2p-2.4.0/apps/i2psnark/locale/messages_tr.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_tr.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,15 +4,15 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# Kaya Zeren , 2015-2023 +# Kaya Zeren , 2015-2024 # Ozancan Karataş , 2015 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: Kaya Zeren , 2015-2023\n" +"Last-Translator: Kaya Zeren , 2015-2024\n" "Language-Team: Turkish (Turkey) (http://app.transifex.com/otf/I2P/language/tr_TR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,334 +25,338 @@ msgstr "Çalışan başka bir torrent yok." #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P tüneli kapatıldı." #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "I2P bağlantısı kurulamadı" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "I2P bağlantısı kurulamadı - I2CP ayarlarınızı denetleyin!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "koyu" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "açık" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "mor" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "vanilya" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "Veri klasörüne yazma izni yok" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "Veri klasörü oluşturulamadı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "Toplam yükleyici sınırı {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "En düşük toplam yükleyici sınırı {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "Üst bant genişliği sınırı {0}KBps olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "En düşük bant genişliği sınırı {0}KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "Başlangıç gecikmesi {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "Yenileme sıklığı {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "Yenileme devre dışı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "Sayfa boyutu {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "Yeni dosyalar herkes tarafından okunabilir" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "Yeni dosyalar herkes tarafından okunamaz" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "Veri klasörünü değiştirmeden önce tüm torrentleri durdur" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "Veri klasörü yolu mutlak olmalıdır" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "Veri klasörü bulunamadı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "Bir klasör değil" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "Okunabilir değil" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "Veri klasörü {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CP ve tünel değişiklikleri tüm torrentler durdurulduktan sonra etkin olacak" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP ayarları {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "Eski I2CP hedefi bağlantısı kesiliyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2Cp ayarları {0} olarak değiştirildi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "Yeni ayarlar ile bağlantı kurulamadığından eski I2CP ayarlarına geri dönülüyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "Eski ayarlar ile bağlantı kurulamadı!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "Yeni I2CP hedefi ile yeniden bağlantı kuruldu" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "\"{0}\" için I2CP dinleyicisi başlatıldı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "Otomatik başlatma etkin" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "Otomatik başlatma devre dışı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "Akıllı sıralama etkin" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "Akıllı sıralama devre dışı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "Açık izleyiciler etkinleştirildi - değişikliklerin etkili olması için torrenti yeniden başlatmalısınız." -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "Açık izleyiciler devre dışı bırakıldı - değişikliklerin etkili olması için torrenti yeniden başlatmalısınız." -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "\"Dağıtılmış karma tablosu\" (DHT) etkinleştirildi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "\"Dağıtılmış karma tablosu\" (DHT) devre dışı bırakıldı." -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "\"Dağıtılmış karma tablosu\" (DHT) değişikliği için tünelin kapatılıp yeniden açılması gerekir." -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "Değerlendirmeler etkinleştirildi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "Değerlendirmeler devre dışı bırakıldı." -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "Yorumlar etkinleştirildi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "Yorumlar devre dışı bırakıldı." -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "Yorumların adı {0} olarak ayarlandı." -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0} teması yüklendi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "Daraltılabilir panolar etkinleştirildi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "Daraltılabilir panolar devre dışı bırakıldı." -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "Yapılandırma değiştirilmedi." -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "Açık İzleyiciler listesi değiştirildi - değişikliklerin etkili olması için torrenti yeniden başlatmalısınız." -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "Kişisel izleyici listesi değiştirildi - yalnızca yeni oluşturulan torrentler etkilenecek." -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "Ayarlar {0} üzerine kaydedilemedi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "Torrent dosyası silindi: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "Torrent dosyası {0} içinden {1} içine taşındı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "Hata: {0} torrenti eklenemedi" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "Torrent zaten çalışıyor: {0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "\"{0}\" açılamadı" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "Bu bilgi karmasını kullanan bir torrent zaten çalışıyor: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "Zaten aynı veri konumundan alınan bir Torrent var: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "HATA - \"{0}\" kişisel torrenti içinde herhangi bir I2P izleyicisi yok" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "Uyarı - \"{0}\" içinde herhangi bir I2P izleyici yok. Yalnızca I2P açık izleyicileri ve \"Dağıtılmış karma tablosu\" (DHT) üzerinde duyurulacak." -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "Uyarı - \"{0}\" içinde herhangi bir I2P izleyici yok ve I2P açık izleyicileri devre dışı bırakılmış. Yalnızca \"Dağıtılmış karma tablosu\" (DHT) üzerinde duyurulacak." -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -360,44 +364,44 @@ "torrent." msgstr "Uyarı - \"{0}\" içinde herhangi bir I2P izleyici yok. I2P açık izleyicileri ve \"Dağıtılmış karma tablosu\" (DHT) devre dışı bırakılmış. Torrenti başlatmadan önce açık izleyicileri ya da \"Dağıtılmış karma tablosu\" (DHT) özelliğini etkinleştirin." -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "\"{0}\" içindeki torrent geçersiz" -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "HATA - Bellek bitti, {0} torrenti oluşturulamadı" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "I2P bağlantısı kuruluyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "Torrent eklendi ve başlatıldı: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "Torrent eklendi: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "Alınıyor {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -405,56 +409,56 @@ "DHT." msgstr "Açık izleyiciler devre dışı bırakılmış ve herhangi bir \"Dağıtılmış karma tablosu\" (DHT) eşi yok. Başka bir torrent başlatılana kadar {0} alınamayabilir. Açık izleyicileri ya da \"Dağıtılmış karma tablosu\" (DHT) özelliğini etkinleştirin." -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "{0} ekleniyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "Zaten indiriliyor: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "Torrent dosyası {0} üzerine kopyalanamadı" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "\"{0}\" ({1}) içinde çok fazla dosya var!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "\"{0}\" torrent dosyasının adı \".torrent\" ile bitemez!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "\"{0}\" içinde herhangi bir parça yok!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "\"{0}\" içinde çok fazla parça var, sınır {1} parçadır!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "\"{0}\" içindeki parçalar çok büyük ({1}B)!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "Sınır {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "\"{0}\" torrentinde herhangi bir veri yok!" @@ -464,94 +468,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "{0}B boyutundan büyük torrentler henüz desteklenmiyor \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "Hata: {0} torrenti henüz silinemedi" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "Torrent durduruldu: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "Torrent silindi: \"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "Torrentler {0} içine ekleniyor" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "{0} torrenti başlatılıyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "İndirme bant genişliği sınırı {0} KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "Yükleme bant genişliği sınırı {0} KBps" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "İndirme tamamlandı: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "{0} torrentinde bir sorun çıktı" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "I2P tüneli açılıyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "I2P tüneli açılıp tüm torrentler başlatılıyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "Tüm torrentler dururulup I2P tüneli kapatılıyor" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "İzleyiciler bilgilendirilerek I2P tüneli kapatılıyor." -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "{0} torrentinin yeniden denetlenmesi tamamlandı, şimdi {1} tamamlandı" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "{0} torrentinin yeniden denetlenmesi tamamlandı, herhangi bir değişiklik yok" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "{0} torrenti denetlenirken bir sorun çıktı" @@ -587,1252 +596,1260 @@ msgstr "Torrent {0} üzerinden alındı" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "Torrent zaten kuyrukta: {0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0} üzerindeki torrent geçersiz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "Yapılandırma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "Anonim BitTorrent istemcisi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark durduruldu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "Yöneltici kapalı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "\\\"{0}\\\" dosyasını silmek istediğinize emin misiniz (indirilmiş veriler silinmez)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "\\\"{0}\\\" dosyasını ve indirilmiş tüm verileri silmek istediğinize emin misiniz?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "Torrentler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "Sayfayı yenile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "Torrenti almak için \"Torrent ekle\" düğmesine tıklayın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "iletileri temizle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "Durum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "{0} sıralaması" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "Eşler gizlensin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "Eşler görüntülensin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "Torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "Dosya türü" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "KAL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "Öngörülen kalan süre" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "ALI" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "İndirilen" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "Boyut" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "GÖN" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "Yükleme oranı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "Yüklendi" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "ALI Hızı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "İndirme hızı" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "GİD hızı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "Yükleme hızı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "Tüm torrentleri ve I2P tünelini durdur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "Tümünü durdur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "Tüm durdurulmuş torrentleri başlat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "Tümünü başlat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "Tüm torrentleri ve I2P tünelini başlat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "Herhangi bir torrent bulunamadı." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "Henüz bir torrent yüklenmemiş." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "Toplamlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "1 torrent" msgstr[1] "{0} torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "1 eş bağlı" msgstr[1] "{0} eş bağlı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "1 \"Dağıtılmış karma tablosu\" (DHT) eşi" msgstr[1] "{0} \"Dağıtılmış karma tablosu\" (DHT) eşi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "Hedef" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "Bu oturum için hedef (kimlik)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "\"Dağıtılmış karma tablosu\" (DHT) hata ayıklama" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "İlk" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "İlk sayfa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Önceki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "Önceki sayfa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "Sonraki" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "Sonraki sayfa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "Son" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "Son sayfa" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "{0} torrenti başka bir torrent içine eklenemez: {1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "I2P olmayan bir konumdan {0} indirme desteklenmiyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "Adres geçersiz: \"{0}\", ya da \"{1}\" ile başlamalı" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "Adresi yazın ya da torrent dosyasını seçin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet silindi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "Torrent dosyası silinemedi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "İndirme silindi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "Veri dosyası silindi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "Veri dosyası silinemedi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "Klasör silinemedi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "Klasör silindi: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "\"torrent\" ile biten bir torrent eklenemez: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "Aynı adlı bir torrent zaten çalışıyor: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "Bir I2P klasörü içeren bir torrent eklenemez: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "{0} torrenti içinde başka bir torrent bulunamaz: {1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "Hata - Birincil izleyici olmadan alternatif izleyiciler eklenemez" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "Hata - Bir torrent için kişisel ve herkese açık izleyiciler karıştırılamaz" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "\"{0}\" için torrent oluşturuldu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "Çoğu I2P izleyicileri için yeni torrentleri tohumlamadan önce kayıt olmanız gerekir. Lütfen \"{0}\" başlatılmadan önce bu işlemi yapın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "\"{0}\" için torrent oluşturulurken sorun çıktı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "Var olmayan veri için bir torrent oluşturulamaz: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "Torrent oluştururken sorun çıktı - bir dosya ya da klasör yazmalısınız" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "Seçilmişleri sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "İzleyici yapılandırmasını kaydet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "Silindi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "İzleyici ekle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "Geçerli izleyici ad ve adreslerini yazın" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "Varsayılanları geri yükle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "Varsayılan izleyiciler geri yüklendi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "Denetleniyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "Yerleştiriliyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "İzleyici hatası" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "1 eş" msgstr[1] "{0} eş" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "Başlatılıyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "Tohumlanıyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "{0} eşe gönderiliyor" msgstr[1] "{0} eşe gönderiliyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "Tamam" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "Sürüdeki {0} / {1} eşten indiriliyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "Tamam" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "{0} eş üzerinden indiriliyor" msgstr[1] "{0} eş üzerinden indiriliyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "{0} eş ile bağlantı kuruldu" msgstr[1] "{0} eş ile bağlantı kuruldu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "Takılmış" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "Sürüdeki {0} / {1} eş ile bağlantı kuruldu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "Herhangi bir eş yok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "Durduruldu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "Torrent ayrıntıları" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "Yorumlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "Dosyaları görüntüle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "Dosyayı aç" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "tamamlanan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "kalan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "Tamamlandı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "Torrenti durdur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "Durdur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "Torrenti başlat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "Başlat" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr ".torrent dosyasını silerek torrenti etkin olanlar listesinden kaldırın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "Sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr ".torrent dosyasını ve ilgili veri dosyalarını sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "Sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "Sürüye eklenmiş eş" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "Bilinmiyor" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "Eşin hedefi (kimliği)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "Tohumla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "İlgilenmiyoruz (gerek duyduğumuz parçalar eşte yok)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "Engellenmiş (eş parçalar istememize izin vermiyor)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "İlgilenmiyor (eşin gerek duyduğu parçalar bizde yok)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "Engelliyoruz (eşin parçalar istemesine izin vermiyoruz)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "{0} izleyicisindeki ayrıntılar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "Bilgiler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "Torrent ekle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "Kimden adresi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "Torrent dosyası indirme adresini (yalnızca I2P), magnet bağlantısını ya da bilgi karmasını yazın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "Torrent ekle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Torrent dosyası" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "Veri klasörü" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "Verilerin kaydedileceği klasörü yazın (varsayılan {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr ".torrent dosyaları şuraya da kopyalanabilir: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr ".torrent dosyası silindiğinde torrent durdurulur." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "Torrent oluştur" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "Tohumlanacak veri" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "Tohumlanacak dosya ya da klasör (tam ya da {0} klasörünün içindeki yol)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "Torrent oluştur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "İzleyiciler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "Birincil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "Alternatifler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "İzleyici türü" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "Standart" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "Açık" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "Kişisel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "yok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "Veri klasörü" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr "Torrent ve indirilen/paylaşılan dosyaların kaydedileceği klasör" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "Dosyalar herkes tarafından okunabilir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "Dosya izinlerini diğer yerel kullanıcıların dosyalara erişebileceği şekilde ayarlayın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "Torrentler otomatik başlatılsın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "Bu seçenek etkinleştirildiğinde, torrentler eklendiği zaman otomatik olarak başlatılır ve I2PSnark başlatıldığında yeniden başlatılır" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "Akıllı torrent sıralaması" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "Sıralama sırasında 'a' ve 'the' gibi sözcükler yok sayılır" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "Daraltılabilir panolar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "Tarayıcınız bu özelliği desteklemiyor." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "Bu seçenek etkinleştirildiğinde, 'Torrent ekle' ve 'Torrent oluştur' panoları daraltılabilir. Eklenmemiş kipte varsayılan olarak daraltılır" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "Dil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "Tema" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "Temaları el ile değiştirmek için evrensel temayı devre dışı bırakın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "Evrensel tema etkinleştirildi." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "Yapılandır" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "Yenileme sıklığı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "Ana sayfadaki torrent durumunun güncellenme sıklığı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "Asla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "Başlangıç gecikmesi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "torrentlerin I2PSnark başlatıldıktan ne kadar zaman sonra otomatik olarak başlatılacağı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "dakika" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "Sayfa boyutu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "Bir sayfada görüntülenecek en fazla torrent sayısı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "torrentler" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "Toplam yükleyici sınırı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "Yüklenebilecek en fazla eş sayısı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "eş" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "Yükleme bant genişliği sınırı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "Yükleme için kullanılabilecek en fazla bant genişliği" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "Kullanılabilecek en fazla bant genişliği" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "Kullanılabilecek bant genişliğinin yarısının ayrılması önerilir." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "Yöneltici bant genişliğine bakın ve değiştirin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "İndirme bant genişliği sınırı" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "Açık izleyiciler de kullanılsın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "Bu seçenek etkinleştirildiğinde, torrentler torrent dosyasında listelenen izleyicilere ek olarak açık izleyicilere de duyurulur" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "\"Dağıtılmış karma tablosu\" (DHT) kullanılsın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "Bu seçenek etkinleştirildiğinde, ek eşleri bulmak için \"Dağıtılmış karma tablosu\" (DHT) kullanılır" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "Değerlendirmeler kullanılsın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "Bu seçenek etkinleştirildiğinde, torrent sayfalarında değerlendirmeler görüntülenir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "Yorumlar kullanılsın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "Bu seçenek etkinleştirildiğinde, torrent sayfalarında yorumlar görüntülenir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "Yorum yazarı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "Yorum ve değerlendirmelerde görüntülenecek yazar adını ayarlayın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "Geliş ayarları" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "Gidiş ayarları" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP sunucusu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP bağlantı noktası" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP ayarları" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "Yapılandırmayı kaydet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "I2PSnark bilinenler listesinden kaldırılacak izleyicileri seçin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "Ad" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "Site adresi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "Adres duyurulsun" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "İzleyiciyi silinmek üzere işaretle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "Ekle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "{0} Magnet adresi geçersiz" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "1 durak" msgstr[1] "{0} durak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "1 tünel" msgstr[1] "{0} tünel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "Torenti düzenle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "Veri konumu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "Bilgi karması" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "Birincil izleyici" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "İzleyici listesi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "İnternet tohumları" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "Yorum" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "Oluşturulma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "Oluşturan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "Eklenme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "Son işlem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnet bağlantısı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "Kişisel torrent" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "Tamamlanma" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "Kalan" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "Atlandı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "Dosyalar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "Parçalar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "Parça boyutu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "Sonuçları görmek için sayfayı yenile" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "Yeniden Denetim Dayatılsın" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "Torrent durdurulmalı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "İndirilmiş dosyaların bütünlüğü denetlensin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "İzleyici ekle ya da sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "Dosyalar sırayla indirilsin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "Parçalar sırayla indirilsin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "Ayarları kaydet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "Kaynak bulunamadı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "Kaynak" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "Temel" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "Kaynak bulunamadı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "Klasör" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "İndirme durumu" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "İndirme önceliği" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "Bir üst klasöre geç" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "Ses oynatma listesi" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "Torrent bulunamadı?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "Dosya torrent içinde bulunamadı?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "Ön izleme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "Dosya indirme önceliğini yüksek olarak ayarlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "Yüksek" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "Dosya indirme önceliğini normal olarak ayarlar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "Normal" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "Bu dosyayı indirme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "Atla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "Tümünü yüksek olarak ayarla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "Tümünü normal olarak ayarla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "Tümünü atla" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "Öncelikleri kaydet" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "Yorum ve açıklamalar" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "Değerlendirme ve yorumlar için yazar adı gereklidir" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "Yayınlanacak değerlendirme ve yorumlar için kullanılacak yazar adı" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "Bu torrent için yorumlar görüntülenip eklenebilsin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "1 yıldız" msgstr[1] "{0} yıldız" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "Değerlendirme yok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "Değerlendirin ve yorum yapın" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "Torrenti değerlendirin" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "Yorum yap" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "Değerlendirmem" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "Ortalama değerlendirme" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "Şu anda bir topluluk değerlendirmesi yok" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "Silinmek üzere işaretle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "Seçilmişleri sil" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "İzleyici" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "İzleyici ekle" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "Değişiklikleri kaydet" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_zh.po i2p-2.5.0/apps/i2psnark/locale/messages_zh.po --- i2p-2.4.0/apps/i2psnark/locale/messages_zh.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_zh.po 2024-04-10 02:29:57.000000000 +0000 @@ -9,7 +9,7 @@ # Fosworn D4, 2022 # a478a116a491ba89a1cee347ebcf239b_fd74b84, 2022 # 591313068a9d8b738947e39c2189fca2_35785ab, 2022 -# Scott Rhodes , 2020-2023 +# Scott Rhodes , 2020-2024 # Tommy Lmath , 2016 # walking , 2013 # wwj402 , 2013 @@ -19,9 +19,9 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" -"Last-Translator: Scott Rhodes , 2020-2023\n" +"Last-Translator: Scott Rhodes , 2020-2024\n" "Language-Team: Chinese (China) (http://app.transifex.com/otf/I2P/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,334 +34,338 @@ msgstr "没有更多种子正在运行。" #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P隧道已关闭" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "无法连接至I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "连接I2P时发生错误 - 请检查I2CP设置!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "暗色调" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "亮色调" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "香草白" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "没有对数据文件夹的写入权限。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "无法创建数据目录" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "总上传种子数限制已更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "最低上传种子数限制为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "上传带宽限制改为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "最小上传带宽限制为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "下载前的延迟已更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "刷新时间更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "刷新已禁用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "页面容量更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "新文件将对公共可读" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "新文件不会对公共可读" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "在更改数据目录前停止所有种子" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "数据存放目录必须是绝对路径" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "数据存放目录不存在" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "不是文件夹" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "不可读" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "数据存放目录更新至{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP 选项改为 {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "正在断开旧的I2CP目标" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP设置改为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "无法通过新设置连接,恢复I2CP的旧设置" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "旧设置也无法连接!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "重新连接新I2CP目标" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "\"{0}\"的I2CP监听端口已启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "启用自动启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "禁用自动启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "已启用智能排序" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "已禁用智能排序" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "启用OpenTracker-重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "禁用OpenTracker - 重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT 已启用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT 已禁用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHT 修改生效需要关闭或重启。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "已允许评分" -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "已禁用评分" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "已启用评论。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "已禁用评论。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "评论名设置为{0}。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0}主题已加载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "可折叠面板已启用。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "可折叠面板已禁用。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "设置未改变" -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "OpenTracker列表已改变 - 重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "PT 列表已更改 - 仅对新创建的种子有效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "无法保存设置到{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "种子文件已删除:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "种子文件已从 {0} 移动到 {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "错误:无法添加种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "无法打开 \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "具有相同Hash链接的种子已在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "具有相同数据地址的种子已在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "错误 - 私有种子\"{0}\"中缺少 I2P Tracker" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,程序将仅通过 I2P 中的开放式 Tracker 和 DHT 下载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P Open Tracker,程序将仅通过 DHT 下载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -369,44 +373,44 @@ "torrent." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P Open Tracker 和 DHT,下载先您需要先启用 OpenTracker 或 DHT 。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "无效种子 \"{0}\" " -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "错误: 内存不足,无法为 {0} 创建种子。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "正在连接到I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "种子已添加并开始:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "种子已添加:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "正在获取{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -414,56 +418,56 @@ "DHT." msgstr "OpenTracker被禁用,程序目前没有DHT节点。{0}的下载不会成功,直到您启动另一个种子的下载、重新启用OpenTracker或DHT。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "正在添加{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "已经在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "无法复制种子文件到{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "\"{0}\" ({1}) 含有太多文件!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "\"{0}\" 中没有文件分片!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "\"{0}\" 中文件分片太多,限额为{1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "\"{0}\"({1}B)中分片过大!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "限额为 {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "种子 \"{0}\" 中无数据!" @@ -473,94 +477,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "目前不支持大于 {0}B 的种子 \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "错误:无法删除种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "种子已停止:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "种子已删除:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "{0} 分钟内完成添加" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "正在启动种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "下行带宽限制为{0}KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "上传带宽限制为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "下载已完成: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "种子 {0} 发生错误" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "正在建立 I2P 隧道" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "正在打开I2P隧道并启动所有种子" -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "正在停用所有种子并关闭I2P隧道。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "正在关闭 I2P 隧道,已通知 Tracker。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "已完成对种子 {0} 的重新检查,现在 {1} 已完成" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "已完成对种子 {0} 的重新检查,未变更" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "检查种子 {0} 时出错" @@ -596,1242 +605,1250 @@ msgstr "从{0}获取种子成功" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "匿名的 BitTorrent 客户端" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark 已停止运行" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "路由器已关闭" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "你确定你要删除文件 \\“{0} \\” (下载的数据不会被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "刷新页面" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "点击 \"添加种子\" 按钮来获取种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "清除消息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "状态" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "排序按 {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "隐藏用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "显示用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "文件类型" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "预计剩余时间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "预计剩余时间" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "已接收" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "已下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "大小" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "已发送" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "上传率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "已上传" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "接收速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "下载速度" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "发送速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "上传速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "停止全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "停止全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "启动所有已停止的种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "启动全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "启动全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "无任何种子。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "未载入任何种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "总计" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0}个种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0}个已连接用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "{0}个DHT节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "目标" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "本次会话的目标(路由器身份)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht 调试" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "首页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "第一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "前页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "上一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "下页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "下一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "末页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "最后一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "无法添加内含另一个种子的种子 {0}:{1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "不支持从非 I2P 地址{0}下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "无效的 URL:必须以“{0}”或“{1}”开头。" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "输入 URL 或选择 torrent 文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet 已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "无法删除种子文件:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "下载已删除: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "数据文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "无法删除数据文件:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "无法删除目录:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "目录已经删除: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "无法添加一个以 \".torrent\" 结尾的种子: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "此名称的种子已在运行:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "无法添加包含一个 I2P 目录的种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "无法添加包含另一个种子的种子 {0}:{1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "错误 - 缺少主Tracker则无法添加替换Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "错误 - PT和公共Tracker无法在同一种子中混用。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "种子创建成功\"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "创建种子时发生错误 \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "无法为不存在的数据文件创建种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "创建种子时发生错误 - 必须指定文件或文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "删除选中项目" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "保存 Tracker 设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "已删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "添加 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "请输入有效的 Tracker 名称与链接" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "恢复默认值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "恢复默认 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "正在检查" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "正在分配空间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Tracker错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0}个用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "正在启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "正做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "正在与用户{0}做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "从{1}个对等节点中的{0}个下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "正常" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "正在从节点{0}下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "已连接到节点{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "等待" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "已连接到{1}对等节点中的{0}个" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "没有用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "已停用" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "种子详情" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "注释" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "浏览文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "打开文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "剩余" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "已完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "停止种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "启动种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "启动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "取消下载任务并删除对应种子文件。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "移除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "删除种子及所下载的文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "附属于集群的节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "未知" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "对等节点的目的地(身份)。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Tracker {0} 上的详细信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "从URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "输入种子文件的下载链接(仅支持 I2P ),magnet 链接,或信息散列值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Torrent文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "数据目录" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "请输入保存数据的目录(默认 {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "您也可以将.torrent文件复制到: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "移除一个种子文件 (.torrent) 将导致它中止。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "创建种子" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "做种数据" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "要做种的文件或目录(完整路径或包含在 {0} 目录中)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "创建种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "主 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "备选 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Tracker 服务器类型" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "标准" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "打开" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "私有" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "无" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "数据文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr " 种子和下载/分享的文件存储目录" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "文件对所有人可读" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "给其他本地用户设置文件权限使其能够访问已下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "自动开始种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "当种子被添加时自动启动并且在 I2PSnark 启动时自动重启种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "智能种子排序" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "排序时忽略诸如 ‘a’ 和 ‘the’ 的单词" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "可折叠面板" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "您的浏览器不支持这个功能。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "允许‘添加种子’和‘创建种子’面板被折叠,并且在非嵌入模式下默认折叠。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "语言" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "要手动更改主题,请禁用通用主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "通用主题已开启。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "配置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "刷新时间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "主页面上下载状态的更新频率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "从不" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "启动延迟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "当I2PSnark启动时,在多长时间内加载自动启动的种子?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "页面容量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "每页显示的最大种子数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "限制总上传种子数为" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "同时上传的对等节点数量最大值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "上传带宽限制" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "用于上传的最大带宽限制" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "已分配的最大带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "推荐设置为可用带宽的一半。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "浏览或修改路由器带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "下行带宽限制" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "同时使用OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "启用 DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "使用分布式哈希表发现其他节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "启用评分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "在种子页面显示评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "启用评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "在种子页面显示评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "评论作者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "为你的评论和评级设置作者名称" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "入站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "出站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP主机" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP端口" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP选项" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "保存设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "选择从I2PSnark已知列表中移除的Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "名称" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "网站 URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "发布 URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "标记Tracker为删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "添加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "磁性链接 {0} 无效" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}跳" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "编辑种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "数据位置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "信息哈希" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "主 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Tracker 列表" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "网页做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "已创建" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "创建者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "已添加" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "上次活动" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnet磁性链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "私有种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "剩余" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "已跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "分块数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "分块大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "刷新页面获取结果" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "强制重新检查" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "种子必须停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "检查已下载文件的完整性" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "增加或移除Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "按顺序下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "按顺序下载分片" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "保存偏好" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "找不到资源" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "资源" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "资源不存在" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "下载状态" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "下载优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "上一层文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "音频播放列表" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "预览" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "以高优先级下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "以普通优先级下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "普通" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "不要下载这个文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "设置所有为高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "设置所有为正常" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "忽略所有" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "保存优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "评级和评价" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "评级或评论要求作者名字" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "您发布评论与评级时的作者名字" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "为此种子启用浏览和发布评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "{0}个星星" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "暂无评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "评级和评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "评价种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "添加评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "我的评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "平均评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "暂无可用的社区评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "标记为删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "删除所选" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "增加Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "保存更改" diff -Nru i2p-2.4.0/apps/i2psnark/locale/messages_zh_TW.po i2p-2.5.0/apps/i2psnark/locale/messages_zh_TW.po --- i2p-2.4.0/apps/i2psnark/locale/messages_zh_TW.po 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/locale/messages_zh_TW.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-04 23:26+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-02-13 12:00+0000\n" "Last-Translator: duck \n" "Language-Team: Chinese (Taiwan) (http://app.transifex.com/otf/I2P/language/zh_TW/)\n" @@ -23,334 +23,338 @@ msgstr "没有更多种子正在运行。" #: ../java/src/org/klomp/snark/IdleChecker.java:77 -#: ../java/src/org/klomp/snark/SnarkManager.java:3263 -#: ../java/src/org/klomp/snark/SnarkManager.java:3274 +#: ../java/src/org/klomp/snark/SnarkManager.java:3313 +#: ../java/src/org/klomp/snark/SnarkManager.java:3324 msgid "I2P tunnel closed." msgstr "I2P隧道已关闭" #: ../java/src/org/klomp/snark/MagnetURI.java:50 #: ../java/src/org/klomp/snark/MagnetURI.java:60 -#: ../java/src/org/klomp/snark/SnarkManager.java:2872 +#: ../java/src/org/klomp/snark/SnarkManager.java:2922 msgid "Magnet" msgstr "Magnet" #: ../java/src/org/klomp/snark/Snark.java:595 -#: ../java/src/org/klomp/snark/SnarkManager.java:372 -#: ../java/src/org/klomp/snark/SnarkManager.java:1752 -#: ../java/src/org/klomp/snark/SnarkManager.java:2618 -#: ../java/src/org/klomp/snark/SnarkManager.java:2682 +#: ../java/src/org/klomp/snark/SnarkManager.java:380 +#: ../java/src/org/klomp/snark/SnarkManager.java:1801 +#: ../java/src/org/klomp/snark/SnarkManager.java:2667 +#: ../java/src/org/klomp/snark/SnarkManager.java:2732 msgid "Unable to connect to I2P" msgstr "无法连接至I2P" #: ../java/src/org/klomp/snark/Snark.java:597 -#: ../java/src/org/klomp/snark/SnarkManager.java:1754 -#: ../java/src/org/klomp/snark/SnarkManager.java:2620 -#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1803 +#: ../java/src/org/klomp/snark/SnarkManager.java:2669 +#: ../java/src/org/klomp/snark/SnarkManager.java:2734 msgid "Error connecting to I2P - check your I2CP settings!" msgstr "连接I2P时发生错误 - 请检查I2CP设置!" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "dark" msgstr "暗色調" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "light" msgstr "亮色調" #. Translators: Translate "ubergine" as "aubergine" or "eggplant" or "purple" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "ubergine" msgstr "" -#: ../java/src/org/klomp/snark/SnarkManager.java:148 +#: ../java/src/org/klomp/snark/SnarkManager.java:151 msgid "vanilla" msgstr "香草白" -#: ../java/src/org/klomp/snark/SnarkManager.java:1024 -#: ../java/src/org/klomp/snark/SnarkManager.java:1178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:775 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1114 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1387 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498 +#: ../java/src/org/klomp/snark/SnarkManager.java:1046 +#: ../java/src/org/klomp/snark/SnarkManager.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1391 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 msgid "No write permissions for data directory" msgstr "没有对数据文件夹的写入权限。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1027 -#: ../java/src/org/klomp/snark/SnarkManager.java:1171 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 +#: ../java/src/org/klomp/snark/SnarkManager.java:1049 +#: ../java/src/org/klomp/snark/SnarkManager.java:1210 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:772 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207 msgid "Data directory cannot be created" msgstr "无法创建数据目录" -#: ../java/src/org/klomp/snark/SnarkManager.java:1089 +#: ../java/src/org/klomp/snark/SnarkManager.java:1111 #, java-format msgid "Total uploaders limit changed to {0}" msgstr "总上传种子数限制已更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1091 +#: ../java/src/org/klomp/snark/SnarkManager.java:1113 #, java-format msgid "Minimum total uploaders limit is {0}" msgstr "最低上传种子数限制为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1103 +#: ../java/src/org/klomp/snark/SnarkManager.java:1126 #, java-format msgid "Up BW limit changed to {0}KBps" msgstr "上传带宽限制改为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1105 +#: ../java/src/org/klomp/snark/SnarkManager.java:1128 #, java-format msgid "Minimum up bandwidth limit is {0}KBps" msgstr "最小上传带宽限制为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:1117 +#: ../java/src/org/klomp/snark/SnarkManager.java:1154 #, java-format msgid "Startup delay changed to {0}" msgstr "下载前的延迟已更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1128 +#: ../java/src/org/klomp/snark/SnarkManager.java:1165 #, java-format msgid "Refresh time changed to {0}" msgstr "刷新时间更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1130 +#: ../java/src/org/klomp/snark/SnarkManager.java:1167 msgid "Refresh disabled" msgstr "刷新已禁用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1146 +#: ../java/src/org/klomp/snark/SnarkManager.java:1183 #, java-format msgid "Page size changed to {0}" msgstr "页面容量更新为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1156 +#: ../java/src/org/klomp/snark/SnarkManager.java:1193 msgid "New files will be publicly readable" msgstr "新文件将对公共可读" -#: ../java/src/org/klomp/snark/SnarkManager.java:1158 +#: ../java/src/org/klomp/snark/SnarkManager.java:1195 msgid "New files will not be publicly readable" msgstr "新文件不会对公共可读" -#: ../java/src/org/klomp/snark/SnarkManager.java:1166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1199 +#: ../java/src/org/klomp/snark/SnarkManager.java:1203 +msgid "Stop all torrents before changing data directory" +msgstr "在更改数据目录前停止所有种子" + +#: ../java/src/org/klomp/snark/SnarkManager.java:1205 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203 msgid "Data directory must be an absolute path" msgstr "数据存放目录必须是绝对路径" -#: ../java/src/org/klomp/snark/SnarkManager.java:1170 +#: ../java/src/org/klomp/snark/SnarkManager.java:1209 msgid "Data directory does not exist" msgstr "数据存放目录不存在" -#: ../java/src/org/klomp/snark/SnarkManager.java:1173 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771 +#: ../java/src/org/klomp/snark/SnarkManager.java:1212 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:774 msgid "Not a directory" msgstr "不是文件夹" -#: ../java/src/org/klomp/snark/SnarkManager.java:1175 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773 +#: ../java/src/org/klomp/snark/SnarkManager.java:1214 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776 msgid "Unreadable" msgstr "无法读取" -#: ../java/src/org/klomp/snark/SnarkManager.java:1182 +#: ../java/src/org/klomp/snark/SnarkManager.java:1228 #, java-format msgid "Data directory changed to {0}" msgstr "数据存放目录更新至{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1263 +#: ../java/src/org/klomp/snark/SnarkManager.java:1310 msgid "I2CP and tunnel changes will take effect after stopping all torrents" msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1267 +#: ../java/src/org/klomp/snark/SnarkManager.java:1314 #, java-format msgid "I2CP options changed to {0}" msgstr "I2CP 选项改为 {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1273 +#: ../java/src/org/klomp/snark/SnarkManager.java:1320 msgid "Disconnecting old I2CP destination" msgstr "正在断开旧的I2CP目标" -#: ../java/src/org/klomp/snark/SnarkManager.java:1275 +#: ../java/src/org/klomp/snark/SnarkManager.java:1322 #, java-format msgid "I2CP settings changed to {0}" msgstr "I2CP设置改为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1280 +#: ../java/src/org/klomp/snark/SnarkManager.java:1329 msgid "" "Unable to connect with the new settings, reverting to the old I2CP settings" msgstr "无法通过新设置连接,恢复I2CP的旧设置" -#: ../java/src/org/klomp/snark/SnarkManager.java:1284 +#: ../java/src/org/klomp/snark/SnarkManager.java:1333 msgid "Unable to reconnect with the old settings!" msgstr "旧设置也无法连接!" -#: ../java/src/org/klomp/snark/SnarkManager.java:1286 +#: ../java/src/org/klomp/snark/SnarkManager.java:1335 msgid "Reconnected on the new I2CP destination" msgstr "重新连接新I2CP目标" -#: ../java/src/org/klomp/snark/SnarkManager.java:1293 +#: ../java/src/org/klomp/snark/SnarkManager.java:1342 #, java-format msgid "I2CP listener restarted for \"{0}\"" msgstr "\"{0}\"的I2CP监听端口已启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1306 +#: ../java/src/org/klomp/snark/SnarkManager.java:1355 msgid "Enabled autostart" msgstr "启用自动启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1308 +#: ../java/src/org/klomp/snark/SnarkManager.java:1357 msgid "Disabled autostart" msgstr "禁用自动启动" -#: ../java/src/org/klomp/snark/SnarkManager.java:1315 +#: ../java/src/org/klomp/snark/SnarkManager.java:1364 msgid "Enabled smart sort" msgstr "已启用智能排序" -#: ../java/src/org/klomp/snark/SnarkManager.java:1317 +#: ../java/src/org/klomp/snark/SnarkManager.java:1366 msgid "Disabled smart sort" msgstr "已禁用智能排序" -#: ../java/src/org/klomp/snark/SnarkManager.java:1324 +#: ../java/src/org/klomp/snark/SnarkManager.java:1373 msgid "Enabled open trackers - torrent restart required to take effect." msgstr "启用OpenTracker-重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1326 +#: ../java/src/org/klomp/snark/SnarkManager.java:1375 msgid "Disabled open trackers - torrent restart required to take effect." msgstr "禁用OpenTracker - 重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1333 +#: ../java/src/org/klomp/snark/SnarkManager.java:1382 msgid "Enabled DHT." msgstr "DHT 已启用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1335 +#: ../java/src/org/klomp/snark/SnarkManager.java:1384 msgid "Disabled DHT." msgstr "DHT 已禁用" -#: ../java/src/org/klomp/snark/SnarkManager.java:1337 +#: ../java/src/org/klomp/snark/SnarkManager.java:1386 msgid "DHT change requires tunnel shutdown and reopen" msgstr "DHT 修改生效需要关闭或重启。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1344 +#: ../java/src/org/klomp/snark/SnarkManager.java:1393 msgid "Enabled Ratings." msgstr "已允许评分" -#: ../java/src/org/klomp/snark/SnarkManager.java:1346 +#: ../java/src/org/klomp/snark/SnarkManager.java:1395 msgid "Disabled Ratings." msgstr "已禁用评分" -#: ../java/src/org/klomp/snark/SnarkManager.java:1353 +#: ../java/src/org/klomp/snark/SnarkManager.java:1402 msgid "Enabled Comments." msgstr "已启用评论。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1355 +#: ../java/src/org/klomp/snark/SnarkManager.java:1404 msgid "Disabled Comments." msgstr "已禁用评论。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1368 +#: ../java/src/org/klomp/snark/SnarkManager.java:1417 #, java-format msgid "Comments name set to {0}." msgstr "评论名设置为{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1375 +#: ../java/src/org/klomp/snark/SnarkManager.java:1424 #, java-format msgid "{0} theme loaded." msgstr "{0}主题已加载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1382 +#: ../java/src/org/klomp/snark/SnarkManager.java:1431 msgid "Collapsible panels enabled." msgstr "可折叠面板已启用。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1433 msgid "Collapsible panels disabled." msgstr "可折叠面板已禁用。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1394 +#: ../java/src/org/klomp/snark/SnarkManager.java:1443 msgid "Configuration unchanged." msgstr "设置未改变" -#: ../java/src/org/klomp/snark/SnarkManager.java:1426 +#: ../java/src/org/klomp/snark/SnarkManager.java:1475 msgid "Open Tracker list changed - torrent restart required to take effect." msgstr "OpenTracker列表已改变 - 重新启动种子后生效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1436 +#: ../java/src/org/klomp/snark/SnarkManager.java:1485 msgid "Private tracker list changed - affects newly created torrents only." msgstr "PT 列表已更改 - 仅对新创建的种子有效" -#: ../java/src/org/klomp/snark/SnarkManager.java:1482 +#: ../java/src/org/klomp/snark/SnarkManager.java:1531 #, java-format msgid "Unable to save the config to {0}" msgstr "无法保存设置到{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1586 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1384 +#: ../java/src/org/klomp/snark/SnarkManager.java:1635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 #, java-format msgid "Torrent file deleted: {0}" msgstr "种子文件已删除:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1589 +#: ../java/src/org/klomp/snark/SnarkManager.java:1638 #, java-format msgid "Torrent file moved from {0} to {1}" msgstr "种子文件已从 {0} 移动到 {1}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1623 -#: ../java/src/org/klomp/snark/SnarkManager.java:2926 -#: ../java/src/org/klomp/snark/SnarkManager.java:2932 -#: ../java/src/org/klomp/snark/SnarkManager.java:2936 +#: ../java/src/org/klomp/snark/SnarkManager.java:1672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2976 +#: ../java/src/org/klomp/snark/SnarkManager.java:2982 +#: ../java/src/org/klomp/snark/SnarkManager.java:2986 #, java-format msgid "Error: Could not add the torrent {0}" msgstr "错误:无法添加种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1638 -#: ../java/src/org/klomp/snark/SnarkManager.java:1726 -#: ../java/src/org/klomp/snark/SnarkManager.java:3106 +#: ../java/src/org/klomp/snark/SnarkManager.java:1687 +#: ../java/src/org/klomp/snark/SnarkManager.java:1775 +#: ../java/src/org/klomp/snark/SnarkManager.java:3156 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1138 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" #. catch this here so we don't try do delete it below -#: ../java/src/org/klomp/snark/SnarkManager.java:1648 +#: ../java/src/org/klomp/snark/SnarkManager.java:1697 #, java-format msgid "Cannot open \"{0}\"" msgstr "无法打开 \"{0}\"" #. TODO - if the existing one is a magnet, delete it and add the metainfo #. instead? -#: ../java/src/org/klomp/snark/SnarkManager.java:1667 -#: ../java/src/org/klomp/snark/SnarkManager.java:1835 -#: ../java/src/org/klomp/snark/SnarkManager.java:1924 +#: ../java/src/org/klomp/snark/SnarkManager.java:1716 +#: ../java/src/org/klomp/snark/SnarkManager.java:1884 +#: ../java/src/org/klomp/snark/SnarkManager.java:1973 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268 #, java-format msgid "Torrent with this info hash is already running: {0}" msgstr "具有相同Hash链接的种子已在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1673 -#: ../java/src/org/klomp/snark/SnarkManager.java:1930 +#: ../java/src/org/klomp/snark/SnarkManager.java:1722 +#: ../java/src/org/klomp/snark/SnarkManager.java:1979 #, java-format msgid "Torrent with the same data location is already running: {0}" msgstr "具有相同数据地址的种子已在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1679 +#: ../java/src/org/klomp/snark/SnarkManager.java:1728 #, java-format msgid "ERROR - No I2P trackers in private torrent \"{0}\"" msgstr "错误 - 私有种子\"{0}\"中缺少 I2P Tracker" -#: ../java/src/org/klomp/snark/SnarkManager.java:1681 +#: ../java/src/org/klomp/snark/SnarkManager.java:1730 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and" " DHT only." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,程序将仅通过 I2P 中的开放式 Tracker 和 DHT 下载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1684 +#: ../java/src/org/klomp/snark/SnarkManager.java:1733 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will " "announce to DHT only." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P Open Tracker,程序将仅通过 DHT 下载。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1686 +#: ../java/src/org/klomp/snark/SnarkManager.java:1735 #, java-format msgid "" "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are " @@ -358,44 +362,44 @@ "torrent." msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P Open Tracker 和 DHT,下载先您需要先启用 OpenTracker 或 DHT 。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1712 +#: ../java/src/org/klomp/snark/SnarkManager.java:1761 #, java-format msgid "Torrent in \"{0}\" is invalid" msgstr "无效种子 \"{0}\" " -#: ../java/src/org/klomp/snark/SnarkManager.java:1718 +#: ../java/src/org/klomp/snark/SnarkManager.java:1767 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:195 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1183 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1187 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1296 #, java-format msgid "ERROR - Out of memory, cannot create torrent from {0}" msgstr "错误: 内存不足,无法为 {0} 创建种子。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1745 -#: ../java/src/org/klomp/snark/SnarkManager.java:2599 -#: ../java/src/org/klomp/snark/SnarkManager.java:2610 +#: ../java/src/org/klomp/snark/SnarkManager.java:1794 +#: ../java/src/org/klomp/snark/SnarkManager.java:2648 +#: ../java/src/org/klomp/snark/SnarkManager.java:2659 msgid "Connecting to I2P" msgstr "正在连接到I2P" -#: ../java/src/org/klomp/snark/SnarkManager.java:1763 -#: ../java/src/org/klomp/snark/SnarkManager.java:1765 +#: ../java/src/org/klomp/snark/SnarkManager.java:1812 +#: ../java/src/org/klomp/snark/SnarkManager.java:1814 #, java-format msgid "Torrent added and started: {0}" msgstr "种子已添加并开始:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1767 -#: ../java/src/org/klomp/snark/SnarkManager.java:1769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1816 +#: ../java/src/org/klomp/snark/SnarkManager.java:1818 #, java-format msgid "Torrent added: {0}" msgstr "种子已添加:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1847 +#: ../java/src/org/klomp/snark/SnarkManager.java:1896 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93 #, java-format msgid "Fetching {0}" msgstr "正在获取{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1853 +#: ../java/src/org/klomp/snark/SnarkManager.java:1902 #, java-format msgid "" "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not " @@ -403,56 +407,56 @@ "DHT." msgstr "OpenTracker被禁用,程序目前没有DHT节点。{0}的下载不会成功,直到您启动另一个种子的下载、重新启用OpenTracker或DHT。" -#: ../java/src/org/klomp/snark/SnarkManager.java:1857 +#: ../java/src/org/klomp/snark/SnarkManager.java:1906 #, java-format msgid "Adding {0}" msgstr "正在添加{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1890 +#: ../java/src/org/klomp/snark/SnarkManager.java:1939 #, java-format msgid "Download already running: {0}" msgstr "已经在下载中:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:1940 -#: ../java/src/org/klomp/snark/SnarkManager.java:1950 -#: ../java/src/org/klomp/snark/SnarkManager.java:1976 -#: ../java/src/org/klomp/snark/SnarkManager.java:2769 +#: ../java/src/org/klomp/snark/SnarkManager.java:1989 +#: ../java/src/org/klomp/snark/SnarkManager.java:1999 +#: ../java/src/org/klomp/snark/SnarkManager.java:2025 +#: ../java/src/org/klomp/snark/SnarkManager.java:2819 #, java-format msgid "Failed to copy torrent file to {0}" msgstr "无法复制种子文件到{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2455 +#: ../java/src/org/klomp/snark/SnarkManager.java:2504 #: ../java/src/org/klomp/snark/Storage.java:294 #, java-format msgid "Too many files in \"{0}\" ({1})!" msgstr "\"{0}\" ({1}) 含有太多文件!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2460 +#: ../java/src/org/klomp/snark/SnarkManager.java:2509 #, java-format msgid "Torrent file \"{0}\" cannot end in \".torrent\"!" msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2462 +#: ../java/src/org/klomp/snark/SnarkManager.java:2511 #, java-format msgid "No pieces in \"{0}\"!" msgstr "\"{0}\" 中没有文件分片!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2464 +#: ../java/src/org/klomp/snark/SnarkManager.java:2513 #, java-format msgid "Too many pieces in \"{0}\", limit is {1}!" msgstr "\"{0}\" 中文件分片太多,限额为{1}!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2466 +#: ../java/src/org/klomp/snark/SnarkManager.java:2515 #, java-format msgid "Pieces are too large in \"{0}\" ({1}B)!" msgstr "\"{0}\"({1}B)中分片过大!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2467 +#: ../java/src/org/klomp/snark/SnarkManager.java:2516 #, java-format msgid "Limit is {0}B" msgstr "限额为 {0}B" -#: ../java/src/org/klomp/snark/SnarkManager.java:2469 +#: ../java/src/org/klomp/snark/SnarkManager.java:2518 #, java-format msgid "Torrent \"{0}\" has no data!" msgstr "种子 \"{0}\" 中无数据!" @@ -462,94 +466,99 @@ #. if (lengths != null) #. for (int i = 0; i < lengths.size(); i++) #. System.out.println("File " + i + " is " + lengths.get(i) + " long."); -#: ../java/src/org/klomp/snark/SnarkManager.java:2478 +#: ../java/src/org/klomp/snark/SnarkManager.java:2527 #, java-format msgid "Torrents larger than {0}B are not supported yet \"{1}\"!" msgstr "目前不支持大于 {0}B 的种子 \"{1}\"!" -#: ../java/src/org/klomp/snark/SnarkManager.java:2495 +#: ../java/src/org/klomp/snark/SnarkManager.java:2544 #, java-format msgid "Error: Could not remove the torrent {0}" msgstr "错误:无法删除种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2518 -#: ../java/src/org/klomp/snark/SnarkManager.java:2537 +#: ../java/src/org/klomp/snark/SnarkManager.java:2567 +#: ../java/src/org/klomp/snark/SnarkManager.java:2586 #, java-format msgid "Torrent stopped: {0}" msgstr "种子已停止:{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2557 +#: ../java/src/org/klomp/snark/SnarkManager.java:2606 #, java-format msgid "Torrent removed: \"{0}\"" msgstr "种子已删除:\"{0}\"" -#: ../java/src/org/klomp/snark/SnarkManager.java:2573 +#: ../java/src/org/klomp/snark/SnarkManager.java:2622 #, java-format msgid "Adding torrents in {0}" msgstr "{0} 分钟内完成添加" #. addMessage(_t("Metainfo received for {0}", snark.getName())); -#: ../java/src/org/klomp/snark/SnarkManager.java:2635 -#: ../java/src/org/klomp/snark/SnarkManager.java:2766 -#: ../java/src/org/klomp/snark/SnarkManager.java:3112 +#: ../java/src/org/klomp/snark/SnarkManager.java:2684 +#: ../java/src/org/klomp/snark/SnarkManager.java:2816 +#: ../java/src/org/klomp/snark/SnarkManager.java:3162 #, java-format msgid "Starting up torrent {0}" msgstr "正在启动种子{0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2647 -#: ../java/src/org/klomp/snark/SnarkManager.java:2672 +#: ../java/src/org/klomp/snark/SnarkManager.java:2696 +#, java-format +msgid "Down bandwidth limit is {0} KBps" +msgstr "下行带宽限制为{0}KBps" + +#: ../java/src/org/klomp/snark/SnarkManager.java:2697 +#: ../java/src/org/klomp/snark/SnarkManager.java:2722 #, java-format msgid "Up bandwidth limit is {0} KBps" msgstr "上传带宽限制为 {0} KB/s" -#: ../java/src/org/klomp/snark/SnarkManager.java:2706 -#: ../java/src/org/klomp/snark/SnarkManager.java:2708 +#: ../java/src/org/klomp/snark/SnarkManager.java:2756 +#: ../java/src/org/klomp/snark/SnarkManager.java:2758 #, java-format msgid "Download finished: {0}" msgstr "下载已完成: {0}" -#: ../java/src/org/klomp/snark/SnarkManager.java:2781 +#: ../java/src/org/klomp/snark/SnarkManager.java:2831 #, java-format msgid "Error on torrent {0}" msgstr "种子 {0} 发生错误" -#: ../java/src/org/klomp/snark/SnarkManager.java:2826 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:369 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2192 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3314 +#: ../java/src/org/klomp/snark/SnarkManager.java:2876 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:372 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3337 msgid "I2PSnark" msgstr "I2PSnark" -#: ../java/src/org/klomp/snark/SnarkManager.java:3111 +#: ../java/src/org/klomp/snark/SnarkManager.java:3161 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130 msgid "Opening the I2P tunnel" msgstr "正在建立 I2P 隧道" -#: ../java/src/org/klomp/snark/SnarkManager.java:3129 +#: ../java/src/org/klomp/snark/SnarkManager.java:3179 msgid "Opening the I2P tunnel and starting all torrents." msgstr "正在打开I2P隧道并启动所有种子" -#: ../java/src/org/klomp/snark/SnarkManager.java:3205 -#: ../java/src/org/klomp/snark/SnarkManager.java:3221 +#: ../java/src/org/klomp/snark/SnarkManager.java:3255 +#: ../java/src/org/klomp/snark/SnarkManager.java:3271 msgid "Stopping all torrents and closing the I2P tunnel." msgstr "正在停用所有种子并关闭I2P隧道。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3248 +#: ../java/src/org/klomp/snark/SnarkManager.java:3298 msgid "Closing I2P tunnel after notifying trackers." msgstr "正在关闭 I2P 隧道,已通知 Tracker。" -#: ../java/src/org/klomp/snark/SnarkManager.java:3318 +#: ../java/src/org/klomp/snark/SnarkManager.java:3368 #, java-format msgid "Finished recheck of torrent {0}, now {1} complete" msgstr "已完成对种子 {0} 的重新检查,现在 {1} 已完成" -#: ../java/src/org/klomp/snark/SnarkManager.java:3320 +#: ../java/src/org/klomp/snark/SnarkManager.java:3370 #, java-format msgid "Finished recheck of torrent {0}, unchanged" msgstr "已完成对种子 {0} 的重新检查,未变更" -#: ../java/src/org/klomp/snark/SnarkManager.java:3324 +#: ../java/src/org/klomp/snark/SnarkManager.java:3374 #, java-format msgid "Error checking the torrent {0}" msgstr "检查种子 {0} 时出错" @@ -585,1242 +594,1250 @@ msgstr "从{0}获取种子成功" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1140 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1144 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1180 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1255 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1294 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2653 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3031 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2658 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3054 msgid "Configuration" msgstr "設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:321 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322 msgid "Anonymous BitTorrent Client" msgstr "匿名的 BitTorrent 客户端" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "I2PSnark has stopped" msgstr "I2PSnark 已停止运行" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:335 msgid "Router is down" msgstr "路由器已關閉" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:345 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 #, java-format msgid "" "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will " "not be deleted) ?" msgstr "你确定你要删除文件 \\“{0} \\” (下载的数据不会被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:347 #, java-format msgid "" "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded " "data?" msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:362 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 msgid "Torrents" msgstr "匿名BT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368 msgid "Refresh page" msgstr "刷新頁面" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410 msgid "Click \"Add torrent\" button to fetch torrent" msgstr "点击 \"添加种子\" 按钮来获取种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474 msgid "clear messages" msgstr "清除消息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:542 msgid "Status" msgstr "狀態" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3809 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3833 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3832 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3856 #, java-format msgid "Sort by {0}" msgstr "排序按 {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:564 msgid "Hide Peers" msgstr "隐藏用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:570 msgid "Show Peers" msgstr "显示用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:591 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3302 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3700 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3325 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3705 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3723 msgid "Torrent" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "File type" msgstr "文件类型" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:609 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 msgid "ETA" msgstr "ETA" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:612 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615 msgid "Estimated time remaining" msgstr "预计剩余时间" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 msgid "RX" msgstr "接包" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641 msgid "Downloaded" msgstr "Downloaded" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3556 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3807 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:640 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3579 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3830 msgid "Size" msgstr "大小" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 msgid "TX" msgstr "發包" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3586 msgid "Upload ratio" msgstr "上传率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672 msgid "Uploaded" msgstr "已经上传" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 msgid "RX Rate" msgstr "接收速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:686 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687 msgid "Down Rate" msgstr "下载速度" #. Translators: Please keep short or translate as " " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 msgid "TX Rate" msgstr "发送速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:702 msgid "Up Rate" msgstr "上传速度" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:715 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718 msgid "Stop all torrents and the I2P tunnel" msgstr "停止全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:717 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720 msgid "Stop All" msgstr "全部停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:731 msgid "Start all stopped torrents" msgstr "启动所有已停止的种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:733 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:747 msgid "Start All" msgstr "启动全部" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745 msgid "Start all torrents and the I2P tunnel" msgstr "启动全部种子及I2P隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:777 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:780 msgid "No torrents found." msgstr "无任何种子。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782 msgid "No torrents loaded." msgstr "未载入任何种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:790 msgid "Totals" msgstr "总计" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792 #, java-format msgid "1 torrent" msgid_plural "{0} torrents" msgstr[0] "{0}个种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:797 #, java-format msgid "1 connected peer" msgid_plural "{0} connected peers" msgstr[0] "{0}个已连接用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:804 #, java-format msgid "1 DHT peer" msgid_plural "{0} DHT peers" msgstr[0] "{0}个DHT节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812 msgid "Dest" msgstr "目标" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814 msgid "Our destination (identity) for this session" msgstr "本次会话的目标(路由器身份)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839 msgid "Dht Debug" msgstr "Dht 调试" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First" msgstr "第一" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026 msgid "First page" msgstr "第一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Prev" msgstr "Prev" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1032 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1036 msgid "Previous page" msgstr "上一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next" msgstr "下一個" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069 msgid "Next page" msgstr "下一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last" msgstr "最後" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1073 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077 msgid "Last page" msgstr "最后一页" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1213 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1217 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 #, java-format msgid "Cannot add torrent {0} inside another torrent: {1}" msgstr "无法添加内含另一个种子的种子 {0}:{1}" #. TODO -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230 #, java-format msgid "Download from non-I2P location {0} is not supported" msgstr "不支持从非 I2P 地址{0}下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 #, java-format msgid "Invalid URL: Must start with \"{0}\" or \"{1}\"" msgstr "不支持的 URL:必须以“{0}”或“{1}”开头。" #. no file or URL specified -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1303 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1307 msgid "Enter URL or select torrent file" msgstr "输入 URL 或选择 torrent 文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1375 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379 #, java-format msgid "Magnet deleted: {0}" msgstr "Magnet 已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1353 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1357 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1392 #, java-format msgid "Torrent file could not be deleted: {0}" msgstr "种子文件不能删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1377 #, java-format msgid "Download deleted: {0}" msgstr "下载已删除: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1403 #, java-format msgid "Data file deleted: {0}" msgstr "数据文件已删除:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1415 #, java-format msgid "Data file could not be deleted: {0}" msgstr "无法删除数据文件:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1432 #, java-format msgid "Directory could not be deleted: {0}" msgstr "无法删除目录:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1440 #, java-format msgid "Directory deleted: {0}" msgstr "目录已经删除: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 #, java-format msgid "Cannot add a torrent ending in \".torrent\": {0}" msgstr "无法添加一个以 \".torrent\" 结尾的种子: {0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1508 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1513 #, java-format msgid "Torrent with this name is already running: {0}" msgstr "此名称的种子已在运行:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1519 #, java-format msgid "Cannot add a torrent including an I2P directory: {0}" msgstr "无法添加包含一个 I2P 目录的种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534 #, java-format msgid "Cannot add torrent {0} including another torrent: {1}" msgstr "无法添加包含另一个种子的种子 {0}:{1}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1555 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560 msgid "Error - Cannot include alternate trackers without a primary tracker" msgstr "错误 - 缺少主Tracker则无法添加替换Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1568 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1573 msgid "Error - Cannot mix private and public trackers in a torrent" msgstr "错误 - PT和公共Tracker无法在同一种子中混用。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1590 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1595 #, java-format msgid "Torrent created for \"{0}\"" msgstr "种子创建成功\"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1597 #, java-format msgid "" "Many I2P trackers require you to register new torrents before seeding - " "please do so before starting \"{0}\"" msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1594 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1599 #, java-format msgid "Error creating a torrent for \"{0}\"" msgstr "创建种子时发生错误 \"{0}\"" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1598 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1603 #, java-format msgid "Cannot create a torrent for the nonexistent data: {0}" msgstr "无法为不存在的数据文件创建种子:{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1601 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1606 msgid "Error creating torrent - you must enter a file or directory" msgstr "创建种子时发生错误 - 必须指定文件或文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3015 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038 msgid "Delete selected" msgstr "刪除選中項目" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3040 msgid "Save tracker configuration" msgstr "保存 Tracker 设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689 msgid "Removed" msgstr "已刪除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3014 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3016 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4496 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3037 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4519 msgid "Add tracker" msgstr "添加 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1742 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 msgid "Enter valid tracker name and URLs" msgstr "请输入有效的 Tracker 名称与链接" #. "\n" + -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1744 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3019 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1749 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3042 msgid "Restore defaults" msgstr "恢復預設值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1747 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1752 msgid "Restored default trackers" msgstr "恢复默认 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1860 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1861 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3621 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1866 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3644 msgid "Checking" msgstr "正在检查" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1864 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1865 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3628 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1869 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 msgid "Allocating" msgstr "正在分配空间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1885 msgid "Tracker Error" msgstr "Tracker错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1882 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1915 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1920 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1932 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1925 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1937 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1943 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1953 #, java-format msgid "1 peer" msgid_plural "{0} peers" msgstr[0] "{0}个用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1892 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3626 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1898 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3649 msgid "Starting" msgstr "啟動中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1902 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 msgid "Seeding" msgstr "做种中" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1903 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1908 #, java-format msgid "Seeding to {0} peer" msgid_plural "Seeding to {0} peers" msgstr[0] "正在与用户{0}做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1907 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1923 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1924 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3552 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3895 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1912 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3575 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3918 msgid "Complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #, java-format msgid "Downloading from {0} of {1} peers in swarm" msgstr "从{1}个对等节点中的{0}下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1928 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1929 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1933 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 msgid "OK" msgstr "正常" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 #, java-format msgid "Downloading from {0} peer" msgid_plural "Downloading from {0} peers" msgstr[0] "正在从节点{0}下载" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #, java-format msgid "Connected to {0} peer" msgid_plural "Connected to {0} peers" msgstr[0] "已连接到节点{0}" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1939 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1944 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1946 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 msgid "Stalled" msgstr "等待" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1945 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 #, java-format msgid "Connected to {0} of {1} peers in swarm" msgstr "已连接到{1}对等节点中的{0}个" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1950 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1956 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960 msgid "No Peers" msgstr "没有用户" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1962 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1963 msgid "Stopped" msgstr "已停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1993 msgid "Torrent details" msgstr "种子详情" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2015 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4253 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4276 msgid "Comments" msgstr "評論" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2039 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044 msgid "View files" msgstr "浏览文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2041 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046 msgid "Open file" msgstr "打开文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3908 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2064 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3931 msgid "remaining" msgstr "剩余" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2067 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3494 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3517 msgid "Completed" msgstr "已完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2105 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2110 msgid "Stop the torrent" msgstr "停止种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2107 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3633 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2112 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3656 msgid "Stop" msgstr "停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2120 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2125 msgid "Start the torrent" msgstr "启动种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2122 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3635 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2127 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3658 msgid "Start" msgstr "啟動" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2135 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140 msgid "Remove the torrent from the active list, deleting the .torrent file" msgstr "取消下载任务并删除对应种子文件。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2139 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144 msgid "Remove" msgstr "刪除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2159 msgid "Delete the .torrent file and the associated data files" msgstr "删除种子及所下载的文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4449 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2163 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4472 msgid "Delete" msgstr "刪除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2179 msgid "Peer attached to swarm" msgstr "附属于集群的节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2244 msgid "Unknown" msgstr "未知" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2254 msgid "Destination (identity) of peer" msgstr "对等节点的目的地(身份)。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2265 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2270 msgid "Seed" msgstr "种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2296 msgid "Uninteresting (The peer has no pieces we need)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2293 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2298 msgid "Choked (The peer is not allowing us to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2313 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2318 msgid "Uninterested (We have no pieces the peer needs)" msgstr "无需要部分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2315 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2320 msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2431 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436 #, java-format msgid "Details at {0} tracker" msgstr "Tracker {0} 上的详细信息" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2453 msgid "Info" msgstr "資訊 Info" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2529 msgid "Add Torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2528 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2533 msgid "From URL" msgstr "从URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2531 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2536 msgid "" "Enter the torrent file download URL (I2P only), magnet link, or info hash" msgstr "输入种子文件的下载链接(仅支持 I2P ),magnet 链接,或信息散列值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2539 msgid "Add torrent" msgstr "添加种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2537 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3348 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2542 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3371 msgid "Torrent file" msgstr "Torrent文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2541 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2546 msgid "Data dir" msgstr "数据目录" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2544 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2549 #, java-format msgid "Enter the directory to save the data in (default {0})" msgstr "请输入保存数据的目录(默认 {0})" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2553 #, java-format msgid "You can also copy .torrent files to: {0}." msgstr "您也可以将.torrent文件复制到: {0}." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2550 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2555 msgid "Removing a .torrent will cause it to stop." msgstr "移除一个种子文件 (.torrent) 将导致它中止。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2563 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2568 msgid "Create Torrent" msgstr "创建种子" #. out.write("From file:
\n"); -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2571 msgid "Data to seed" msgstr "做种数据" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2570 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575 #, java-format msgid "File or directory to seed (full path or within the directory {0} )" msgstr "要做种的文件或目录(完整路径或包含在 {0} 目录中)" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2573 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 msgid "Create torrent" msgstr "创建种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2576 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2945 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2581 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968 msgid "Trackers" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2578 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4448 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4481 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2583 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4471 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4504 msgid "Primary" msgstr "主要的" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2580 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2585 msgid "Alternates" msgstr "备选 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2582 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2587 msgid "Tracker Type" msgstr "Tracker 服务器类型" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2606 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2955 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978 msgid "Standard" msgstr "標準" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2608 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2957 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3951 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2613 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3974 msgid "Open" msgstr "開啟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2610 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2959 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2615 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982 msgid "Private" msgstr "私密" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2614 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2619 msgid "none" msgstr "無" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2657 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662 msgid "Data directory" msgstr "数据文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2660 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 msgid "Directory where torrents and downloaded/shared files are stored" msgstr " 种子和下载/分享的文件存储目录" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2665 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2670 msgid "Files readable by all" msgstr "文件对所有人可读" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2674 msgid "" "Set file permissions to allow other local users to access the downloaded " "files" msgstr "给其他本地用户设置文件权限使其能够访问已下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2673 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2678 msgid "Auto start torrents" msgstr "自动开始种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2682 msgid "" "Automatically start torrents when added and restart torrents when I2PSnark " "starts" msgstr "当种子被添加时自动启动并且在 I2PSnark 启动时自动重启种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2686 msgid "Smart torrent sorting" msgstr "智能种子排序" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2690 msgid "Ignore words such as 'a' and 'the' when sorting" msgstr "排序时忽略诸如 ‘a’ 和 ‘the’ 的单词" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2689 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 msgid "Collapsible panels" msgstr "可折叠面板" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699 msgid "Your browser does not support this feature." msgstr "您的浏览器不支持这个功能。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2702 msgid "" "Allow the 'Add Torrent' and 'Create Torrent' panels to be collapsed, and " "collapse by default in non-embedded mode" msgstr "允许‘添加种子’和‘创建种子’面板被折叠,并且在非嵌入模式下默认折叠。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2709 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2714 msgid "Language" msgstr "語言" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2720 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2725 msgid "Theme" msgstr "主題" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2729 msgid "To change themes manually, disable universal theming" msgstr "要手动更改主题,请禁用通用主题" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2728 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2733 msgid "Universal theming is enabled." msgstr "通用主题已开启。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2730 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4242 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2735 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2841 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2858 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4265 msgid "Configure" msgstr "設定" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2753 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2758 msgid "Refresh time" msgstr "刷新时间" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2756 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761 msgid "How frequently torrent status is updated on the main page" msgstr "主页面上下载状态的更新频率" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2769 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2774 msgid "Never" msgstr "從不" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2776 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 msgid "Startup delay" msgstr "启动延迟" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2779 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2784 msgid "How long before auto-started torrents are loaded when I2PSnark starts" msgstr "当I2PSnark启动时,在多长时间内加载自动启动的种子?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2781 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 msgid "minutes" msgstr "分鐘" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2786 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 msgid "Page size" msgstr "页面大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2789 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794 msgid "Maximum number of torrents to display per page" msgstr "每页显示的最大种子数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2791 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2796 msgid "torrents" msgstr "種子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2820 msgid "Total uploader limit" msgstr "限制总上传种子数为" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824 msgid "Maximum number of peers for uploading" msgstr "同时上传的对等节点数量最大值" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2826 msgid "peers" msgstr "节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2825 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2830 msgid "Up bandwidth limit" msgstr "上传带宽限制" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2829 -msgid "Maximum bandwidth allocated for uploading" -msgstr "用于上传的最大带宽限制" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2851 +msgid "Maximum bandwidth allocated" +msgstr "已分配的最大带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2853 msgid "Half available bandwidth recommended." msgstr "推荐设置为可用带宽的一半。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2834 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2839 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 msgid "View or change router bandwidth" msgstr "浏览或修改路由器带宽" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2840 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2847 +msgid "Down bandwidth limit" +msgstr "下行带宽限制" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2863 msgid "Use open trackers also" msgstr "同时使用OpenTracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867 msgid "" "Announce torrents to open trackers as well as trackers listed in the torrent" " file" msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2848 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2871 msgid "Enable DHT" msgstr "启用 DHT" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2875 msgid "Use DHT to find additional peers" msgstr "使用分布式哈希表(DHT)发现其他节点" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879 msgid "Enable Ratings" msgstr "启用评分" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2860 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2883 msgid "Show ratings on torrent pages" msgstr "在种子页面显示评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2864 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2887 msgid "Enable Comments" msgstr "启用评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2868 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2891 msgid "Show comments on torrent pages" msgstr "在种子页面显示评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2870 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2893 msgid "Comment Author" msgstr "评论作者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 msgid "Set the author name for your comments and ratings" msgstr "为你的评论和评级设置作者名称" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2889 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2912 msgid "Inbound Settings" msgstr "入站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2896 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919 msgid "Outbound Settings" msgstr "出站设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2905 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2928 msgid "I2CP host" msgstr "I2CP 主机" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2910 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933 msgid "I2CP port" msgstr "I2CP 端口" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2925 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 msgid "I2CP options" msgstr "I2CP选项" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2930 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 msgid "Save configuration" msgstr "保存设置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2948 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2971 msgid "Select trackers for removal from I2PSnark's known list" msgstr "选择从I2PSnark已知列表中移除的Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2951 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3793 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2974 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3816 msgid "Name" msgstr "名稱" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2976 msgid "Website URL" msgstr "网站 URL" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2961 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2984 msgid "Announce URL" msgstr "通告 URL..." -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2973 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2996 msgid "Mark tracker for deletion" msgstr "标记Tracker为删除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3005 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4482 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3028 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4505 msgid "Add" msgstr "新增" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3052 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3075 #, java-format msgid "Invalid magnet URL {0}" msgstr "磁性链接 {0} 无效" #. * dummies for translation -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3060 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3083 #, java-format msgid "1 hop" msgid_plural "{0} hops" msgstr[0] "{0}跳" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3061 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3084 #, java-format msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3338 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3645 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3361 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3668 msgid "Edit Torrent" msgstr "编辑种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3356 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3379 msgid "Data location" msgstr "数据位置" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3366 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3389 msgid "Info hash" msgstr "信息哈希" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3387 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3410 msgid "Primary Tracker" msgstr "主 Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3406 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3429 msgid "Tracker List" msgstr "Tracker 列表" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3432 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3455 msgid "Web Seeds" msgstr "网页做种" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3454 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4510 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3477 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4533 msgid "Comment" msgstr "附註" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3464 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3487 msgid "Created" msgstr "建立" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3475 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4524 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3498 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4547 msgid "Created By" msgstr "创建者" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3485 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3508 msgid "Added" msgstr "已新增" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3505 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3528 msgid "Last activity" msgstr "上次活動" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3519 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3542 msgid "Magnet link" msgstr "Magnet磁性链接" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3534 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3557 msgid "Private torrent" msgstr "私有种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3548 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3571 msgid "Completion" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3583 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3821 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3844 msgid "Remaining" msgstr "剩餘" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3592 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3615 msgid "Skipped" msgstr "已跳过" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3600 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3623 msgid "Files" msgstr "檔案" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3606 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3629 msgid "Pieces" msgstr "分块数量" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3611 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3634 msgid "Piece size" msgstr "分块大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3624 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3647 msgid "Refresh page for results" msgstr "刷新页面获取结果" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3636 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3659 msgid "Force Recheck" msgstr "强制重新检查" #. shouldn't happen -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3639 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3648 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4422 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4761 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3671 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4445 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4784 msgid "Torrent must be stopped" msgstr "种子必须停止" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3642 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3665 msgid "Check integrity of the downloaded files" msgstr "检查已下载文件的完整性" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3651 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3674 msgid "Add or remove trackers" msgstr "增加或移除Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3661 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3684 msgid "Download files in order" msgstr "按顺序下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3662 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3685 msgid "Download pieces in order" msgstr "按顺序下载分片" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3669 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4264 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3692 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4287 msgid "Save Preference" msgstr "保存偏好" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3679 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3702 msgid "Resource Not found" msgstr "找不到资源" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3680 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3698 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3703 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3721 msgid "Resource" msgstr "資源" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3681 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3699 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3704 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3722 msgid "Base" msgstr "" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3697 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3720 msgid "Resource Does Not Exist" msgstr "资源不存在" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3773 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3796 msgid "Directory" msgstr "目录" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3819 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3842 msgid "Download Status" msgstr "下载状态" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3831 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 msgid "Download Priority" msgstr "下载优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3843 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3866 msgid "Up to higher level directory" msgstr "上一层文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3854 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3877 msgid "Audio Playlist" msgstr "音频播放列表" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3886 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3909 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3892 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3915 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3934 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3957 msgid "Preview" msgstr "預覧" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3985 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4008 msgid "Download file at high priority" msgstr "以高优先级下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3990 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4013 msgid "High" msgstr "高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3993 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4016 msgid "Download file at normal priority" msgstr "以普通优先级下载文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3998 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4021 msgid "Normal" msgstr "一般" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4000 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 msgid "Do not download this file" msgstr "不要下载这个文件" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4005 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4028 msgid "Skip" msgstr "跳過" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4017 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4040 msgid "Set all high" msgstr "设置所有为高" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4020 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4043 msgid "Set all normal" msgstr "设置所有为正常" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4022 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4045 msgid "Skip all" msgstr "忽略所有" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4023 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4046 msgid "Save priorities" msgstr "保存优先级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4237 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 msgid "Ratings and Comments" msgstr "评级和评价" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4240 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4263 msgid "Author name required to rate or comment" msgstr "评级或评论要求作者名字" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4246 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4269 msgid "Your author name for published comments and ratings" msgstr "您发布评论与评级时的作者名字" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4260 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 msgid "Enable viewing and posting comments for this torrent" msgstr "为此种子启用浏览和发布评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4283 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4306 #, java-format msgid "1 star" msgid_plural "{0} stars" msgstr[0] "{0}个星星" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4285 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4308 msgid "No rating" msgstr "暂无评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4300 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4323 msgid "Rate and Comment" msgstr "评级和评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4302 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4325 msgid "Rate Torrent" msgstr "评价种子" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4304 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4327 msgid "Add Comment" msgstr "添加评论" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4339 msgid "My Rating" msgstr "我的评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4329 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4333 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4352 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4356 msgid "Average Rating" msgstr "平均评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4334 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4357 msgid "No community ratings currently available" msgstr "暂无可用的社区评级" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4382 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4468 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4405 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4491 msgid "Mark for deletion" msgstr "標記為刪除" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4395 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4418 msgid "Delete Selected" msgstr "刪除所選" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4455 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4478 msgid "Tracker" msgstr "Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4490 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4513 msgid "Add Tracker" msgstr "增加Tracker" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4530 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:4553 msgid "Save Changes" msgstr "保存更改" diff -Nru i2p-2.4.0/apps/i2psnark/resources/js/dnd.js i2p-2.5.0/apps/i2psnark/resources/js/dnd.js --- i2p-2.4.0/apps/i2psnark/resources/js/dnd.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/resources/js/dnd.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,218 @@ +/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */ +/* see also licenses/LICENSE-GPLv2.txt */ + +/** + * Drop a link anywhere on the page and we will open the add torrent section + * and put it in the add torrent form. + * + * Drop a .torrent file anywhere on the page and we will open the add torrent section + * and hopefully convince you to drop it on the newFile input. + * + * ref: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop + * + * @since 0.9.62 + */ +function initDND() +{ + var div = document.getElementById("page"); + var add = document.getElementById("toggle_addtorrent"); + if (add != null) { + // we are on page one + var create = document.getElementById("toggle_createtorrent"); + var form1 = document.getElementById("nofilter_newURL"); + var form2 = document.getElementById("newFile"); + var addbutton = document.getElementById("addButton"); + + div.addEventListener("drop", function(event) { + var name = ""; + var isURL = false; + var isDir = false; + // chrome returning 0-length arrays for files? + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + // Use DataTransferItemList interface to access the file + // DO NOT LOG TO CONSOLE HERE IT ZEROS OUT ARRAY + // https://howtojs.io/empty-files-in-event-datatransfer-in-drop-event-in-javascript/ + // https://stackoverflow.com/questions/11573710/event-datatransfer-files-is-empty-when-ondrop-is-fired + var item = event.dataTransfer.items[0]; + // Chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + // sometimes undefined for directories, throws uncaught TypeError + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + var file = item.getAsFile(); + if (file.size == 0) + isDir = true; + name = file.name; + } else { + // If dropped items aren't files, maybe they are URLs + // we're going here in chrome for files usually + name = event.dataTransfer.getData("URL"); + if (name.length > 0) { + isURL = true; + } + // else chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + } + } else if (event.dataTransfer.files && event.dataTransfer.files.length > 0) { + // Use DataTransfer interface to access the file(s) + var file = event.dataTransfer.files[0]; + if (file.size == 0) + isDir = true; + name = file.name; + } else { + // else chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + } + if (name.length > 0) { + if (isURL) { + // set name in form 1 + form2.classList.remove("highlight"); + event.preventDefault(); + // prevent inadvertent drag-from-self + var url = new URL(name); + var us = new URL(document.location.href); + if (url.origin === us.origin) { + form1.value = ""; + event.dataTransfer.dropEffect = "none"; + } else { + form1.value = name; + } + } else { + // handle name in form 2 + form1.value = ""; + form1.classList.remove("highlight"); + if (event.target.id === "newFile") { + if (isDir) { + event.preventDefault(); + addbutton.classList.remove("highlight"); + event.dataTransfer.dropEffect = "none"; + alert("Must be a .torrent file"); + } else { + if (!name.endsWith('.torrent')) { + event.preventDefault(); + addbutton.classList.remove("highlight"); + event.dataTransfer.dropEffect = "none"; + alert("Must be a .torrent file"); + } else { + addbutton.classList.add("highlight"); + } + } + } else { + event.preventDefault(); + addbutton.classList.remove("highlight"); + event.dataTransfer.dropEffect = "none"; + if (!name.endsWith('.torrent')) { + alert("Must be a .torrent file"); + } else { + alert("Drop a .torrent file in the torrent file box"); + } + } + } + } else { + // Chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + event.dataTransfer.dropEffect = "none"; + alert("File drag and drop not supported on this browser"); + } + }); + + div.addEventListener("dragover", function(event) { + event.preventDefault(); + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + var item = event.dataTransfer.items[0]; + // needed for Chrome + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + event.dataTransfer.dropEffect = "copy"; + } else { + event.dataTransfer.dropEffect = "link"; + } + } else { + event.dataTransfer.dropEffect = "copy"; + } + }); + + div.addEventListener("dragenter", function(event) { + event.preventDefault(); + // expand the add section, scroll to view, and highlight the correct input + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + var item = event.dataTransfer.items[0]; + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + form1.classList.remove("highlight"); + form1.blur(); + form1.value = ""; + form2.classList.add("highlight"); + form2.focus(); + } else { + form1.classList.add("highlight"); + form1.focus(); + form2.classList.remove("highlight"); + form2.blur(); + } + } else { + form1.classList.remove("highlight"); + form1.blur(); + form1.value = ""; + form2.classList.add("highlight"); + form2.focus(); + } + create.checked = false; + add.checked = true; + add.scrollIntoView(true); + }); + + form1.addEventListener("change", function(event) { + if (form1.value.length > 0) { + form1.classList.remove("highlight"); + form2.classList.remove("highlight"); + addbutton.classList.add("highlight"); + } else { + addbutton.classList.remove("highlight"); + } + }); + + form2.addEventListener("change", function(event) { + if (form2.value.length > 0) { + addbutton.classList.add("highlight"); + } else { + addbutton.classList.remove("highlight"); + } + form1.classList.remove("highlight"); + form2.classList.remove("highlight"); + }); + + form1.addEventListener("blur", function(event) { + if (form1.value.length > 0) { + addbutton.classList.add("highlight"); + } else { + addbutton.classList.remove("highlight"); + } + form1.classList.remove("highlight"); + form2.classList.remove("highlight"); + }); + + form2.addEventListener("blur", function(event) { + if (form2.value.length > 0) { + addbutton.classList.add("highlight"); + } else { + form1.classList.add("highlight"); + addbutton.classList.remove("highlight"); + } + form1.classList.remove("highlight"); + form2.classList.remove("highlight"); + }); + + } else { + // we are not on page one + // TODO + div.addEventListener("drop", function(event) { + event.preventDefault(); + event.dataTransfer.dropEffect = "none"; + alert("Go to page 1 to drag and drop"); + }); + } +} + +document.addEventListener("DOMContentLoaded", function() { + initDND(); +}, true); + +/* @license-end */ diff -Nru i2p-2.4.0/apps/i2psnark/resources/themes/dark/snark.css i2p-2.5.0/apps/i2psnark/resources/themes/dark/snark.css --- i2p-2.4.0/apps/i2psnark/resources/themes/dark/snark.css 2023-12-21 01:43:31.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/resources/themes/dark/snark.css 2024-04-10 02:29:57.000000000 +0000 @@ -1527,6 +1527,24 @@ margin-left: 5px !important; } +.addtorrentsection input[type="text"], .newtorrentsection input[type="text"] { + width: 80%; +} + +.addtorrentsection td:nth-child(2) { + text-align: left; +} + +#addButton.highlight { + background: #f60 url(images/add.png) left 6px center no-repeat !important; + background-size: 12px 12px !important; +} + +#newFile.highlight { + background: #f60; + color: #fff; +} + select { background: #332940 url(images/dropdown.png) right center no-repeat !important; -moz-appearance: none; @@ -2326,6 +2344,7 @@ } #configs td:nth-child(2) { + text-align: left; white-space: nowrap; } diff -Nru i2p-2.4.0/apps/i2psnark/resources/themes/light/snark.css i2p-2.5.0/apps/i2psnark/resources/themes/light/snark.css --- i2p-2.4.0/apps/i2psnark/resources/themes/light/snark.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/resources/themes/light/snark.css 2024-04-10 02:29:57.000000000 +0000 @@ -1282,6 +1282,24 @@ width: 80%; } +.addtorrentsection input[type="text"], .newtorrentsection input[type="text"] { + width: 80%; +} + +.addtorrentsection td:nth-child(2) { + text-align: left; +} + +#addButton.highlight { + background: #f60 url(images/add.png) left 6px center no-repeat; + background-size: 12px 12px; +} + +#newFile.highlight { + background: #f60; + color: #fff; +} + .addtorrentsection tr:first-child td > *, .newtorrentsection tr:first-child td > * { vertical-align: middle; } @@ -2028,6 +2046,7 @@ /* configs */ #configs td:nth-child(2) { + text-align: left; white-space: nowrap; } diff -Nru i2p-2.4.0/apps/i2psnark/resources/themes/ubergine/snark.css i2p-2.5.0/apps/i2psnark/resources/themes/ubergine/snark.css --- i2p-2.4.0/apps/i2psnark/resources/themes/ubergine/snark.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/resources/themes/ubergine/snark.css 2024-04-10 02:29:57.000000000 +0000 @@ -1513,7 +1513,7 @@ opacity: 0; } -input[type=text]:active, input[type=text]:focus, input.r:focus, input[name="nofilter_dataDir"]:focus, textarea:focus { +input[type=text]:active, input[type=text]:focus, input.r:focus, input[name="nofilter_dataDir"]:focus, textarea:focus, input[type=text].highlight { background: #d60; background: linear-gradient(to bottom, #d60, #c50); color: #fff; @@ -1623,20 +1623,29 @@ box-shadow: 0 0 1px 1px rgba(48,16,48,0.7); } -input[type="submit"]:hover, input[type="submit"]:focus { +input[type="submit"]:hover, input[type="submit"]:focus, input[type="submit"].highlight { background-blend-mode: luminosity; } -input[type="submit"]:hover, input[type="submit"]:focus, a.control:hover, a.control:focus { +input[type="submit"]:hover, input[type="submit"]:focus, a.control:hover, a.control:focus, input[type="submit"].highlight { border: 1px outset #bbb; color: #fff; filter: drop-shadow(0 0 1px #515) !important; } -input[type="submit"]:focus, input[type="reset"]:focus, a.control:focus { +input[type="submit"]:focus, input[type="reset"]:focus, a.control:focus, input[type="submit"].highlight { filter: drop-shadow(0 0 1px #f60) !important; } +#addButton.highlight { + background: #f60 url(images/add.png); +} + +#newFile.highlight { + background: #f60; + color: #fff; +} + input.accept, input.accept:active { background: #989 url(images/accept.png); background: url(images/accept.png), linear-gradient(to bottom, #989 0%, #878 100%); diff -Nru i2p-2.4.0/apps/i2psnark/resources/themes/vanilla/snark.css i2p-2.5.0/apps/i2psnark/resources/themes/vanilla/snark.css --- i2p-2.4.0/apps/i2psnark/resources/themes/vanilla/snark.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2psnark/resources/themes/vanilla/snark.css 2024-04-10 02:29:57.000000000 +0000 @@ -1853,6 +1853,24 @@ width: calc(100% - 200px); } +.addtorrentsection input[type="text"], .newtorrentsection input[type="text"] { + width: 80%; +} + +.addtorrentsection td:nth-child(2) { + text-align: left; +} + +#addButton.highlight { + background: #f60 url(images/add.png) no-repeat 5px center; + padding: 5px 5px 5px 21px !important; +} + +#newFile.highlight { + background: #f60; + color: #fff; +} + .snarkConfig tr:nth-last-child(4) td, .trackerconfig tr:nth-last-child(4) td { padding-bottom: 10px; } @@ -2286,6 +2304,7 @@ } #configs td:nth-child(2) { + text-align: left; white-space: nowrap; } diff -Nru i2p-2.4.0/apps/i2ptunnel/java/build.xml i2p-2.5.0/apps/i2ptunnel/java/build.xml --- i2p-2.4.0/apps/i2ptunnel/java/build.xml 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/build.xml 2024-04-10 02:29:57.000000000 +0000 @@ -449,6 +449,7 @@ + + @@ -469,6 +471,9 @@ + + + diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,403 +0,0 @@ -package net.i2p.i2ptunnel; - -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.zip.CRC32; -import java.util.zip.Inflater; -import java.util.zip.InflaterOutputStream; - -import net.i2p.data.DataHelper; - -/** - * Gunzip implementation per - * RFC 1952, reusing - * java's standard CRC32 and Inflater and InflaterOutputStream implementations. - * - * Note that the underlying InflaterOutputStream cannot be reused after close(), - * so we don't have a Reusable version of this. - * - * Sets up GunzipOutputStream -- InflaterOutputStream -- CRC32OutputStream -- uncompressedStream - * - * Not a public API, subject to change, not for external use. - * - * Modified from net.i2p.util.ResettableGZIPInputStream to use Java 6 InflaterOutputstream - * @since 0.9.21, public since 0.9.50 for LocalHTTPServer - */ -public class GunzipOutputStream extends InflaterOutputStream { - private static final int FOOTER_SIZE = 8; // CRC32 + ISIZE - private final byte _buf1[] = new byte[1]; - private boolean _complete; - private boolean _validated; - private final byte _footer[] = new byte[FOOTER_SIZE]; - private long _bytesReceived; - private long _bytesReceivedAtCompletion; - - private enum HeaderState { MB1, MB2, CF, MT0, MT1, MT2, MT3, EF, OS, FLAGS, - EH1, EH2, EHDATA, NAME, COMMENT, CRC1, CRC2, DONE } - private HeaderState _state = HeaderState.MB1; - private int _flags; - private int _extHdrToRead; - - /** - * Build a new Gunzip stream - */ - public GunzipOutputStream(OutputStream uncompressedStream) throws IOException { - super(new CRC32OutputStream(uncompressedStream), new Inflater(true)); - } - - @Override - public void write(int b) throws IOException { - _buf1[0] = (byte) b; - write(_buf1, 0, 1); - } - - @Override - public void write(byte buf[], int off, int len) throws IOException { - if (_complete) { - // shortcircuit so the inflater doesn't try to refill - // with the footer's data (which would fail, causing ZLIB err) - return; - } - boolean isFinished = inf.finished(); - for (int i = off; i < off + len; i++) { - if (!isFinished) { - if (_state != HeaderState.DONE) { - verifyHeader(buf[i]); - continue; - } - // ensure we call the same method variant so we don't depend on underlying implementation - super.write(buf, i, 1); - if (inf.finished()) { - isFinished = true; - _bytesReceivedAtCompletion = _bytesReceived + 1; - } - } - _footer[(int) (_bytesReceived++ % FOOTER_SIZE)] = buf[i]; - if (isFinished) { - long footerSize = _bytesReceived - _bytesReceivedAtCompletion; - // could be at 7 or 8... - // we write the first byte of the footer to the Inflater if necessary... - // see comments in ResettableGZIPInputStream for details - if (footerSize >= FOOTER_SIZE - 1) { - flush(); - try { - verifyFooter(); - _complete = true; - _validated = true; - return; - } catch (IOException ioe) { - // failed at 7, retry at 8 - if (footerSize == FOOTER_SIZE - 1 && i < off + len - 1) - continue; - _complete = true; - throw ioe; - } - } - } - } - } - - /** - * Inflater statistic - */ - public long getTotalRead() { - try { - return inf.getBytesRead(); - } catch (RuntimeException e) { - return 0; - } - } - - /** - * Inflater statistic - */ - public long getTotalExpanded() { - try { - return inf.getBytesWritten(); - } catch (RuntimeException e) { - // possible NPE in some implementations - return 0; - } - } - - /** - * Inflater statistic - */ - public long getRemaining() { - try { - return inf.getRemaining(); - } catch (RuntimeException e) { - // possible NPE in some implementations - return 0; - } - } - - /** - * Inflater statistic - */ - public boolean getFinished() { - try { - return inf.finished(); - } catch (RuntimeException e) { - // possible NPE in some implementations - return true; - } - } - - @Override - public void close() throws IOException { - _complete = true; - _state = HeaderState.DONE; - super.close(); - } - - @Override - public String toString() { - return "GunzipOutputStream read: " + getTotalRead() + " expanded: " + getTotalExpanded() + - " remaining: " + getRemaining() + " finished: " + getFinished() + - " footer complete: " + _complete + " validated: " + _validated; - } - - /** - * @throws IOException on CRC or length check fail - */ - private void verifyFooter() throws IOException { - int idx = (int) (_bytesReceived % FOOTER_SIZE); - byte[] footer; - if (idx == 0) { - footer = _footer; - } else { - footer = new byte[FOOTER_SIZE]; - for (int i = 0; i < FOOTER_SIZE; i++) { - footer[i] = _footer[(int) ((_bytesReceived + i) % FOOTER_SIZE)]; - } - } - - long actualSize = inf.getTotalOut(); - long expectedSize = DataHelper.fromLongLE(footer, 4, 4); - if (expectedSize != actualSize) - throw new IOException("gunzip expected " + expectedSize + " bytes, got " + actualSize); - - long actualCRC = ((CRC32OutputStream) out).getValue(); - long expectedCRC = DataHelper.fromLongLE(footer, 0, 4); - if (expectedCRC != actualCRC) - throw new IOException("gunzip CRC fail expected 0x" + Long.toHexString(expectedCRC) + - ", got 0x" + Long.toHexString(actualCRC)); - } - - /** - * Make sure the header is valid, throwing an IOException if it is bad. - * Pushes through the state machine, checking as we go. - * Call for each byte until HeaderState is DONE. - */ - private void verifyHeader(byte b) throws IOException { - int c = b & 0xff; - switch (_state) { - case MB1: - if (c != 0x1F) throw new IOException("First magic byte was wrong [" + c + "]"); - _state = HeaderState.MB2; - break; - - case MB2: - if (c != 0x8B) throw new IOException("Second magic byte was wrong [" + c + "]"); - _state = HeaderState.CF; - break; - - case CF: - if (c != 0x08) throw new IOException("Compression format is invalid [" + c + "]"); - _state = HeaderState.FLAGS; - break; - - case FLAGS: - _flags = c; - _state = HeaderState.MT0; - break; - - case MT0: - // ignore - _state = HeaderState.MT1; - break; - - case MT1: - // ignore - _state = HeaderState.MT2; - break; - - case MT2: - // ignore - _state = HeaderState.MT3; - break; - - case MT3: - // ignore - _state = HeaderState.EF; - break; - - case EF: - if ( (c != 0x00) && (c != 0x02) && (c != 0x04) ) - throw new IOException("Invalid extended flags [" + c + "]"); - _state = HeaderState.OS; - break; - - case OS: - // ignore - if (0 != (_flags & (1<<5))) - _state = HeaderState.EH1; - else if (0 != (_flags & (1<<4))) - _state = HeaderState.NAME; - else if (0 != (_flags & (1<<3))) - _state = HeaderState.COMMENT; - else if (0 != (_flags & (1<<6))) - _state = HeaderState.CRC1; - else - _state = HeaderState.DONE; - break; - - case EH1: - _extHdrToRead = c; - _state = HeaderState.EH2; - break; - - case EH2: - _extHdrToRead += (c << 8); - if (_extHdrToRead > 0) - _state = HeaderState.EHDATA; - else if (0 != (_flags & (1<<4))) - _state = HeaderState.NAME; - if (0 != (_flags & (1<<3))) - _state = HeaderState.COMMENT; - else if (0 != (_flags & (1<<6))) - _state = HeaderState.CRC1; - else - _state = HeaderState.DONE; - break; - - case EHDATA: - // ignore - if (--_extHdrToRead <= 0) { - if (0 != (_flags & (1<<4))) - _state = HeaderState.NAME; - if (0 != (_flags & (1<<3))) - _state = HeaderState.COMMENT; - else if (0 != (_flags & (1<<6))) - _state = HeaderState.CRC1; - else - _state = HeaderState.DONE; - } - break; - - case NAME: - // ignore - if (c == 0) { - if (0 != (_flags & (1<<3))) - _state = HeaderState.COMMENT; - else if (0 != (_flags & (1<<6))) - _state = HeaderState.CRC1; - else - _state = HeaderState.DONE; - } - break; - - case COMMENT: - // ignore - if (c == 0) { - if (0 != (_flags & (1<<6))) - _state = HeaderState.CRC1; - else - _state = HeaderState.DONE; - } - break; - - case CRC1: - // ignore - _state = HeaderState.CRC2; - break; - - case CRC2: - // ignore - _state = HeaderState.DONE; - break; - - case DONE: - default: - break; - } - } - - /** - * Calculate CRC32 along the way - * @since 0.9.61 - */ - private static class CRC32OutputStream extends FilterOutputStream { - - private final CRC32 _crc32; - - public CRC32OutputStream(OutputStream out) { - super(out); - _crc32 = new CRC32(); - } - - @Override - public void write(int c) throws IOException { - _crc32.update(c); - super.write(c); - } - - @Override - public void write(byte buf[], int off, int len) throws IOException { - _crc32.update(buf, off, len); - out.write(buf, off, len); - } - - public long getValue() { - return _crc32.getValue(); - } - } - -/**** - public static void main(String args[]) { - java.util.Random r = new java.util.Random(); - for (int i = 0; i < 1050; i++) { - byte[] b = new byte[i]; - r.nextBytes(b); - if (!test(b)) return; - } - for (int i = 1050; i < 64*1024; i+= 529) { - byte[] b = new byte[i]; - r.nextBytes(b); - if (!test(b)) return; - } - } - - private static boolean test(byte[] b) { - int size = b.length; - try { - java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(size); - java.util.zip.GZIPOutputStream o = new java.util.zip.GZIPOutputStream(baos); - o.write(b); - o.finish(); - o.flush(); - byte compressed[] = baos.toByteArray(); - - java.io.ByteArrayOutputStream baos2 = new java.io.ByteArrayOutputStream(size); - GunzipOutputStream out = new GunzipOutputStream(baos2); - out.write(compressed); - byte rv[] = baos2.toByteArray(); - if (rv.length != b.length) - throw new RuntimeException("read length: " + rv.length + " expected: " + b.length); - - if (!net.i2p.data.DataHelper.eq(rv, 0, b, 0, b.length)) { - throw new RuntimeException("foo, read=" + rv.length); - } else { - System.out.println("match, w00t @ " + size); - return true; - } - } catch (Exception e) { - System.out.println("Error dealing with size=" + size + ": " + e.getMessage()); - e.printStackTrace(); - return false; - } - } -****/ -} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -16,6 +16,8 @@ import net.i2p.I2PAppContext; import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; +import net.i2p.i2ptunnel.util.*; +import net.i2p.i2ptunnel.util.LimitOutputStream.DoneCallback; import net.i2p.util.ByteCache; import net.i2p.util.Log; @@ -37,11 +39,13 @@ private boolean _headerWritten; private final byte _buf1[]; protected boolean _gzip; - protected long _dataExpected; + protected long _dataExpected = -1; + protected boolean _keepAliveIn, _keepAliveOut; /** lower-case, trimmed */ protected String _contentType; /** lower-case, trimmed */ protected String _contentEncoding; + private final DoneCallback _callback; private static final int CACHE_SIZE = 4*1024; private static final ByteCache _cache = ByteCache.getInstance(8, CACHE_SIZE); @@ -53,11 +57,66 @@ private static final byte[] CRLF = DataHelper.getASCII("\r\n"); public HTTPResponseOutputStream(OutputStream raw) { + this(raw, null); + } + + /** + * Optionally call callback when we're done. + * + * @param cb may be null + * @since 0.9.62 + */ + private HTTPResponseOutputStream(OutputStream raw, DoneCallback cb) { super(raw); I2PAppContext context = I2PAppContext.getGlobalContext(); - _log = context.logManager().getLog(getClass()); + _log = context.logManager().getLog(HTTPResponseOutputStream.class); _headerBuffer = _cache.acquire(); _buf1 = new byte[1]; + _callback = cb; + } + + /** + * Optionally keep sockets alive and call callback when we're done. + * + * @param allowKeepAliveIn We may, but are not required to, keep the input socket alive. + * This is the server on the server side and I2P on the client side. + * @param allowKeepAliveOut We may, but are not required to, keep the output socket alive. + * This is I2P on the server side and the browser on the client side. + * @param isHead is this a response to a HEAD, and thus no data is expected (RFC 2616 sec. 4.4) + * @param cb non-null if allowKeepAlive is true + * @since 0.9.62 + */ + public HTTPResponseOutputStream(OutputStream raw, boolean allowKeepAliveIn, boolean allowKeepAliveOut, + boolean isHead, DoneCallback cb) { + this(raw, cb); + _keepAliveIn = allowKeepAliveIn; + _keepAliveOut = allowKeepAliveOut; + if (isHead) + _dataExpected = 0; + if (_log.shouldInfo()) + _log.info("Before headers: keepaliveIn? " + allowKeepAliveIn + " keepaliveOut? " + allowKeepAliveOut); + } + + /** + * Should we keep the input stream alive when done? + * + * @return false before the headers are written + * @since 0.9.62 + */ + public boolean getKeepAliveIn() { + return _keepAliveIn && _headerWritten; + } + + /** + * Should we keep the output stream alive when done? + * Only supported for the browser socket side. + * I2P socket on server side not supported yet. + * + * @return false before the headers are written + * @since 0.9.62 + */ + public boolean getKeepAliveOut() { + return _keepAliveOut && _headerWritten; } @Override @@ -129,7 +188,7 @@ byte second = data[valid - 2]; return second == NL; // \n\n } - + /** * Possibly tweak that first HTTP response line (HTTP/1.0 200 OK, etc). * Overridden on server side. @@ -141,9 +200,8 @@ /** ok, received, now munge & write it */ private void writeHeader() throws IOException { - String responseLine = null; - boolean connectionSent = false; + boolean chunked = false; int lastEnd = -1; byte[] data = _headerBuffer.getData(); @@ -151,11 +209,28 @@ for (int i = 0; i < valid; i++) { if (data[i] == NL) { if (lastEnd == -1) { - responseLine = DataHelper.getUTF8(data, 0, i+1); // includes NL - responseLine = filterResponseLine(responseLine); + String responseLine = DataHelper.getUTF8(data, 0, i+1); // includes NL responseLine = (responseLine.trim() + "\r\n"); if (_log.shouldInfo()) _log.info("Response: " + responseLine.trim()); + // Persistent conn requires HTTP/1.1 + if (!responseLine.startsWith("HTTP/1.1 ")) { + _keepAliveIn = false; + _keepAliveOut = false; + } + // force zero datalen for 1xx, 204, 304 (RFC 2616 sec. 4.4) + // so that these don't prevent keepalive + int sp = responseLine.indexOf(" "); + if (sp > 0) { + String s = responseLine.substring(sp + 1); + if (s.startsWith("1") || s.startsWith("204") || s.startsWith("304")) + _dataExpected = 0; + } else { + // no status? + _keepAliveIn = false; + _keepAliveOut = false; + } + out.write(DataHelper.getUTF8(responseLine)); } else { for (int j = lastEnd+1; j < i; j++) { @@ -179,14 +254,26 @@ if (val.toLowerCase(Locale.US).contains("upgrade")) { // pass through for websocket out.write(DataHelper.getASCII("Connection: " + val + "\r\n")); + // Disable persistence + _keepAliveOut = false; } else { - out.write(CONNECTION_CLOSE); + // Strip to allow persistence, replace to disallow + if (!_keepAliveOut) + out.write(CONNECTION_CLOSE); } + // We do not expect Connection: keep-alive here, + // as it's the default for HTTP/1.1, the server proxy doesn't support it, + // and we don't support keepalive for HTTP/1.0 + _keepAliveIn = false; connectionSent = true; } else if ("proxy-connection".equals(lcKey)) { // Nonstandard, strip } else if ("content-encoding".equals(lcKey) && "x-i2p-gzip".equals(val.toLowerCase(Locale.US))) { _gzip = true; + // client side only + // x-i2p-gzip is not chunked, which is nonstandard, but we track the + // end of data in GunzipOutputStream and call the callback, + // so we can support i2p-side keepalive here. } else if ("proxy-authenticate".equals(lcKey)) { // filter this hop-by-hop header; outproxy authentication must be configured in I2PTunnelHTTPClient // see e.g. http://blog.c22.cc/2013/03/11/privoxy-proxy-authentication-credential-exposure-cve-2013-2503/ @@ -202,6 +289,9 @@ } else if ("content-encoding".equals(lcKey)) { // save for compress decision on server side _contentEncoding = val.toLowerCase(Locale.US); + } else if ("transfer-encoding".equals(lcKey) && val.toLowerCase(Locale.US).contains("chunked")) { + // save for keepalive decision on client side + chunked = true; } else if ("set-cookie".equals(lcKey)) { String lcVal = val.toLowerCase(Locale.US); if (lcVal.contains("domain=b32.i2p") || @@ -224,19 +314,55 @@ lastEnd = i; } } + + // Now make the final keepalive decisions + if (_keepAliveOut) { + // we need one but not both + if ((chunked && _dataExpected >= 0) || + (!chunked && _dataExpected < 0)) + _keepAliveOut = false; + } + if (_keepAliveIn) { + // we need one but not both + if ((chunked && _dataExpected >= 0) || + (!chunked && _dataExpected < 0)) + _keepAliveIn = false; + } - if (!connectionSent) + if (!connectionSent && !_keepAliveOut) out.write(CONNECTION_CLOSE); finishHeaders(); boolean shouldCompress = shouldCompress(); if (_log.shouldInfo()) - _log.info("After headers: gzip? " + _gzip + " compress? " + shouldCompress); + _log.info("After headers: gzip? " + _gzip + " compress? " + shouldCompress + " keepaliveIn? " + _keepAliveIn + " keepaliveOut? " + _keepAliveOut); if (data.length == CACHE_SIZE) _cache.release(_headerBuffer); _headerBuffer = null; + + // Setup the keepalive streams + // Until we have keepalive for the i2p socket, the client side + // does not need to do this, we just wait for the socket to close. + // Until we have keepalive for the server socket, the server side + // does not need to do this, we just wait for the socket to close. + if (_keepAliveIn && !shouldCompress) { + if (_dataExpected > 0) { + // content-length + // filter output stream to count the data + out = new ByteLimitOutputStream(out, _callback, _dataExpected); + } else if (_dataExpected == 0) { + if (_callback != null) + _callback.streamDone(); + } else { + // -1, chunked + // filter output stream to look for the end + // do not strip the chunking; pass it through + out = new DechunkedOutputStream(out, _callback, false); + } + } + if (shouldCompress) { beginProcessing(); } @@ -251,7 +377,8 @@ @Override public void close() throws IOException { if (_log.shouldInfo()) - _log.info("Closing " + out + " compressed? " + shouldCompress(), new Exception("I did it")); + _log.info("Closing " + out + " headers written? " + _headerWritten + " compressed? " + shouldCompress() + + " keepaliveIn? " + _keepAliveIn + " keepaliveOut? " + _keepAliveOut, new Exception("I did it")); synchronized(this) { // synch with changing out field below super.close(); @@ -259,7 +386,7 @@ } protected void beginProcessing() throws IOException { - OutputStream po = new GunzipOutputStream(out); + OutputStream po = new GunzipOutputStream(out, _callback); synchronized(this) { out = po; } diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java 2024-04-10 02:29:57.000000000 +0000 @@ -40,6 +40,7 @@ import net.i2p.util.ConvertToHash; import net.i2p.util.DNSOverHTTPS; import net.i2p.util.EventDispatcher; +import net.i2p.util.InternalSocket; import net.i2p.util.Log; import net.i2p.util.PortMapper; @@ -98,6 +99,14 @@ // overrides private static final String PROP_UA_I2P = "httpclient.userAgent.i2p"; private static final String PROP_UA_CLEARNET = "httpclient.userAgent.outproxy"; + public static final String OPT_KEEPALIVE_BROWSER = "keepalive.browser"; + public static final String OPT_KEEPALIVE_I2P = "keepalive.i2p"; + + // how long to wait for another request on the same socket + // Firefox timeout appears to be about 114 seconds, so it will close before we do. + static final int BROWSER_KEEPALIVE_TIMEOUT = 2*60*1000; + private static final boolean DEFAULT_KEEPALIVE_BROWSER = true; + private static final boolean DEFAULT_KEEPALIVE_I2P = true; /** * These are backups if the xxx.ht error page is missing. @@ -396,11 +405,39 @@ String currentProxy = null; long requestId = __requestId.incrementAndGet(); boolean shout = false; + boolean isConnect = false; + boolean isHead = false; I2PSocket i2ps = null; try { s.setSoTimeout(INITIAL_SO_TIMEOUT); out = s.getOutputStream(); InputReader reader = new InputReader(s.getInputStream()); + int requestCount = 0; + // HTTP Persistent Connections (RFC 2616) + // for the local browser-to-client-proxy socket. + // Keep it very simple. + // Will be set to false for non-GET/HEAD, non-HTTP/1.1, + // Connection: close, InternalSocket, + // or after analysis of the response headers in HTTPResponseOutputStream, + // or on errors in I2PTunnelRunner. + boolean keepalive = getBooleanOption(OPT_KEEPALIVE_BROWSER, DEFAULT_KEEPALIVE_BROWSER) && + !(s instanceof InternalSocket); + + // indent + do { // while (keepalive) + // indent + + if (requestCount > 0) { + try { + s.setSoTimeout(BROWSER_KEEPALIVE_TIMEOUT); + } catch (IOException ioe) { + if (_log.shouldInfo()) + _log.info("Socket closed before request #" + requestCount); + return; + } + if (_log.shouldInfo()) + _log.info("Keepalive, awaiting request #" + requestCount); + } String line, method = null, protocol = null, host = null, destination = null; String hostLowerCase = null; StringBuilder newRequest = new StringBuilder(); @@ -422,10 +459,10 @@ String lowercaseLine = line.toLowerCase(Locale.US); - if(method == null) { // first line (GET /base64/realaddr) - if(_log.shouldLog(Log.DEBUG)) { - _log.debug(getPrefix(requestId) + "First line [" + line + "]"); - } + if(method == null) { + // first line GET/POST/etc. + if (_log.shouldInfo()) + _log.info(getPrefix(requestId) + "req #" + requestCount + " first line [" + line + "]"); String[] params = DataHelper.split(line, " ", 3); if(params.length != 3) { @@ -472,12 +509,19 @@ ****/ } - method = params[0]; - if (method.toUpperCase(Locale.US).equals("CONNECT")) { + method = params[0].toUpperCase(Locale.US); + if (method.equals("HEAD")) { + isHead = true; + } else if (method.equals("CONNECT")) { // this makes things easier later, by spoofing a // protocol so the URI parser find the host and port // For in-net outproxy, will be fixed up below request = "https://" + request + '/'; + isConnect = true; + keepalive = false; + } else if (!method.equals("GET")) { + // POST, PUT, ... + keepalive = false; } // Now use the Java URI parser @@ -559,6 +603,8 @@ } String protocolVersion = params[2]; + if (!protocolVersion.equals("HTTP/1.1")) + keepalive = false; protocol = requestURI.getScheme(); host = requestURI.getHost(); @@ -641,8 +687,7 @@ break; } ******/ - } else if ("https".equals(protocol) || - method.toUpperCase(Locale.US).equals("CONNECT")) { + } else if ("https".equals(protocol) || isConnect) { remotePort = 443; } else { remotePort = 80; @@ -806,19 +851,21 @@ host = getHostName(addressHelper); } - // now strip everything but path and query from URI targetRequest = requestURI.toASCIIString(); - String newURI = requestURI.getRawPath(); - if(query != null) { - newURI += '?' + query; - } - try { - requestURI = new URI(newURI); - } catch(URISyntaxException use) { - // shouldnt happen - _log.warn(request, use); - method = null; - break; + if (!isConnect) { + // now strip everything but path and query from URI + String newURI = requestURI.getRawPath(); + if(query != null) { + newURI += '?' + query; + } + try { + requestURI = new URI(newURI); + } catch(URISyntaxException use) { + // shouldnt happen + _log.warn(request, use); + method = null; + break; + } } // end of (host endsWith(".i2p")) @@ -844,8 +891,7 @@ int rPort = requestURI.getPort(); if (rPort > 0) remotePort = rPort; - else if ("https".equals(protocol) || - method.toUpperCase(Locale.US).equals("CONNECT")) + else if ("https".equals(protocol) || isConnect) remotePort = 443; else remotePort = 80; @@ -864,8 +910,7 @@ if(_log.shouldLog(Log.DEBUG)) { _log.debug("Before selecting outproxy for " + host); } - if ("https".equals(protocol) || - method.toUpperCase(Locale.US).equals("CONNECT")) + if ("https".equals(protocol) || isConnect) currentProxy = selectSSLProxy(hostLowerCase); else currentProxy = selectProxy(hostLowerCase); @@ -921,16 +966,22 @@ break; } - if (method.toUpperCase(Locale.US).equals("CONNECT")) { + if (isConnect) { // fix up the change to requestURI above to get back to the original host:port - line = method + ' ' + requestURI.getHost() + ':' + requestURI.getPort() + ' ' + protocolVersion; + if (usingInternalOutproxy || usingWWWProxy) + line = method + ' ' + requestURI.getHost() + ':' + requestURI.getPort() + ' ' + protocolVersion; + else + line = method + ' ' + host + ':' + remotePort + ' ' + protocolVersion; } else { line = method + ' ' + requestURI.toASCIIString() + ' ' + protocolVersion; } if(_log.shouldLog(Log.DEBUG)) { + _log.debug(getPrefix(requestId) + "REQ : \"" + request + "\""); + _log.debug(getPrefix(requestId) + "REQURI: \"" + requestURI + "\""); _log.debug(getPrefix(requestId) + "NEWREQ: \"" + line + "\""); _log.debug(getPrefix(requestId) + "HOST : \"" + host + "\""); + _log.debug(getPrefix(requestId) + "RPORT : \"" + remotePort + "\""); _log.debug(getPrefix(requestId) + "DEST : \"" + destination + "\""); } @@ -941,11 +992,22 @@ if (lowercaseLine.contains("upgrade")) { // pass through for websocket preserveConnectionHeader = true; + keepalive = false; + } else if (lowercaseLine.contains("keep-alive")) { + // pass through + if (!keepalive) + continue; + // pass through + preserveConnectionHeader = true; } else { + if (lowercaseLine.contains("close")) + keepalive = false; continue; } } else if (lowercaseLine.startsWith("keep-alive: ") || lowercaseLine.startsWith("proxy-connection: ")) { + if (lowercaseLine.contains("close")) + keepalive = false; continue; } else if (lowercaseLine.startsWith("host: ") && !usingWWWProxy && !usingInternalOutproxy) { // Note that we only pass the original Host: line through to the outproxy @@ -1053,8 +1115,7 @@ if(ok != null) { gzip = Boolean.parseBoolean(ok); } - if(gzip && !usingInternalServer && - !method.toUpperCase(Locale.US).equals("CONNECT")) { + if(gzip && !usingInternalServer && !isConnect) { // according to rfc2616 s14.3, this *should* force identity, even if // an explicit q=0 for gzip doesn't. tested against orion.i2p, and it // seems to work. @@ -1063,7 +1124,7 @@ if (!usingInternalOutproxy) newRequest.append("X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0\r\n"); } - if(!shout && !method.toUpperCase(Locale.US).equals("CONNECT")) { + if(!shout && !isConnect) { if(!Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT))) { // let's not advertise to external sites that we are from I2P String ua; @@ -1110,12 +1171,16 @@ } } // end header processing - if(_log.shouldLog(Log.DEBUG)) { - _log.debug(getPrefix(requestId) + "NewRequest header: [" + newRequest.toString() + "]"); - } + if (newRequest.length() > 0 && _log.shouldDebug()) + _log.debug(getPrefix(requestId) + "NewRequest header: [" + newRequest + ']'); if(method == null || (destination == null && !usingInternalOutproxy)) { - //l.log("No HTTP method found in the request."); + if (requestCount > 0) { + // SocketTimeout, normal to get here for persistent connections, + // because DataHelper.readLine() returns null on EOF + return; + } + _log.debug("No HTTP method found in the request."); try { if (protocol != null && "http".equals(protocol.toLowerCase(Locale.US))) { out.write(getErrorPage("denied", ERR_REQUEST_DENIED).getBytes("UTF-8")); @@ -1134,6 +1199,7 @@ } // Authorization + // Yes, this is sent and checked for every request on a persistent connection AuthResult result = authorize(s, requestId, method, authorization); if (result != AuthResult.AUTH_GOOD) { if(_log.shouldLog(Log.WARN)) { @@ -1175,7 +1241,7 @@ OnTimeout onTimeout = new OnTimeout(s, s.getOutputStream(), targetRequest, usingWWWProxy, currentProxy, requestId); byte[] data; byte[] response; - if (method.toUpperCase(Locale.US).equals("CONNECT")) { + if (isConnect) { data = null; response = SUCCESS_RESPONSE.getBytes("UTF-8"); } else { @@ -1320,7 +1386,7 @@ } // as of 0.9.35, allowInternalSSL defaults to true, and overridden to true unless PROP_SSL_SET is set - if (method.toUpperCase(Locale.US).equals("CONNECT") && + if (isConnect && !usingWWWProxy && getTunnel().getClientOptions().getProperty(PROP_SSL_SET) != null && !Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_INTERNAL_SSL, "true"))) { @@ -1368,33 +1434,51 @@ return; } - Properties opts = new Properties(); - //opts.setProperty("i2p.streaming.inactivityTimeout", ""+120*1000); - // 1 == disconnect. see ConnectionOptions in the new streaming lib, which i - // dont want to hard link to here - //opts.setProperty("i2p.streaming.inactivityTimeoutAction", ""+1); - I2PSocketOptions sktOpts; - try { - sktOpts = getDefaultOptions(opts); - } catch (RuntimeException re) { - // tunnel build failure - StringBuilder buf = new StringBuilder(128); - buf.append("HTTP/1.1 503 Service Unavailable"); - if (re.getMessage() != null) - buf.append(" - ").append(re.getMessage()); - buf.append("\r\n\r\n"); + // Close persistent I2PSocket if destination or port changes + // and open a new one. + // We do not maintain a pool of open I2PSockets or look for + // an available one. Keep it very simple. + // As long as the traffic keeps going to the same place + // we will keep reusing it. + // While we should be able to reuse it if only the port changes, + // that should be extremely rare, so don't bother. + // For common use patterns including outproxy use, + // this should still be quite effective. + if (i2ps == null || i2ps.isClosed() || + remotePort != i2ps.getPort() || + !clientDest.equals(i2ps.getPeerDestination())) { + if (i2ps != null) { + if (_log.shouldInfo()) + _log.info("Old socket closed or different dest/port, opening new one"); + try { i2ps.close(); } catch (IOException ioe) {} + } + Properties opts = new Properties(); + //opts.setProperty("i2p.streaming.inactivityTimeout", ""+120*1000); + // 1 == disconnect. see ConnectionOptions in the new streaming lib, which i + // dont want to hard link to here + //opts.setProperty("i2p.streaming.inactivityTimeoutAction", ""+1); + I2PSocketOptions sktOpts; try { - out.write(buf.toString().getBytes("UTF-8")); - } catch (IOException ioe) {} - throw re; + sktOpts = getDefaultOptions(opts); + } catch (RuntimeException re) { + // tunnel build failure + StringBuilder buf = new StringBuilder(128); + buf.append("HTTP/1.1 503 Service Unavailable"); + if (re.getMessage() != null) + buf.append(" - ").append(re.getMessage()); + buf.append("\r\n\r\n"); + try { + out.write(buf.toString().getBytes("UTF-8")); + } catch (IOException ioe) {} + throw re; + } + if (remotePort > 0) + sktOpts.setPort(remotePort); + i2ps = createI2PSocket(clientDest, sktOpts); } - if (remotePort > 0) - sktOpts.setPort(remotePort); - i2ps = createI2PSocket(clientDest, sktOpts); - boolean isConnect = method.toUpperCase(Locale.US).equals("CONNECT"); - OnTimeout onTimeout = new OnTimeout(s, s.getOutputStream(), targetRequest, usingWWWProxy, - currentProxy, requestId, hostLowerCase, isConnect); + I2PTunnelRunner t; + I2PTunnelHTTPClientRunner hrunner = null; if (isConnect) { byte[] data; byte[] response; @@ -1405,10 +1489,16 @@ data = null; response = SUCCESS_RESPONSE.getBytes("UTF-8"); } - t = new I2PTunnelRunner(s, i2ps, sockLock, data, response, mySockets, onTimeout); + // no OnTimeout, we can't send HTTP error responses after sending SUCCESS_RESPONSE. + t = new I2PTunnelRunner(s, i2ps, sockLock, data, response, mySockets, (OnTimeout) null); } else { byte[] data = newRequest.toString().getBytes("ISO-8859-1"); - t = new I2PTunnelHTTPClientRunner(s, i2ps, sockLock, data, mySockets, onTimeout); + OnTimeout onTimeout = new OnTimeout(s, s.getOutputStream(), targetRequest, usingWWWProxy, + currentProxy, requestId, hostLowerCase, isConnect); + boolean keepaliveI2P = keepalive && getBooleanOption(OPT_KEEPALIVE_I2P, DEFAULT_KEEPALIVE_I2P); + hrunner = new I2PTunnelHTTPClientRunner(s, i2ps, sockLock, data, mySockets, onTimeout, + keepaliveI2P, keepalive, isHead); + t = hrunner; } if (usingWWWProxy) { t.setSuccessCallback(new OnProxySuccess(currentProxy, hostLowerCase, isConnect)); @@ -1416,7 +1506,26 @@ // we are called from an unlimited thread pool, so run inline //t.start(); t.run(); + + // I2PTunnelHTTPClientRunner spins off the browser-to-i2p thread and keeps + // the i2p-to-socket copier in-line. So we won't get here until the i2p socket is closed. + // check if whatever was in the response does not allow keepalive + if (keepalive && hrunner != null && !hrunner.getKeepAliveSocket()) + break; + // The old I2P socket was closed, null it out so we'll get a new one + // next time around + if (hrunner != null && !hrunner.getKeepAliveI2P()) + i2ps = null; + // go around again + requestCount++; + + // indent + } while (keepalive); + // indent + } catch(IOException ex) { + // This is normal for keepalive when the browser closed the socket, + // or a SocketTimeoutException if we gave up first if(_log.shouldLog(Log.INFO)) { _log.info(getPrefix(requestId) + "Error trying to connect", ex); } diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java 2024-04-10 02:29:57.000000000 +0000 @@ -1061,7 +1061,7 @@ try { URI u = new URI(uri); String h = u.getHost(); - String hu = IDN.toUnicode(h); + String hu = IDN.toUnicode(h, IDN.ALLOW_UNASSIGNED); if (hu == null || h.equals(hu)) return uri; int idx = uri.indexOf(h); @@ -1083,7 +1083,7 @@ return host; if (!host.contains("xn--")) return host; - return IDN.toUnicode(host); + return IDN.toUnicode(host, IDN.ALLOW_UNASSIGNED); } /** diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java 2024-04-10 02:29:57.000000000 +0000 @@ -8,8 +8,10 @@ import java.io.OutputStream; import java.net.Socket; import java.util.List; +import java.util.concurrent.RejectedExecutionException; import net.i2p.client.streaming.I2PSocket; +import net.i2p.util.I2PAppThread; /** * Override the response with a stream filtering the HTTP headers @@ -23,53 +25,186 @@ * Warning - not maintained as a stable API for external use. */ public class I2PTunnelHTTPClientRunner extends I2PTunnelRunner { + private HTTPResponseOutputStream _hout; + private final boolean _isHead; /** * Does NOT start itself. Caller must call start(). + * + * @deprecated use other constructor */ + @Deprecated public I2PTunnelHTTPClientRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List sockList, FailCallback onFail) { super(s, i2ps, slock, initialI2PData, null, sockList, onFail); + _isHead = false; + } + + /** + * Does NOT start itself. Caller must call start(). + * + * @param allowKeepAliveI2P we may, but are not required to, keep the I2P socket alive + * - Requires allowKeepAliveSocket + * @param allowKeepAliveSocket we may, but are not required to, keep the browser-side socket alive + * NO data will be forwarded from the socket to the i2psocket other than + * initialI2PData if this is true. + * @param isHead is this a response to a HEAD, and thus no data is expected (RFC 2616 sec. 4.4) + * @since 0.9.62 + */ + public I2PTunnelHTTPClientRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, + List sockList, FailCallback onFail, + boolean allowKeepAliveI2P, + boolean allowKeepAliveSocket, boolean isHead) { + super(s, i2ps, slock, initialI2PData, null, sockList, onFail, allowKeepAliveI2P, allowKeepAliveSocket); + if (allowKeepAliveI2P && !allowKeepAliveSocket) + throw new IllegalArgumentException(); + _isHead = isHead; } /** * Only call once! + * + * @return an HTTPResponseOutputStream + * @throws IllegalStateException if called again */ @Override protected OutputStream getSocketOut() throws IOException { + if (_hout != null) + throw new IllegalStateException("already called"); OutputStream raw = super.getSocketOut(); - return new HTTPResponseOutputStream(raw); + _hout = new HTTPResponseOutputStream(raw, super.getKeepAliveI2P(), super.getKeepAliveSocket(), _isHead, this); + return _hout; + } + + /** + * Should we keep the local browser socket open when done? + * @since 0.9.62 + */ + @Override + boolean getKeepAliveSocket() { + return _hout != null && _hout.getKeepAliveOut() && super.getKeepAliveSocket(); } /** - * Why is this overridden? - * Why flush in super but not here? - * Why do things in different order than in super? + * Should we keep the I2P socket open when done? + * @since 0.9.62 + */ + @Override + boolean getKeepAliveI2P() { + return _hout != null && _hout.getKeepAliveIn() && super.getKeepAliveI2P(); + } + + /** + * May not actually close either socket, depending on keepalive settings. + * + * @param out may be null + * @param in may be null + * @param i2pout may be null + * @param i2pin may be null + * @param s non-null + * @param i2ps non-null + * @param t1 may be null + * @param t2 may be null, ignored, we only join t1 */ @Override protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException { - if (i2pin != null) { try { - i2pin.close(); - } catch (IOException ioe) {} } - if (i2pout != null) { try { - i2pout.close(); - } catch (IOException ioe) {} } - if (in != null) { try { - in.close(); - } catch (IOException ioe) {} } + boolean keepaliveSocket = getKeepAliveSocket(); + boolean keepaliveI2P = getKeepAliveI2P(); + boolean threadI2PClose = keepaliveSocket && !keepaliveI2P && i2pout != null && !i2ps.isClosed(); + if (_log.shouldInfo()) + _log.info("Closing HTTPClientRunner keepaliveI2P? " + keepaliveI2P + " keepaliveSocket? " + keepaliveSocket + + " threadedClose? " + threadI2PClose, new Exception("I did it")); + if (threadI2PClose) { + // Thread the I2P stream/socket closing, because it is blocking, may take several seconds, + // and we don't want to delay the next request + Thread t = new I2PSocketCloser(i2pin, i2pout, i2ps); + TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(); + if (tcg != null) { + try { + tcg.getClientExecutor().execute(t); + } catch (RejectedExecutionException ree) {} + } else { + t.start(); + } + } else { + if (!keepaliveI2P) { + if (i2pin != null) { try { + i2pin.close(); + } catch (IOException ioe) {} } + } + if (i2pout != null) { try { + if (keepaliveI2P) + i2pout.flush(); + else + i2pout.close(); + } catch (IOException ioe) {} } + } + + if (!keepaliveSocket) { + if (in != null) { try { + in.close(); + } catch (IOException ioe) {} } + } + if (out != null) { try { - out.close(); + if (keepaliveSocket) + out.flush(); + else + out.close(); } catch (IOException ioe) {} } - try { - i2ps.close(); - } catch (IOException ioe) {} - try { - s.close(); - } catch (IOException ioe) {} + + if (!threadI2PClose && !keepaliveI2P) { + try { + i2ps.close(); + } catch (IOException ioe) {} + } + + if (!keepaliveSocket) { + try { + s.close(); + } catch (IOException ioe) {} + } if (t1 != null) t1.join(30*1000); - // t2 = fromI2P now run inline - //t2.join(30*1000); + } + + /** + * Thread the I2P socket close, so we don't hold up + * the next request if the browser socket is keepalive. + * + * @since 0.9.xx + */ + private class I2PSocketCloser extends I2PAppThread { + private final InputStream in; + private final OutputStream out; + private final I2PSocket s; + + /** + * @param in may be null + * @param out non-null + * @param i2ps non-null + */ + public I2PSocketCloser(InputStream i2pin, OutputStream i2pout, I2PSocket i2ps) { + in = i2pin; + out = i2pout; + s = i2ps; + } + + @Override + public void run() { + if (in != null) { + try { + in.close(); + } catch (IOException ioe) {} + } + try { + out.close(); + } catch (IOException ioe) {} + try { + s.close(); + } catch (IOException ioe) {} + //_log.info("(threaded) i2p socket closed"); + } } } diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java 2024-04-10 02:29:57.000000000 +0000 @@ -19,6 +19,8 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.atomic.AtomicInteger; import java.util.zip.GZIPOutputStream; import javax.net.ssl.SSLException; @@ -55,11 +57,13 @@ public static final String OPT_REJECT_REFERER = "rejectReferer"; public static final String OPT_REJECT_USER_AGENTS = "rejectUserAgents"; public static final String OPT_USER_AGENTS = "userAgentRejectList"; + public static final String OPT_KEEPALIVE = "keepalive.i2p"; public static final int DEFAULT_POST_WINDOW = 5*60; public static final int DEFAULT_POST_BAN_TIME = 20*60; public static final int DEFAULT_POST_TOTAL_BAN_TIME = 10*60; public static final int DEFAULT_POST_MAX = 6; public static final int DEFAULT_POST_TOTAL_MAX = 20; + private static final boolean DEFAULT_KEEPALIVE = true; /** what Host: should we seem to be to the webserver? */ private String _spoofHost; @@ -83,8 +87,8 @@ PROXY_HEADER, PROXY_CONN_HEADER}; /** timeout for first request line */ private static final long HEADER_TIMEOUT = 15*1000; - /** total timeout for the request and all the headers */ - private static final long TOTAL_HEADER_TIMEOUT = 2 * HEADER_TIMEOUT; + /** timeout for the rest of the request headers */ + private static final long HEADER_FINISH_TIMEOUT = HEADER_TIMEOUT; private static final long START_INTERVAL = (60 * 1000) * 3; private static final int MAX_LINE_LENGTH = 8*1024; /** ridiculously long, just to prevent OOM DOS @since 0.7.13 */ @@ -98,7 +102,8 @@ // Set a relatively short timeout for GET/HEAD, // and a long failsafe timeout for POST/CONNECT, since the user // could be POSTing a massive file - private static final int SERVER_READ_TIMEOUT_GET = 5*60*1000; + private static final int SERVER_READ_TIMEOUT_GET = 60*1000; + private static final int SERVER_READ_TIMEOUT_MEDIUM = 5*60*1000; private static final int SERVER_READ_TIMEOUT_POST = 4*60*60*1000; private long _startedOn = 0L; @@ -138,6 +143,7 @@ "

Inproxy access denied. You must run I2P to access this site.

\n" + ""; +/* private final static String ERR_SSL = "HTTP/1.1 503 Service Unavailable\r\n"+ "Content-Type: text/html; charset=iso-8859-1\r\n"+ @@ -148,6 +154,7 @@ "

503 Service Unavailable

\n" + "

This I2P website is not configured for SSL.

\n" + ""; +*/ private final static String ERR_REQUEST_URI_TOO_LONG = "HTTP/1.1 414 Request URI too long\r\n"+ @@ -291,15 +298,15 @@ if (socket.getLocalPort() == 443) { if (getTunnel().getClientOptions().getProperty("targetForPort.443") == null) { try { - socket.getOutputStream().write(ERR_SSL.getBytes("UTF-8")); - } catch (IOException ioe) { - } finally { - try { - socket.close(); - } catch (IOException ioe) {} - } + // can't write non-ssl error message + // client side already sent 200 to browser + socket.reset(); + } catch (IOException ioe) {} return; } + // We don't know if this is GET or POST or what, set a huge + // timeout and rely on the server to do the actual timeout + socket.setReadTimeout(SERVER_READ_TIMEOUT_POST); Socket s = getSocket(socket.getPeerDestination().calculateHash(), 443); Runnable t = new I2PTunnelRunner(s, socket, slock, null, null, null, (I2PTunnelRunner.FailCallback) null); @@ -308,6 +315,17 @@ } long afterAccept = getTunnel().getContext().clock().now(); + int requestCount = 0; + boolean keepalive = getBooleanOption(OPT_KEEPALIVE, DEFAULT_KEEPALIVE); + + // indent + do { + // indent + + if (requestCount > 0) { + if (_log.shouldInfo()) + _log.info("Keepalive, awaiting request #" + requestCount); + } // The headers _should_ be in the first packet, but // may not be, depending on the client-side options @@ -317,31 +335,39 @@ try { // catch specific exceptions thrown, to return a good // error to the client + // Add 10s to client-side timeout so the client will timeout first and minimize races + long timeout = requestCount > 0 ? I2PTunnelHTTPClient.BROWSER_KEEPALIVE_TIMEOUT + 10*1000 : HEADER_TIMEOUT; headers = readHeaders(socket, null, command, - CLIENT_SKIPHEADERS, getTunnel().getContext()); + CLIENT_SKIPHEADERS, getTunnel().getContext(), timeout); } catch (SocketTimeoutException ste) { - try { - socket.getOutputStream().write(ERR_REQUEST_TIMEOUT.getBytes("UTF-8")); - } catch (IOException ioe) { - } finally { - try { socket.close(); } catch (IOException ioe) {} + if (requestCount > 0) { + if (_log.shouldDebug()) + _log.debug("Timeout awaiting request #" + requestCount); + } else { + try { + sendError(socket, ERR_REQUEST_TIMEOUT); + } catch (IOException ioe) {} + if (_log.shouldLog(Log.WARN)) + _log.warn("Error in the HTTP request from " + peerB32, ste); } - if (_log.shouldLog(Log.WARN)) - _log.warn("Error in the HTTP request from " + peerB32, ste); + try { socket.close(); } catch (IOException ioe) {} return; } catch (EOFException eofe) { - try { - socket.getOutputStream().write(ERR_BAD_REQUEST.getBytes("UTF-8")); - } catch (IOException ioe) { - } finally { - try { socket.close(); } catch (IOException ioe) {} + if (requestCount > 0) { + if (_log.shouldDebug()) + _log.debug("Client closed awaiting request #" + requestCount); + } else { + try { + sendError(socket, ERR_BAD_REQUEST); + } catch (IOException ioe) {} + if (_log.shouldLog(Log.WARN)) + _log.warn("Error in the HTTP request from " + peerB32, eofe); } - if (_log.shouldLog(Log.WARN)) - _log.warn("Error in the HTTP request from " + peerB32, eofe); + try { socket.close(); } catch (IOException ioe) {} return; } catch (LineTooLongException ltle) { try { - socket.getOutputStream().write(ERR_HEADERS_TOO_LARGE.getBytes("UTF-8")); + sendError(socket, ERR_HEADERS_TOO_LARGE); } catch (IOException ioe) { } finally { try { socket.close(); } catch (IOException ioe) {} @@ -351,7 +377,7 @@ return; } catch (RequestTooLongException rtle) { try { - socket.getOutputStream().write(ERR_REQUEST_URI_TOO_LONG.getBytes("UTF-8")); + sendError(socket, ERR_REQUEST_URI_TOO_LONG); } catch (IOException ioe) { } finally { try { socket.close(); } catch (IOException ioe) {} @@ -361,7 +387,7 @@ return; } catch (BadRequestException bre) { try { - socket.getOutputStream().write(ERR_BAD_REQUEST.getBytes("UTF-8")); + sendError(socket, ERR_BAD_REQUEST); } catch (IOException ioe) { } finally { try { socket.close(); } catch (IOException ioe) {} @@ -398,7 +424,7 @@ try { // Send a 403, so the user doesn't get an HTTP Proxy error message // and blame his router or the network. - socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8")); + sendError(socket, ERR_INPROXY); } catch (IOException ioe) {} try { socket.close(); @@ -419,7 +445,7 @@ _log.warn("Refusing access from: " + peerB32 + " with Referer: " + referer); try { - socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8")); + sendError(socket, ERR_INPROXY); } catch (IOException ioe) {} try { socket.close(); @@ -446,7 +472,7 @@ _log.warn("Refusing access from: " + peerB32 + " with User-Agent: " + ua); try { - socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8")); + sendError(socket, ERR_INPROXY); } catch (IOException ioe) {} try { socket.close(); @@ -468,7 +494,7 @@ _log.warn("Refusing access from: " + peerB32 + " with empty User-Agent"); try { - socket.getOutputStream().write(ERR_INPROXY.getBytes("UTF-8")); + sendError(socket, ERR_INPROXY); } catch (IOException ioe) {} try { socket.close(); @@ -490,7 +516,7 @@ try { // Send a 429, so the user doesn't get an HTTP Proxy error message // and blame his router or the network. - socket.getOutputStream().write(ERR_DENIED.getBytes("UTF-8")); + sendError(socket, ERR_DENIED); } catch (IOException ioe) {} try { socket.close(); @@ -519,9 +545,35 @@ setEntry(headers, "Host", spoofHost); // Force Connection: close, unless websocket + boolean upgrade = false; String conn = getEntryOrNull(headers, "Connection"); - if (conn == null || !conn.toLowerCase(Locale.US).contains("upgrade")) + if (conn == null) { setEntry(headers, "Connection", "close"); + } else { + String connlc = conn.toLowerCase(Locale.US); + if (connlc.contains("upgrade")) { + upgrade = true; + keepalive = false; + } else { + if (!connlc.contains("keep-alive")) + keepalive = false; + setEntry(headers, "Connection", "close"); + } + } + + // HTTP Persistent Connections (RFC 2616) + // for the I2P socket. + // Keep it very simple. + // Will be set to false for non-GET/HEAD, non-HTTP/1.1, + // Connection: close, InternalSocket, + // or after analysis of the response headers in CompressedOutputStream, + // or on errors in I2PTunnelRunner. + // We do NOT support keepalive on the server socket. + String cmd = command.toString().trim(); + if (!cmd.endsWith(" HTTP/1.1") || + !(cmd.startsWith("GET ") || cmd.startsWith("HEAD "))) { + keepalive = false; + } // we keep the enc sent by the browser before clobbering it, since it may have // been x-i2p-gzip @@ -555,38 +607,68 @@ String modifiedHeader = formatHeaders(headers, command); if (_log.shouldLog(Log.DEBUG)) - _log.debug("Modified header: [" + modifiedHeader + "]"); + _log.debug("Modified headers: [\n" + modifiedHeader + "]"); - // Set a relatively short timeout for GET/HEAD, - // and a long failsafe timeout for POST/CONNECT, since the user - // could be POSTing a massive file - if (modifiedHeader.startsWith("GET ") || modifiedHeader.startsWith("HEAD ")) - s.setSoTimeout(SERVER_READ_TIMEOUT_GET); - else - s.setSoTimeout(SERVER_READ_TIMEOUT_POST); - boolean compress = allowGZIP && useGZIP; - Runnable t = new CompressedRequestor(s, socket, modifiedHeader, getTunnel().getContext(), _log, compress); + // waiter is notified when the thread is done + AtomicInteger waiter = keepalive ? new AtomicInteger() : null; + Runnable t = new CompressedRequestor(s, socket, modifiedHeader, getTunnel().getContext(), + _log, compress, upgrade, _clientExecutor, keepalive, waiter); // run in the unlimited client pool //t.start(); _clientExecutor.execute(t); long afterHandle = getTunnel().getContext().clock().now(); - long timeToHandle = afterHandle - afterAccept; - getTunnel().getContext().statManager().addRateData("i2ptunnel.httpserver.blockingHandleTime", timeToHandle); - if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) ) - _log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort + - " from: " + peerB32 + - " [" + timeToHandle + - ", read headers: " + (afterHeaders-afterAccept) + - ", socket create: " + (afterSocket-afterHeaders) + - ", start runners: " + (afterHandle-afterSocket) + - "]"); + if (requestCount == 0) { + long timeToHandle = afterHandle - afterAccept; + getTunnel().getContext().statManager().addRateData("i2ptunnel.httpserver.blockingHandleTime", timeToHandle); + if ( (timeToHandle > 1000) && (_log.shouldLog(Log.WARN)) ) + _log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort + + " from: " + peerB32 + + " [" + timeToHandle + + ", read headers: " + (afterHeaders-afterAccept) + + ", socket create: " + (afterSocket-afterHeaders) + + ", start runners: " + (afterHandle-afterSocket) + + "]"); + } + + if (keepalive) { + // wait for the response to finish, then determine + // if we can receive another request on this socket + if (_log.shouldDebug()) + _log.debug("Waiting for response " + requestCount + " to finish"); + try { + synchronized(waiter) { + if (waiter.get() == 0) + waiter.wait(30*1000); + } + } catch (InterruptedException ie) { + if (_log.shouldWarn()) + _log.warn("Interrupted waiting for response to finish"); + break; + } + if (_log.shouldInfo()) { + long timeToWait = getTunnel().getContext().clock().now() - afterAccept; + _log.info("Waited " + timeToWait + " for response " + requestCount + " to complete, code: " + waiter); + } + // 0: not done; 1: not keepalive-able response; 2: keepalive + if (waiter.get() != 2) + break; + } + + // go around again + requestCount++; + + // indent + } while (keepalive); + // indent + } catch (SocketException ex) { + int port = socket.getLocalPort(); try { // Send a 503, so the user doesn't get an HTTP Proxy error message // and blame his router or the network. - socket.getOutputStream().write(ERR_UNAVAILABLE.getBytes("UTF-8")); + sendError(socket, ERR_UNAVAILABLE); } catch (IOException ioe) {} try { socket.close(); @@ -594,7 +676,7 @@ // Don't complain too early, Jetty may not be ready. int level = getTunnel().getContext().clock().now() - _startedOn > START_INTERVAL ? Log.ERROR : Log.WARN; if (_log.shouldLog(level)) - _log.log(level, "Error connecting to HTTP server " + remoteHost + ':' + remotePort, ex); + _log.log(level, "Error connecting to HTTP server " + getSocketString(port)); } catch (IOException ex) { try { socket.close(); @@ -607,7 +689,7 @@ try { // Send a 503, so the user doesn't get an HTTP Proxy error message // and blame his router or the network. - socket.getOutputStream().write(ERR_UNAVAILABLE.getBytes("UTF-8")); + sendError(socket, ERR_UNAVAILABLE); } catch (IOException ioe) {} try { socket.close(); @@ -616,6 +698,17 @@ _log.error("OOM in HTTP server", oom); } } + + /** + * Send the message, unless port 443, then just reset + * @since 0.9.62 + */ + private static void sendError(I2PSocket socket, String resp) throws IOException { + if (socket.getLocalPort() == 443) + socket.reset(); + else + socket.getOutputStream().write(resp.getBytes("UTF-8")); + } private static class CompressedRequestor implements Runnable { private final Socket _webserver; @@ -625,47 +718,68 @@ // shadows _log in super() private final Log _log; private final boolean _shouldCompress; + private final boolean _upgrade; + private final ThreadPoolExecutor _tpe; + private boolean _keepalive; + private final AtomicInteger _waiter; private static final int BUF_SIZE = 8*1024; /** * @param shouldCompress if false, don't compress, just filter server headers + * @param waiter to notify when done; will set value to 1: not keepalive-able response, or 2: keepalive */ public CompressedRequestor(Socket webserver, I2PSocket browser, String headers, - I2PAppContext ctx, Log log, boolean shouldCompress) { + I2PAppContext ctx, Log log, boolean shouldCompress, boolean upgrade, + ThreadPoolExecutor tpe, boolean keepalive, AtomicInteger waiter) { _webserver = webserver; _browser = browser; _headers = headers; _ctx = ctx; _log = log; _shouldCompress = shouldCompress; + _upgrade = upgrade; + _tpe = tpe; + _keepalive = keepalive; + _waiter = waiter; } public void run() { OutputStream serverout = null; OutputStream browserout = null; + CompressedResponseOutputStream compressedout = null; InputStream browserin = null; InputStream serverin = null; Sender s = null; + Sender sender = null; IOException ioex = null; try { serverout = _webserver.getOutputStream(); - if (_log.shouldLog(Log.INFO)) - _log.info("request headers: " + _headers); serverout.write(DataHelper.getUTF8(_headers)); browserin = _browser.getInputStream(); - // Don't spin off a thread for this except for POSTs and PUTs - // TODO Upgrade: + // Don't spin off a thread for this except for POSTs and PUTs and Connection: Upgrade // beware interference with Shoutcast, etc.? - if ((!(_headers.startsWith("GET ") || _headers.startsWith("HEAD "))) || + boolean isHead = _headers.startsWith("HEAD "); + boolean isGet = _headers.startsWith("GET "); + boolean isPost = _headers.startsWith("POST "); + if (!(isGet || isHead) || + _upgrade || browserin.available() > 0) { // just in case - I2PAppThread sender = new I2PAppThread(new Sender(serverout, browserin, "server: browser to server", _log), - Thread.currentThread().getName() + "hcs"); - sender.start(); - } else { - // todo - half close? reduce MessageInputStream buffer size? + // Unless this is POST, set a huge + // timeout and rely on the server to do the actual timeout + _browser.setReadTimeout(isPost ? + SERVER_READ_TIMEOUT_MEDIUM : // medium + SERVER_READ_TIMEOUT_POST); // long + _keepalive = false; + sender = new Sender(serverout, browserin, "server: browser to server", _log); + // run in the unlimited client pool + _tpe.execute(sender); } + int timeout = (isGet || isHead) ? + SERVER_READ_TIMEOUT_GET : // short + SERVER_READ_TIMEOUT_POST; // long + _webserver.setSoTimeout(timeout); browserout = _browser.getOutputStream(); // NPE seen here in 0.7-7, caused by addition of socket.close() in the // catch (IOException ioe) block above in blockingHandle() ??? @@ -689,33 +803,48 @@ //Change headers to protect server identity StringBuilder command = new StringBuilder(128); Map> headers = readHeaders(null, serverin, command, - SERVER_SKIPHEADERS, _ctx); + SERVER_SKIPHEADERS, _ctx, timeout); String modifiedHeaders = formatHeaders(headers, command); + // after the headers, set a short timeout + _webserver.setSoTimeout(SERVER_READ_TIMEOUT_GET); if (_shouldCompress) { - CompressedResponseOutputStream compressedOut = new CompressedResponseOutputStream(browserout); - compressedOut.write(DataHelper.getUTF8(modifiedHeaders)); - s = new Sender(compressedOut, serverin, "server: server to browser compressor", _log); + compressedout = new CompressedResponseOutputStream(browserout, _keepalive); + compressedout.write(DataHelper.getUTF8(modifiedHeaders)); + s = new Sender(compressedout, serverin, "server: server to browser compressor", _log); + browserout = compressedout; } else { browserout.write(DataHelper.getUTF8(modifiedHeaders)); s = new Sender(browserout, serverin, "server: server to browser uncompressed", _log); } + if (_log.shouldInfo()) + _log.info("Running server-to-browser: compressed? " + _shouldCompress + " keepalive? " + _keepalive); s.run(); // same thread } catch (SSLException she) { _log.error("SSL error", she); try { - if (browserout == null) - browserout = _browser.getOutputStream(); - browserout.write(ERR_UNAVAILABLE.getBytes("UTF-8")); + if (_browser.getLocalPort() == 443) { + _browser.reset(); + } else { + if (browserout == null) + browserout = _browser.getOutputStream(); + browserout.write(ERR_UNAVAILABLE.getBytes("UTF-8")); + } } catch (IOException ioe) {} + _keepalive = false; } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) _log.warn("error compressing", ioe); - ioex = ioe; + ioex = ioe; + _keepalive = false; } finally { - if (ioex == null && s != null) + if (ioex == null && s != null) { ioex = s.getFailure(); + if (ioex == null && sender != null) + ioex = sender.getFailure(); + } if (ioex != null) { + _keepalive = false; // Reset propagation, simplified from I2PTunnelRunner boolean i2pReset = false; if (ioex instanceof I2PSocketException) { @@ -728,12 +857,6 @@ try { _webserver.setSoLinger(true, 0); } catch (IOException ioe) {} - try { - _webserver.close(); - } catch (IOException ioe) {} - try { - _browser.close(); - } catch (IOException ioe) {} } } if (!i2pReset && ioex instanceof SocketException) { @@ -745,16 +868,34 @@ try { _browser.reset(); } catch (IOException ioe) {} - try { - _webserver.close(); - } catch (IOException ioe) {} } } } - if (browserout != null) try { browserout.close(); } catch (IOException ioe) {} + if (_waiter != null) { + synchronized(_waiter) { + _waiter.set(_keepalive ? 2 : 1); + _waiter.notify(); + } + } + if (browserout != null) { + try { + if (_keepalive) { + if (compressedout != null) + compressedout.finish(); + else + browserout.flush(); + } else { + browserout.close(); + } + } catch (IOException ioe) {} + } if (serverout != null) try { serverout.close(); } catch (IOException ioe) {} - if (browserin != null) try { browserin.close(); } catch (IOException ioe) {} + if (!_keepalive && browserin != null) try { browserin.close(); } catch (IOException ioe) {} if (serverin != null) try { serverin.close(); } catch (IOException ioe) {} + try { _webserver.close(); } catch (IOException ioe) {} + if (!_keepalive) try { _browser.close(); } catch (IOException ioe) {} + if (_log.shouldInfo()) + _log.info("Finished server-to-browser: compressed? " + _shouldCompress + " keepalive? " + _keepalive); } } } @@ -767,6 +908,9 @@ private final Log _log; private IOException _failure; + /** + * Caller MUST close streams + */ public Sender(OutputStream out, InputStream in, String name, Log log) { _out = out; _in = in; @@ -781,16 +925,12 @@ DataHelper.copy(_in, _out); if (_log.shouldDebug()) _log.debug(_name + ": Done sending"); - //_out.flush(); } catch (IOException ioe) { if (_log.shouldLog(Log.DEBUG)) _log.debug(_name + " Error sending", ioe); synchronized(this) { _failure = ioe; } - } finally { - if (_out != null) try { _out.close(); } catch (IOException ioe) {} - if (_in != null) try { _in.close(); } catch (IOException ioe) {} } } @@ -810,28 +950,32 @@ private static class CompressedResponseOutputStream extends HTTPResponseOutputStream { private InternalGZIPOutputStream _gzipOut; - public CompressedResponseOutputStream(OutputStream o) { - super(o); - _dataExpected = -1; + public CompressedResponseOutputStream(OutputStream o, boolean keepalive) { + super(o, false, keepalive, false, null); } - + /** - * Overridden to peek at response code. Always returns line. + * Finish gzipping but don't close the output stream, + * if keepalive is true. + * + * @since 0.9.62 */ - @Override - protected String filterResponseLine(String line) { - String[] s = DataHelper.split(line, " ", 3); - if (s.length > 1 && - (s[1].startsWith("3") || s[1].startsWith("5"))) - _dataExpected = 0; - return line; + public void finish() throws IOException { + if (getKeepAliveOut()) { + if (_gzipOut != null) + _gzipOut.finish(); + else + flush(); + } else { + close(); + } } - + /** * Don't compress small responses or images. * Don't compress things that are already compressed. - * Compression is inline but decompression on the client side - * creates a new thread. + * Compression is inline, and decompression on the client side is now also, + * but it's still CPU. */ @Override protected boolean shouldCompress() { @@ -984,15 +1128,15 @@ * @since public since 0.9.57 for SOCKS */ public static Map> readHeaders(I2PSocket socket, InputStream in, StringBuilder command, - String[] skipHeaders, I2PAppContext ctx) throws IOException { + String[] skipHeaders, I2PAppContext ctx, long initialTimeout) throws IOException { HashMap> headers = new HashMap>(); StringBuilder buf = new StringBuilder(128); // slowloris / darkloris - long expire = ctx.clock().now() + TOTAL_HEADER_TIMEOUT; + long expire = ctx.clock().now() + initialTimeout + HEADER_FINISH_TIMEOUT; if (socket != null) { try { - readLine(socket, command, HEADER_TIMEOUT); + readLine(socket, command, initialTimeout); } catch (LineTooLongException ltle) { // convert for first line throw new RequestTooLongException("Request too long - max " + MAX_LINE_LENGTH); @@ -1083,7 +1227,7 @@ } /** - * Read a line teriminated by newline, with a total read timeout. + * Read a line terminated by newline, with a total read timeout. * * Warning - strips \n but not \r * Warning - 8KB line length limit as of 0.7.13, @throws IOException if exceeded diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCServer.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCServer.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCServer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCServer.java 2024-04-10 02:29:57.000000000 +0000 @@ -315,7 +315,7 @@ } /** - * Read a line teriminated by newline, with a total read timeout. + * Read a line terminated by newline, with a total read timeout. * * Warning - strips \n but not \r * Warning - 8KB line length limit as of 0.7.13, @throws IOException if exceeded diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java 2024-04-10 02:29:57.000000000 +0000 @@ -20,6 +20,7 @@ import net.i2p.client.streaming.I2PSocketException; import net.i2p.data.ByteArray; import net.i2p.data.DataHelper; +import net.i2p.i2ptunnel.util.LimitOutputStream.DoneCallback; import net.i2p.util.ByteCache; import net.i2p.util.Clock; import net.i2p.util.I2PAppThread; @@ -27,11 +28,14 @@ import net.i2p.util.Log; /** - * A thread that starts two more threads, one to forward traffic in each direction. + * A thread that starts one more thread if keepAliveSocket is false, + * to forward traffic in each direction. + * When keepAliveSocket is true, we do not expect additional data and do not + * need a forwarding thread from the socket to I2P. * * Warning - not maintained as a stable API for external use. */ -public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErrorListener { +public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErrorListener, DoneCallback { protected final Log _log; private static final AtomicLong __runnerId = new AtomicLong(); @@ -52,8 +56,6 @@ private volatile boolean finished; private final byte[] initialI2PData; private final byte[] initialSocketData; - /** when the last data was sent/received (or -1 if never) */ - private long lastActivityOn; /** when the runner started up */ private final long startedOn; private final List sockList; @@ -65,6 +67,10 @@ private long totalSent; // does not include initialSocketData private long totalReceived; + // not final, may be changed by extending classes + protected volatile boolean _keepAliveI2P, _keepAliveSocket; + private StreamForwarder toI2P; + private StreamForwarder fromI2P; /** * For use in new constructor @@ -167,6 +173,29 @@ } /** + * With keepAlive args. Does NOT start itself. Caller must call start(). + * + * @param slock the socket lock, non-null + * @param initialI2PData may be null + * @param initialSocketData may be null + * @param sockList may be null. Caller must add i2ps to the list! It will be removed here on completion. + * Will synchronize on slock when removing. + * @param onFail May be null. If non-null and no data (except initial data) was received, + * it will be run before closing s. + * @param keepAliveI2P Do not close the I2P socket when done. + * @param keepAliveSocket Do not close the local socket when done. + * For client side only; must be false for server side. + * NO data will be forwarded from the socket to the i2psocket other than + * initialI2PData if this is true. + * @since 0.9.62 + */ + public I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, + byte[] initialSocketData, List sockList, FailCallback onFail, + boolean keepAliveI2P, boolean keepAliveSocket) { + this(s, i2ps, slock, initialI2PData, initialSocketData, sockList, null, onFail, keepAliveI2P, keepAliveSocket, false); + } + + /** * Base constructor * * @param slock the socket lock, non-null @@ -182,6 +211,33 @@ private I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List sockList, Runnable onTimeout, FailCallback onFail, boolean shouldStart) { + this(s, i2ps, slock, initialI2PData, initialSocketData, sockList, null, onFail, false, false, shouldStart); + } + + /** + * Base constructor with keepAlive args + * + * @param slock the socket lock, non-null + * @param initialI2PData may be null + * @param initialSocketData may be null + * @param sockList may be null. Caller must add i2ps to the list! It will be removed here on completion. + * Will synchronize on slock when removing. + * @param onTimeout May be null. If non-null and no data (except initial data) was received, + * it will be run before closing s. + * @param onFail Trumps onTimeout + * @param shouldStart should thread be started in constructor (bad, false recommended) + * @param keepAliveI2P Do not close the I2P socket when done. + * @param keepAliveSocket Do not close the local socket when done. + * For client side only; must be false for server side. + * NO data will be forwarded from the socket to the i2psocket other than + * initialI2PData if this is true. + * @since 0.9.62 + */ + private I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, + byte[] initialSocketData, List sockList, Runnable onTimeout, + FailCallback onFail, + boolean keepAliveI2P, boolean keepAliveSocket, + boolean shouldStart) { this.sockList = sockList; this.s = s; this.i2ps = i2ps; @@ -190,15 +246,17 @@ this.initialSocketData = initialSocketData; this.onTimeout = onTimeout; _onFail = onFail; - lastActivityOn = -1; startedOn = Clock.getInstance().now(); _log = I2PAppContext.getGlobalContext().logManager().getLog(getClass()); + _keepAliveI2P = keepAliveI2P; + _keepAliveSocket = keepAliveSocket; if (_log.shouldLog(Log.INFO)) _log.info("I2PTunnelRunner started"); _runnerId = __runnerId.incrementAndGet(); - setName("I2PTunnelRunner " + _runnerId); - if (shouldStart) + if (shouldStart) { + setName("I2PTunnelRunner " + _runnerId); start(); + } } /** @@ -221,14 +279,8 @@ */ @Deprecated public long getLastActivityOn() { - return lastActivityOn; - } - -/**** - private void updateActivity() { - lastActivityOn = Clock.getInstance().now(); + return -1L; } -****/ /** * When this runner started up transferring data @@ -251,6 +303,50 @@ protected InputStream getSocketIn() throws IOException { return s.getInputStream(); } protected OutputStream getSocketOut() throws IOException { return s.getOutputStream(); } + + /** + * Should we keep the I2P socket open when done? + * On the client side, only true if the browser and the server side support it. + * On the server side, only true if the client supports it. + * @since 0.9.62 + */ + boolean getKeepAliveI2P() { + return _keepAliveI2P; + } + + /** + * Should we keep the local browser/server socket open when done? + * Usually true for client side. + * Always false for server side. + * @since 0.9.62 + */ + boolean getKeepAliveSocket() { + return _keepAliveSocket; + } + + /** + * The DoneCallback for the I2P socket. + * + * @since 0.9.62 + */ + public void streamDone() { + if (_keepAliveSocket && fromI2P != null) { + // we are client-side + // tell the from-I2P runner + if (_log.shouldInfo()) + _log.info("Stream done from I2P", new Exception("I did it")); + fromI2P.done = true; + } else if (_keepAliveI2P && toI2P != null) { + // we are server-side + // tell the to-I2P runner + if (_log.shouldInfo()) + _log.info("Stream done from Server", new Exception("I did it")); + toI2P.done = true; + } else { + if (_log.shouldWarn()) + _log.info("Unexpected stream done", new Exception("I did it")); + } + } private static final byte[] POST = { 'P', 'O', 'S', 'T', ' ' }; private static final byte[] PUT = { 'P', 'U', 'T', ' ' }; @@ -263,10 +359,7 @@ OutputStream out = null; InputStream i2pin = null; OutputStream i2pout = null; - StreamForwarder toI2P = null; - StreamForwarder fromI2P = null; try { - in = getSocketIn(); out = getSocketOut(); // = new BufferedOutputStream(s.getOutputStream(), NETWORK_BUFFER_SIZE); // unimplemented in streaming //i2ps.setSocketErrorListener(this); @@ -299,15 +392,25 @@ // this does not increment totalReceived out.write(initialSocketData); } - if (_log.shouldLog(Log.DEBUG)) + if (_log.shouldLog(Log.DEBUG)) { _log.debug("Initial data " + (initialI2PData != null ? initialI2PData.length : 0) + " written to I2P, " + (initialSocketData != null ? initialSocketData.length : 0) + " written to the socket, starting forwarders"); - if (!(s instanceof InternalSocket)) - in = new BufferedInputStream(in, 2*NETWORK_BUFFER_SIZE); - toI2P = new StreamForwarder(in, i2pout, true, null); + + } + if (_keepAliveSocket) { + // standard GET or HEAD, no data, do not thread a forwarder + // because we don't need it and + // we don't want it to swallow the next request + } else { + in = getSocketIn(); + // InternalSocket already has buffering + if (!(s instanceof InternalSocket)) + in = new BufferedInputStream(in, 2*NETWORK_BUFFER_SIZE); + toI2P = new StreamForwarder(in, i2pout, true, null); + toI2P.start(); + } fromI2P = new StreamForwarder(i2pin, out, false, _onSuccess); - toI2P.start(); // We are already a thread, so run the second one inline //fromI2P.start(); fromI2P.run(); @@ -330,7 +433,7 @@ // HTTPClient never sets initialSocketData. if (_onFail != null) { Exception e = fromI2P.getFailure(); - if (e == null) + if (e == null && toI2P != null) e = toI2P.getFailure(); _onFail.onFail(e); } else { @@ -339,7 +442,7 @@ } else { // Detect a reset on one side, and propagate to the other Exception e1 = fromI2P.getFailure(); - Exception e2 = toI2P.getFailure(); + Exception e2 = toI2P != null ? toI2P.getFailure() : null; Throwable c1 = e1 != null ? e1.getCause() : null; Throwable c2 = e2 != null ? e2.getCause() : null; if (c1 != null && c1 instanceof I2PSocketException) { @@ -365,11 +468,17 @@ } catch (InterruptedException ex) { if (_log.shouldLog(Log.ERROR)) _log.error("Interrupted", ex); + _keepAliveI2P = false; + _keepAliveSocket = false; } catch (SSLException she) { _log.error("SSL error", she); + _keepAliveI2P = false; + _keepAliveSocket = false; } catch (IOException ex) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Error forwarding", ex); + _keepAliveI2P = false; + _keepAliveSocket = false; } catch (IllegalStateException ise) { // JamVM (Gentoo: jamvm-1.5.4, gnu-classpath-0.98+gmp) //java.nio.channels.NotYetConnectedException @@ -384,9 +493,13 @@ // at net.i2p.i2ptunnel.I2PTunnelRunner.run(I2PTunnelRunner.java:167) if (_log.shouldLog(Log.WARN)) _log.warn("gnu?", ise); + _keepAliveI2P = false; + _keepAliveSocket = false; } catch (RuntimeException e) { if (_log.shouldLog(Log.ERROR)) _log.error("Internal error", e); + _keepAliveI2P = false; + _keepAliveSocket = false; } finally { removeRef(); if (i2pReset) { @@ -401,6 +514,8 @@ try { i2ps.close(); } catch (IOException ioe) {} + _keepAliveI2P = false; + _keepAliveSocket = false; } else if (sockReset) { if (_log.shouldWarn()) _log.warn("Got socket reset, resetting I2P socket"); @@ -410,6 +525,8 @@ try { s.close(); } catch (IOException ioe) {} + _keepAliveI2P = false; + _keepAliveSocket = false; } else { // now one connection is dead - kill the other as well, after making sure we flush try { @@ -418,14 +535,18 @@ } } } - + /** + * Warning - overridden in I2PTunnelHTTPClientRunner. + * Here we ignore keepalive and always close both sides. + * The HTTP flavor handles keepalive. + * * @param out may be null * @param in may be null * @param i2pout may be null * @param i2pin may be null * @param t1 may be null - * @param t2 may be null + * @param t2 may be null, ignored, we only join t1 */ protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException { @@ -451,20 +572,20 @@ } catch (IOException ioe) {} if (t1 != null) t1.join(30*1000); - // t2 = fromI2P now run inline - //t2.join(30*1000); } /** * Deprecated, unimplemented in streaming, never called. + * @deprecated unused */ + @Deprecated public void errorOccurred() { synchronized (finishLock) { finished = true; finishLock.notifyAll(); } } - + private void removeRef() { if (sockList != null) { synchronized (slock) { @@ -472,7 +593,7 @@ } } } - + /** * Forward data in one direction */ @@ -485,6 +606,8 @@ private final ByteCache _cache; private final SuccessCallback _callback; private volatile Exception _failure; + // does not need to be volatile, will be set from same thread + public boolean done; /** * Does not start itself. Caller must start() @@ -497,7 +620,8 @@ _callback = cb; direction = (toI2P ? "toI2P" : "fromI2P"); _cache = ByteCache.getInstance(32, NETWORK_BUFFER_SIZE); - setName("StreamForwarder " + _runnerId + '.' + direction); + if (toI2P) + setName("StreamForwarder " + _runnerId + '.' + direction); } @Override @@ -510,15 +634,11 @@ + from + " and " + to); } - // boo, hiss! shouldn't need this - the streaming lib should be configurable, but - // somehow the inactivity timer is sometimes failing to get triggered properly - //i2ps.setReadTimeout(2*60*1000); - ByteArray ba = _cache.acquire(); - byte[] buffer = ba.getData(); // new byte[NETWORK_BUFFER_SIZE]; + byte[] buffer = ba.getData(); try { int len; - while ((len = in.read(buffer)) != -1) { + while (!done && (len = in.read(buffer)) != -1) { if (len > 0) { out.write(buffer, 0, len); if (_toI2P) { @@ -583,15 +703,28 @@ _failure = ex; } finally { _cache.release(ba); - if (_log.shouldLog(Log.INFO)) { - _log.info(direction + ": done forwarding between " - + from + " and " + to); + boolean keepAliveFrom, keepAliveTo; + if (_toI2P) { + keepAliveFrom = _keepAliveSocket; + keepAliveTo = _keepAliveI2P; + } else { + keepAliveFrom = _keepAliveI2P; + keepAliveTo = _keepAliveSocket; } - try { - in.close(); - } catch (IOException ex) { - if (_log.shouldLog(Log.WARN)) - _log.warn(direction + ": Error closing input stream", ex); + if (_log.shouldLog(Log.INFO)) { + _log.info(direction + ": done forwarding from " + + from + " to " + to + + " keepalive from? " + keepAliveFrom + + " keepalive to? " + keepAliveTo + + " bytes: " + (_toI2P ? totalSent : totalReceived)); + } + if (!keepAliveFrom) { + try { + in.close(); + } catch (IOException ex) { + if (_log.shouldLog(Log.WARN)) + _log.warn(direction + ": Error closing input stream", ex); + } } try { // Thread must close() before exiting for a PipedOutputStream, @@ -601,10 +734,17 @@ // DON'T close if we have a timeout job and we haven't received anything, // or else the timeout job can't write the error message to the stream. // close() above will close it after the timeout job is run. - if (!((onTimeout != null || _onFail != null) && (!_toI2P) && totalReceived <= 0)) - out.close(); - else if (_log.shouldLog(Log.INFO)) - _log.info(direction + ": not closing so we can write the error message"); + if (!((onTimeout != null || _onFail != null) && (!_toI2P) && totalReceived <= 0)) { + if (keepAliveTo) + out.flush(); + else + out.close(); + } else { + if (_log.shouldInfo()) + _log.info(direction + ": not closing so we can write the error message"); + if (keepAliveTo) + out.flush(); + } } catch (IOException ioe) { if (_log.shouldLog(Log.DEBUG)) _log.debug(direction + ": Error flushing to close", ioe); diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelServer.java 2024-04-10 02:29:57.000000000 +0000 @@ -804,11 +804,12 @@ _log.warn("Took a while to handle the request for " + remoteHost + ':' + remotePort + " [" + timeToHandle + ", socket create: " + (afterSocket-afterAccept) + "]"); } catch (SocketException ex) { + int port = socket.getLocalPort(); try { socket.reset(); } catch (IOException ioe) {} if (_log.shouldLog(Log.ERROR)) - _log.error("Error connecting to server " + remoteHost + ':' + remotePort, ex); + _log.error("Error connecting to server " + getSocketString(port)); } catch (IOException ex) { _log.error("Error while waiting for I2PConnections", ex); } @@ -840,6 +841,21 @@ } /** + * Only for logging, to correctly show where we were trying to get to + * after getSocket() throws a SocketException + * + * @since 0.9.62 + */ + protected String getSocketString(int incomingPort) { + if (incomingPort != 0 && !_socketMap.isEmpty()) { + InetSocketAddress isa = _socketMap.get(Integer.valueOf(incomingPort)); + if (isa != null) + return isa.toString(); + } + return remoteHost.toString() + ':' + remotePort; + } + + /** * Get a regular or SSL socket depending on config. * The SSL config applies to all hosts/ports. * diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelTask.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelTask.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelTask.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelTask.java 2024-04-10 02:29:57.000000000 +0000 @@ -3,6 +3,8 @@ */ package net.i2p.i2ptunnel; +import java.util.Properties; + import net.i2p.client.I2PSession; import net.i2p.util.EventDispatcher; import net.i2p.util.EventDispatcherImpl; @@ -112,6 +114,17 @@ } /** + * @since 0.9.62 + */ + protected boolean getBooleanOption(String opt, boolean dflt) { + Properties opts = getTunnel().getClientOptions(); + String o = opts.getProperty(opt); + if (o != null) + return Boolean.parseBoolean(o); + return dflt; + } + + /** * Does nothing here. Extending classes may override. */ public void errorOccurred(I2PSession session, String message, Throwable error) { diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java 2024-04-10 02:29:57.000000000 +0000 @@ -28,7 +28,7 @@ import net.i2p.data.PrivateKey; import net.i2p.data.PublicKey; import net.i2p.data.SigningPublicKey; -import net.i2p.i2ptunnel.GunzipOutputStream; +import net.i2p.i2ptunnel.util.GunzipOutputStream; import net.i2p.i2ptunnel.I2PTunnelHTTPClientBase; import net.i2p.util.FileUtil; import net.i2p.util.PortMapper; diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java 2024-04-10 02:29:57.000000000 +0000 @@ -670,7 +670,7 @@ pout.flush(); // eat the response and headers buf.setLength(0); - I2PTunnelHTTPServer.readHeaders(destSock, null, buf, _skipHeaders, _context); + I2PTunnelHTTPServer.readHeaders(destSock, null, buf, _skipHeaders, _context, 15*1000); String[] f = DataHelper.split(buf.toString(), " ", 2); if (f.length < 2) throw new IOException("Bad response from proxy"); diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/ByteLimitOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/ByteLimitOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/ByteLimitOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/ByteLimitOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,77 @@ +package net.i2p.i2ptunnel.util; + +import java.io.EOFException; +import java.io.IOException; +import java.io.OutputStream; + +/** + * An OutputStream that limits how many bytes are written + * + * @since 0.9.62 + */ +public class ByteLimitOutputStream extends LimitOutputStream { + + private final long _limit; + private long _count; + + /** + * @param limit greater than zero + */ + public ByteLimitOutputStream(OutputStream out, DoneCallback done, long limit) { + super(out, done); + if (limit <= 0) + throw new IllegalArgumentException(); + _limit = limit; + } + + @Override + public void write(byte src[], int off, int len) throws IOException { + if (len == 0) + return; + if (_isDone) + throw new EOFException("done"); + long togo = _limit - _count; + boolean last = len >= togo; + if (last) + len = (int) togo; + super.write(src, off, len); + _count += len; + if (last) + setDone(); + } + +/* + public static void main(String[] args) throws Exception { + if (args.length != 1) { + System.err.println("Usage: ByteLimitOutputStream length < in > out"); + System.exit(1); + } + Test test = new Test(); + long limit = Long.parseLong(args[0]); + test.test(limit); + } + + static class Test implements DoneCallback { + private boolean run = true; + + public void test(long limit) throws Exception { + LimitOutputStream lout = new ByteLimitOutputStream(System.out, this, limit); + final byte buf[] = new byte[4096]; + try { + int read; + while (run && (read = System.in.read(buf)) != -1) { + lout.write(buf, 0, read); + } + } finally { + lout.close(); + } + } + + public void streamDone() { + System.err.println("Done"); + run = false; + } + } +*/ + +} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DechunkedOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DechunkedOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DechunkedOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DechunkedOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,188 @@ +package net.i2p.i2ptunnel.util; + +import java.io.EOFException; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +import net.i2p.data.DataHelper; + +/** + * Simple stream for checking and optionally removing RFC2616 chunked encoding to the output. + * + * @since 0.9.62 + */ +public class DechunkedOutputStream extends LimitOutputStream { + private final boolean _strip; + private State _state = State.LEN; + // During main part, how much is remaining in the chunk + // During the trailer, counts the trailer header size + private int _remaining; + + private static final byte[] CRLF = DataHelper.getASCII("\r\n"); + + private enum State { LEN, CR, LF, DATA, TRAILER, DONE } + + public DechunkedOutputStream(OutputStream raw, DoneCallback callback, boolean strip) { + super(raw, callback); + _strip = strip; + } + + @Override + public void write(byte buf[], int off, int len) throws IOException { + if (len <= 0) + return; + + for (int i = 0; i < len; i++) { + // _state is what we are expecting next + //System.err.println("State: " + _state + " i=" + i + " len=" + len + " remaining=" + _remaining + " char=0x" + Integer.toHexString(buf[off + i] & 0xff)); + switch (_state) { + // collect chunk len and possible ';' then wait for extension if any and CRLF + case LEN: { + int c = buf[off + i] & 0xff; + if (c >= '0' && c <= '9') { + if (_remaining >= 0x8000000) + throw new IOException("Chunk length too big"); + _remaining <<= 4; + _remaining |= c - '0'; + } else if (c >= 'a' && c <= 'f') { + if (_remaining >= 0x800000) + throw new IOException("Chunk length too big"); + _remaining <<= 4; + _remaining |= 10 + c - 'a'; + } else if (c >= 'A' && c <= 'F') { + if (_remaining >= 0x800000) + throw new IOException("Chunk length too big"); + _remaining <<= 4; + _remaining |= 10 + c - 'A'; + } else if (c == ';') { + _state = State.CR; + } else if (c == '\r') { + _state = State.LF; + } else if (c == '\n') { + if (_remaining > 0) + _state = State.DATA; + else + _state = State.TRAILER; + } else { + throw new IOException("Unexpected length char 0x" + Integer.toHexString(c)); + } + if (!_strip) + out.write(buf, off + i, 1); + break; + } + + // collect any chunk extension and CR then wait for LF + case CR: { + int c = buf[off + i] & 0xff; + if (c == '\r') { + _state = State.LF; + } else if (c == '\n') { + if (_remaining > 0) + _state = State.DATA; + else + _state = State.TRAILER; + } else { + // chunk extension between the ';' and the CR + } + if (!_strip) + out.write(buf, off + i, 1); + break; + } + + // collect LF then wait for DATA + case LF: { + int c = buf[off + i] & 0xff; + if (c == '\n') { + if (_remaining > 0) + _state = State.DATA; + else + _state = State.TRAILER; + } else { + throw new IOException("no LF after CR"); + } + if (!_strip) + out.write(buf, off + i, 1); + break; + } + + // collect DATA then wait for LEN + case DATA: { + int towrite = Math.min(_remaining, len - i); + out.write(buf, off + i, towrite); + // loop will increment + i += towrite - 1; + _remaining -= towrite; + if (_remaining <= 0) + _state = State.LEN; + break; + } + + // swallow and discard the Trailer headers until we find a plain CRLF + // we reuse _remaining here to count the size of the header + case TRAILER: { + int c = buf[off + i] & 0xff; + if (c == '\r') { + // stay here + } else if (c == '\n') { + if (_remaining <= 0) { + // that's it! + if (!_strip) + out.write(buf, off + i, 1); + _state = State.DONE; + setDone(); + return; + } else { + // stay here + _remaining = 0; + } + } else { + _remaining++; + } + if (!_strip) + out.write(buf, off + i, 1); + break; + } + + case DONE: { + throw new EOFException((len - i) + " extra bytes written after chunking done"); + } + } + } + } + +/* + public static void main(String[] args) throws Exception { + if (args.length != 1) { + System.err.println("Usage: DechunkedOutputStream true/false < in > out"); + System.exit(1); + } + Test test = new Test(); + boolean strip = Boolean.parseBoolean(args[0]); + test.test(strip); + } + + static class Test implements DoneCallback { + private boolean run = true; + + public void test(boolean strip) throws Exception { + LimitOutputStream cout = new DechunkedOutputStream(System.out, this, strip); + final byte buf[] = new byte[4096]; + try { + int read; + while (run && (read = System.in.read(buf)) != -1) { + cout.write(buf, 0, read); + } + } finally { + cout.close(); + } + } + + public void streamDone() { + System.err.println("Done"); + run = false; + } + } +*/ + +} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DummyOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DummyOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DummyOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/DummyOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,25 @@ +package net.i2p.i2ptunnel.util; + +import java.io.OutputStream; + +/** + * Write to nowhere + * + * @since 0.9.62 copied from susimail + */ +public class DummyOutputStream extends OutputStream { + + public void write(int val) {} + + @Override + public void write(byte src[]) {} + + @Override + public void write(byte src[], int off, int len) {} + + @Override + public void flush() {} + + @Override + public void close() {} +} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/GunzipOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/GunzipOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/GunzipOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/GunzipOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,430 @@ +package net.i2p.i2ptunnel.util; + +import java.io.EOFException; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.zip.CRC32; +import java.util.zip.Inflater; +import java.util.zip.InflaterOutputStream; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.i2ptunnel.util.LimitOutputStream.DoneCallback; +import net.i2p.util.Log; + +/** + * Gunzip implementation per + * RFC 1952, reusing + * java's standard CRC32 and Inflater and InflaterOutputStream implementations. + * + * Note that the underlying InflaterOutputStream cannot be reused after close(), + * so we don't have a Reusable version of this. + * + * Sets up GunzipOutputStream -- InflaterOutputStream -- CRC32OutputStream -- uncompressedStream + * + * Not a public API, subject to change, not for external use. + * + * Modified from net.i2p.util.ResettableGZIPInputStream to use Java 6 InflaterOutputstream + * @since 0.9.21, public since 0.9.50 for LocalHTTPServer, moved to util in 0.9.62 + */ +public class GunzipOutputStream extends InflaterOutputStream { + private static final int FOOTER_SIZE = 8; // CRC32 + ISIZE + private final byte _buf1[] = new byte[1]; + private boolean _complete; + private boolean _validated; + private final byte _footer[] = new byte[FOOTER_SIZE]; + private long _bytesReceived; + private long _bytesReceivedAtCompletion; + + private enum HeaderState { MB1, MB2, CF, MT0, MT1, MT2, MT3, EF, OS, FLAGS, + EH1, EH2, EHDATA, NAME, COMMENT, CRC1, CRC2, DONE } + private HeaderState _state = HeaderState.MB1; + private int _flags; + private int _extHdrToRead; + private final DoneCallback _callback; + private final Log _log; + + private static final OutputStream DUMMY_OUT = new DummyOutputStream(); + + /** + * Build a new Gunzip stream + */ + public GunzipOutputStream(OutputStream uncompressedStream) throws IOException { + this(uncompressedStream, null); + } + + /** + * With a callback when done + * + * @param cb may be null + * @since 0.9.62 + */ + public GunzipOutputStream(OutputStream uncompressedStream, DoneCallback cb) throws IOException { + super(new CRC32OutputStream(uncompressedStream), new Inflater(true)); + _log = I2PAppContext.getGlobalContext().logManager().getLog(GunzipOutputStream.class); + _callback = cb; + } + + @Override + public void write(int b) throws IOException { + _buf1[0] = (byte) b; + write(_buf1, 0, 1); + } + + @Override + public void write(byte buf[], int off, int len) throws IOException { + if (_complete) { + // shortcircuit so the inflater doesn't try to refill + // with the footer's data (which would fail, causing ZLIB err) + IOException ioe = new EOFException("Extra data written to gunzipper"); + if (_log.shouldWarn()) + _log.warn("EOF", ioe); + throw ioe; + } + boolean isFinished = inf.finished(); + for (int i = off; i < off + len; i++) { + if (!isFinished) { + if (_state != HeaderState.DONE) { + verifyHeader(buf[i]); + continue; + } + // ensure we call the same method variant so we don't depend on underlying implementation + super.write(buf, i, 1); + if (inf.finished()) { + isFinished = true; + _bytesReceivedAtCompletion = _bytesReceived + 1; + } + } + _footer[(int) (_bytesReceived++ % FOOTER_SIZE)] = buf[i]; + if (isFinished) { + long footerSize = _bytesReceived - _bytesReceivedAtCompletion; + // could be at 7 or 8... + // we write the first byte of the footer to the Inflater if necessary... + // see comments in ResettableGZIPInputStream for details + if (footerSize >= FOOTER_SIZE - 1) { + flush(); + try { + verifyFooter(); + _complete = true; + _validated = true; + if (_callback != null) + _callback.streamDone(); + return; + } catch (IOException ioe) { + // failed at 7, retry at 8 + if (footerSize == FOOTER_SIZE - 1 && i < off + len - 1) + continue; + _complete = true; + throw ioe; + } + } + } + } + } + + /** + * Inflater statistic + */ + public long getTotalRead() { + try { + return inf.getBytesRead(); + } catch (RuntimeException e) { + return 0; + } + } + + /** + * Inflater statistic + */ + public long getTotalExpanded() { + try { + return inf.getBytesWritten(); + } catch (RuntimeException e) { + // possible NPE in some implementations + return 0; + } + } + + /** + * Inflater statistic + */ + public long getRemaining() { + try { + return inf.getRemaining(); + } catch (RuntimeException e) { + // possible NPE in some implementations + return 0; + } + } + + /** + * Inflater statistic + */ + public boolean getFinished() { + try { + return inf.finished(); + } catch (RuntimeException e) { + // possible NPE in some implementations + return true; + } + } + + @Override + public void close() throws IOException { + if (_log.shouldWarn()) + _log.warn("Closing " + this); + _complete = true; + _state = HeaderState.DONE; + super.close(); + } + + @Override + public String toString() { + return "GunzipOutputStream read: " + getTotalRead() + " expanded: " + getTotalExpanded() + + " remaining: " + getRemaining() + " finished: " + getFinished() + + " footer complete: " + _complete + " validated: " + _validated; + } + + /** + * @throws IOException on CRC or length check fail + */ + private void verifyFooter() throws IOException { + int idx = (int) (_bytesReceived % FOOTER_SIZE); + byte[] footer; + if (idx == 0) { + footer = _footer; + } else { + footer = new byte[FOOTER_SIZE]; + for (int i = 0; i < FOOTER_SIZE; i++) { + footer[i] = _footer[(int) ((_bytesReceived + i) % FOOTER_SIZE)]; + } + } + + long actualSize = inf.getTotalOut(); + long expectedSize = DataHelper.fromLongLE(footer, 4, 4); + if (expectedSize != actualSize) + throw new IOException("gunzip expected " + expectedSize + " bytes, got " + actualSize); + + long actualCRC = ((CRC32OutputStream) out).getValue(); + long expectedCRC = DataHelper.fromLongLE(footer, 0, 4); + if (expectedCRC != actualCRC) + throw new IOException("gunzip CRC fail expected 0x" + Long.toHexString(expectedCRC) + + ", got 0x" + Long.toHexString(actualCRC)); + } + + /** + * Make sure the header is valid, throwing an IOException if it is bad. + * Pushes through the state machine, checking as we go. + * Call for each byte until HeaderState is DONE. + */ + private void verifyHeader(byte b) throws IOException { + int c = b & 0xff; + switch (_state) { + case MB1: + if (c != 0x1F) throw new IOException("First magic byte was wrong [" + c + "]"); + _state = HeaderState.MB2; + break; + + case MB2: + if (c != 0x8B) throw new IOException("Second magic byte was wrong [" + c + "]"); + _state = HeaderState.CF; + break; + + case CF: + if (c != 0x08) throw new IOException("Compression format is invalid [" + c + "]"); + _state = HeaderState.FLAGS; + break; + + case FLAGS: + _flags = c; + _state = HeaderState.MT0; + break; + + case MT0: + // ignore + _state = HeaderState.MT1; + break; + + case MT1: + // ignore + _state = HeaderState.MT2; + break; + + case MT2: + // ignore + _state = HeaderState.MT3; + break; + + case MT3: + // ignore + _state = HeaderState.EF; + break; + + case EF: + if ( (c != 0x00) && (c != 0x02) && (c != 0x04) ) + throw new IOException("Invalid extended flags [" + c + "]"); + _state = HeaderState.OS; + break; + + case OS: + // ignore + if (0 != (_flags & (1<<5))) + _state = HeaderState.EH1; + else if (0 != (_flags & (1<<4))) + _state = HeaderState.NAME; + else if (0 != (_flags & (1<<3))) + _state = HeaderState.COMMENT; + else if (0 != (_flags & (1<<6))) + _state = HeaderState.CRC1; + else + _state = HeaderState.DONE; + break; + + case EH1: + _extHdrToRead = c; + _state = HeaderState.EH2; + break; + + case EH2: + _extHdrToRead += (c << 8); + if (_extHdrToRead > 0) + _state = HeaderState.EHDATA; + else if (0 != (_flags & (1<<4))) + _state = HeaderState.NAME; + if (0 != (_flags & (1<<3))) + _state = HeaderState.COMMENT; + else if (0 != (_flags & (1<<6))) + _state = HeaderState.CRC1; + else + _state = HeaderState.DONE; + break; + + case EHDATA: + // ignore + if (--_extHdrToRead <= 0) { + if (0 != (_flags & (1<<4))) + _state = HeaderState.NAME; + if (0 != (_flags & (1<<3))) + _state = HeaderState.COMMENT; + else if (0 != (_flags & (1<<6))) + _state = HeaderState.CRC1; + else + _state = HeaderState.DONE; + } + break; + + case NAME: + // ignore + if (c == 0) { + if (0 != (_flags & (1<<3))) + _state = HeaderState.COMMENT; + else if (0 != (_flags & (1<<6))) + _state = HeaderState.CRC1; + else + _state = HeaderState.DONE; + } + break; + + case COMMENT: + // ignore + if (c == 0) { + if (0 != (_flags & (1<<6))) + _state = HeaderState.CRC1; + else + _state = HeaderState.DONE; + } + break; + + case CRC1: + // ignore + _state = HeaderState.CRC2; + break; + + case CRC2: + // ignore + _state = HeaderState.DONE; + break; + + case DONE: + default: + break; + } + } + + /** + * Calculate CRC32 along the way + * @since 0.9.61 + */ + private static class CRC32OutputStream extends FilterOutputStream { + + private final CRC32 _crc32; + + public CRC32OutputStream(OutputStream out) { + super(out); + _crc32 = new CRC32(); + } + + @Override + public void write(int c) throws IOException { + _crc32.update(c); + super.write(c); + } + + @Override + public void write(byte buf[], int off, int len) throws IOException { + _crc32.update(buf, off, len); + out.write(buf, off, len); + } + + public long getValue() { + return _crc32.getValue(); + } + } + +/**** + public static void main(String args[]) { + java.util.Random r = new java.util.Random(); + for (int i = 0; i < 1050; i++) { + byte[] b = new byte[i]; + r.nextBytes(b); + if (!test(b)) return; + } + for (int i = 1050; i < 64*1024; i+= 529) { + byte[] b = new byte[i]; + r.nextBytes(b); + if (!test(b)) return; + } + } + + private static boolean test(byte[] b) { + int size = b.length; + try { + java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(size); + java.util.zip.GZIPOutputStream o = new java.util.zip.GZIPOutputStream(baos); + o.write(b); + o.finish(); + o.flush(); + byte compressed[] = baos.toByteArray(); + + java.io.ByteArrayOutputStream baos2 = new java.io.ByteArrayOutputStream(size); + GunzipOutputStream out = new GunzipOutputStream(baos2); + out.write(compressed); + byte rv[] = baos2.toByteArray(); + if (rv.length != b.length) + throw new RuntimeException("read length: " + rv.length + " expected: " + b.length); + + if (!net.i2p.data.DataHelper.eq(rv, 0, b, 0, b.length)) { + throw new RuntimeException("foo, read=" + rv.length); + } else { + System.out.println("match, w00t @ " + size); + return true; + } + } catch (Exception e) { + System.out.println("Error dealing with size=" + size + ": " + e.getMessage()); + e.printStackTrace(); + return false; + } + } +****/ +} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/LimitOutputStream.java i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/LimitOutputStream.java --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/LimitOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/LimitOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,58 @@ +package net.i2p.i2ptunnel.util; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +/** + * Base class for limiting writes and calling a callback when finished + * + * @since 0.9.62 + */ +public abstract class LimitOutputStream extends FilterOutputStream { + + private final byte _buf1[]; + protected final DoneCallback _callback; + protected boolean _isDone; + + public interface DoneCallback { public void streamDone(); } + + /** + * @param done non-null + */ + public LimitOutputStream(OutputStream out, DoneCallback done) { + super(out); + _callback = done; + _buf1 = new byte[1]; + } + + @Override + public void write(int c) throws IOException { + _buf1[0] = (byte)c; + write(_buf1, 0, 1); + } + + /** + * Subclasses MUST override the following method + * such that it calls done() when finished + * and throws EOFException if called again + */ + @Override + public void write(byte buf[], int off, int len) throws IOException { + out.write(buf, off, len); + } + + + protected boolean isDone() { return _isDone; } + + /** + * flush(), call the callback, and set _isDone + */ + protected void setDone() throws IOException { + if (_isDone) + throw new IllegalStateException("already done"); + flush(); + _callback.streamDone(); + _isDone = true; + } +} diff -Nru i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/package.html i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/package.html --- i2p-2.4.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/package.html 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/util/package.html 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,9 @@ + + +

+HTTP utilities. +Not for external use; not maintained as a stable API. +Since 0.9.62 +

+ + diff -Nru i2p-2.4.0/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java i2p-2.5.0/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java --- i2p-2.4.0/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java 2024-04-10 02:29:57.000000000 +0000 @@ -28,7 +28,7 @@ headerString += "BLAH: something\r\n"; headerString += "\r\n"; InputStream in = fillInputStream(headerString); - Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext()); + Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext(), 15*1000); assertEquals(headers.size(), 1); //One header } @@ -38,7 +38,7 @@ headerString += "someHeader: oh my, duplication!\r\n"; headerString += "\r\n"; InputStream in = fillInputStream(headerString); - Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext()); + Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext(), 15*1000); assertEquals(headers.size(), 1); assertEquals(headers.get("someHeader").size(), 2); } @@ -51,7 +51,7 @@ headerString += "\r\n"; InputStream in = fillInputStream(headerString); StringBuilder builder = new StringBuilder(128); - Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, builder, new String[0], I2PAppContext.getGlobalContext()); + Map> headers = I2PTunnelHTTPServer.readHeaders(null, in, builder, new String[0], I2PAppContext.getGlobalContext(), 15*1000); String result = I2PTunnelHTTPServer.formatHeaders(headers, builder); int first = result.indexOf("abc"); assertTrue(first >= 0); diff -Nru i2p-2.4.0/apps/i2ptunnel/jsp/edit.jsp i2p-2.5.0/apps/i2ptunnel/jsp/edit.jsp --- i2p-2.4.0/apps/i2ptunnel/jsp/edit.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/jsp/edit.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -44,6 +44,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; } + diff -Nru i2p-2.4.0/apps/i2ptunnel/jsp/register.jsp i2p-2.5.0/apps/i2ptunnel/jsp/register.jsp --- i2p-2.4.0/apps/i2ptunnel/jsp/register.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/jsp/register.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -28,6 +28,7 @@ + diff -Nru i2p-2.4.0/apps/i2ptunnel/jsp/ssl.jsp i2p-2.5.0/apps/i2ptunnel/jsp/ssl.jsp --- i2p-2.4.0/apps/i2ptunnel/jsp/ssl.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/jsp/ssl.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -26,6 +26,7 @@ + diff -Nru i2p-2.4.0/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css i2p-2.5.0/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css --- i2p-2.4.0/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/jsp/themes/light/i2ptunnel.css 2024-04-10 02:29:57.000000000 +0000 @@ -930,7 +930,6 @@ #customOptions { margin-top: 15px !important; - width: 99%; } #tunnelDepth, #tunnelVariance, #tunnelQuantity, #tunnelBackupQuantity, diff -Nru i2p-2.4.0/apps/i2ptunnel/jsp/wizard.jsp i2p-2.5.0/apps/i2ptunnel/jsp/wizard.jsp --- i2p-2.4.0/apps/i2ptunnel/jsp/wizard.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/jsp/wizard.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -46,6 +46,7 @@ +
"> diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_cs.po i2p-2.5.0/apps/i2ptunnel/locale/messages_cs.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_cs.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_cs.po 2024-04-10 02:29:57.000000000 +0000 @@ -5,29 +5,29 @@ # # Translators: # A5h8d0wf0x , 2014 -# slrslr, 2022 -# trendspotter , 2020-2021 +# slrslr, 2022,2024 +# Jiří Podhorecký, 2020-2021 # Waseihou Watashi , 2012 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-17 13:12+0000\n" +"POT-Creation-Date: 2023-12-04 23:26+0000\n" "PO-Revision-Date: 2011-02-13 11:46+0000\n" -"Last-Translator: slrslr, 2022\n" -"Language-Team: Czech (http://www.transifex.com/otf/I2P/language/cs/)\n" +"Last-Translator: slrslr, 2022,2024\n" +"Language-Team: Czech (http://app.transifex.com/otf/I2P/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:498 -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:508 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:506 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:516 msgid "internal" msgstr "vnitřní" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:545 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:553 #, java-format msgid "{0} inbound tunnel" msgid_plural "{0} inbound tunnels" @@ -36,7 +36,7 @@ msgstr[2] "" msgstr[3] "" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:547 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:555 #, java-format msgid "{0} outbound tunnel" msgid_plural "{0} outbound tunnels" @@ -45,7 +45,7 @@ msgstr[2] "" msgstr[3] "" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:549 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:557 #, java-format msgid "{0} inbound, {0} outbound tunnel" msgid_plural "{0} inbound, {0} outbound tunnels" @@ -54,131 +54,131 @@ msgstr[2] "" msgstr[3] "" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:553 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:561 msgid "lower bandwidth and reliability" msgstr "snížit šířku pásma a spolehlivost" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:555 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:563 msgid "standard bandwidth and reliability" msgstr "standartní šířka pásma a spolehlivost" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:557 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:565 msgid "higher bandwidth and reliability" msgstr "vyšší šířka pásma a spolehlivost" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:100 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:103 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:615 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1093 msgid "Tunnels are not initialized yet, please reload in two minutes." msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:187 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:190 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:314 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." -msgstr "Neplatně odeslaný formulář, nejspíše jste použili tlačítka 'Zpět' nebo 'Znovu načíst' ve vašem prohlížeči. Prosím odešlete formulář znovu." +msgstr "Neplatné podání formuláře, nejspíše jste použili tlačítka 'Zpět' nebo 'Znovu načíst' ve vašem prohlížeči. Prosím odešlete formulář znovu." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:189 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:192 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:316 msgid "" "If the problem persists, verify that you have cookies enabled in your " "browser." -msgstr "" +msgstr "Pokud problém přetrvává, ověřte, že máte v prohlížeči zapnuté cookies." -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:246 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:249 msgid "Configuration reloaded for all tunnels" msgstr "Nastavení pro všechny tunely bylo opětovně nahráno." #. and give them something to look at in any case #. FIXME name will be HTML escaped twice -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:260 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:263 msgid "Starting tunnel" msgstr "Startuji tunel" #. and give them something to look at in any case #. FIXME name will be HTML escaped twice -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:274 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:277 msgid "Stopping tunnel" msgstr "Zastavuji tunel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:432 msgid "New Tunnel" msgstr "Nový tunel" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:444 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:530 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:452 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:568 msgid "Port not set" msgstr "Port není nastaven" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:532 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:570 msgid "Invalid port" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 msgid "Warning - ports less than 1024 are not recommended" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:437 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:475 msgid "Warning - duplicate port" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:494 msgid "Standard client" msgstr "Standardní klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:495 msgid "HTTP/HTTPS client" msgstr "" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:496 msgid "IRC client" msgstr "Klient pro IRC" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:497 msgid "Standard server" msgstr "Standardní server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:498 msgid "HTTP server" msgstr "HTTP server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:499 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS 4/4a/5 proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:500 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:501 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS proxy" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:502 msgid "IRC server" msgstr "IRC server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:503 msgid "Streamr client" msgstr "Streamr klient" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504 msgid "Streamr server" msgstr "Streamr server" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505 msgid "HTTP bidir" msgstr "HTTP bidir" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:524 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:493 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:562 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:491 msgid "Host not set" msgstr "Host není nastaven" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:526 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:564 msgid "Invalid address" msgstr "" @@ -211,58 +211,58 @@ msgstr "Nové nastavení proxy" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:260 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1134 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:460 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450 msgid "Name" msgstr "Jméno" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1115 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1136 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:224 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:461 msgid "Type" msgstr "Typ" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:264 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1117 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1138 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:452 msgid "" "Name of tunnel to be displayed on Tunnel Manager home page and the router " "console sidebar" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:270 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:648 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1144 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:456 msgid "Description" msgstr "Popis" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:272 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1125 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1146 msgid "Auto Start Tunnel" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:274 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:458 msgid "Description of tunnel to be displayed on Tunnel Manager home page" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1152 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:601 msgid "" "Enable this option to ensure this service is available when the router " "starts" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:282 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1135 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1156 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:605 msgid "Automatically start tunnel when router starts" msgstr "" @@ -277,229 +277,237 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:301 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1175 msgid "Target" msgstr "Cíl" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:303 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1173 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1221 msgid "Access Point" msgstr "Přístupové místo (access point)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:306 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1026 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1169 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1207 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2402 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:466 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:487 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:510 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:696 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1040 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1190 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:705 msgid "Port" msgstr "Port" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1193 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552 +msgid "Specify the local port this service should be accessible from" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:318 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:336 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:435 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1174 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1287 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1203 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1234 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:500 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:556 msgid "required" msgstr "požadováno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:315 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1177 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:512 -msgid "Specify the local port this service should be accessible from" -msgstr "" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:330 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1020 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1161 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2396 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1034 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1182 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:521 msgid "Host" msgstr "Host" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1163 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:523 msgid "Hostname or IP address of the target server" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:340 msgid "Local interface (ip address) the client tunnel will be reachable from" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:351 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1229 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:538 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:709 msgid "Reachable by" msgstr "Dosažitelné (kým)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:373 msgid "Use SSL?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:375 msgid "" "If you are accessing a service on a remote I2P router, you may wish to " "connect with SSL to avoid traffic interception. The client application " "should be also be configured to use SSL." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:379 msgid "Clients use SSL to connect to tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:394 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:478 msgid "Outproxies" msgstr "Výstupní proxy (Outproxies)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:396 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:428 msgid "" "Specify the .i2p address or destination (b32 or b64) of the outproxy here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:398 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:410 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:454 msgid "" "For a random selection from a pool, separate with commas e.g. " "server1.i2p,server2.i2p" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:412 +msgid "Outproxy Type" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:426 msgid "SSL Outproxies" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:418 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:438 msgid "Use Outproxy Plugin" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:440 msgid "" "If an outproxy plugin is installed (e.g. Orchid), use this instead of any " "configured outproxies to access websites outside of I2P" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:444 msgid "Use plugin instead of above-listed proxies if available" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:430 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:494 msgid "Tunnel Destination" msgstr "Cíl tunelu" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:452 msgid "" "Specify the .i2p address or destination (b32 or b64) of the tunnel here." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:446 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:502 msgid "name, name:port, or destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:466 msgid "b32 not recommended" msgstr "není doporučeno b32" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:465 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:643 msgid "Shared Client" msgstr "Sdílený klient" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:484 msgid "" "Traffic from all clients with this feature enabled will be routed over the " "same set of tunnels. This will make profiling the tunnels by an adversary " "more difficult, but will link the clients together." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:495 msgid "Share tunnels with other clients?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:513 msgid "Enable DCC" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:515 msgid "Enables direct chat and file transfers, bypassing I2P" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:519 msgid "" "Enable Direct Client-to-Client protocol. Note that this will compromise your" " anonymity and is not recommended." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:511 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1403 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1412 msgid "Advanced networking options" msgstr "Rozšířená síťová nastavení" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:519 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:533 msgid "" "Note: When this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1414 msgid "Tunnel Length Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:527 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1416 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1524 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1533 msgid "Length" msgstr "Délka" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:529 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1418 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1526 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1535 msgid "Variance" msgstr "Odchylka" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1420 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1528 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1537 msgid "Length of each Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:539 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:544 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:554 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:562 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:566 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:570 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:574 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:581 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1427 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1432 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1450 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1454 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1458 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1462 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1469 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1535 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1539 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1543 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1547 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1551 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1559 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1563 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1446 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1451 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1467 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1478 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1544 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1548 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1552 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1556 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1560 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1564 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1572 #, java-format msgid "{0} hop tunnel" msgid_plural "{0} hop tunnel" @@ -508,135 +516,135 @@ msgstr[2] "" msgstr[3] "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:540 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1428 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:554 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1437 msgid "no anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:545 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1442 msgid "low anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:550 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1438 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:564 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1447 msgid "medium anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1452 msgid "high anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:587 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:601 msgid "Level of Randomization for Tunnel Length" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:594 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1481 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1572 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:608 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1490 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1581 msgid "0 hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:595 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1482 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:609 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1491 msgid "no randomization, consistent performance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:599 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1486 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1585 msgid "+ 0-1 hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:600 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1496 msgid "medium randomization, lower performance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:604 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1491 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1500 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1589 msgid "+ 0-2 hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:605 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1501 msgid "high randomization, very low performance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:609 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1496 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1593 msgid "+/- 0-1 hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:610 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1506 msgid "standard randomization, standard performance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:614 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1501 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1588 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1597 msgid "+/- 0-2 hop variance" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:615 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1511 msgid "not recommended" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:626 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1513 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1599 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1522 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1608 msgid "hop variance" msgstr "odchylka hop" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:631 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1608 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1617 msgid "Tunnel Quantity Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:633 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1619 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1669 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1628 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1678 msgid "Count" msgstr "Počet" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:635 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1621 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1671 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:649 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1630 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1680 msgid "Backup Count" msgstr "Počet Záloh" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:637 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1623 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1673 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:651 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1632 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1682 msgid "Number of Tunnels in Group" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:641 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1627 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:655 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1636 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1686 msgid "Number of Reserve Tunnels" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:649 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:654 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:659 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:663 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:668 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:673 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1634 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1639 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1644 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1649 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:678 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:687 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1643 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1648 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1653 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1658 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1684 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1688 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1692 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1696 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1703 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1667 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1693 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1697 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1701 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1705 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1712 #, java-format msgid "{0} backup tunnel" msgid_plural "{0} backup tunnels" @@ -645,861 +653,861 @@ msgstr[2] "" msgstr[3] "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:650 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1635 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1644 msgid "no redundancy, no added resource usage" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:655 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1640 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1649 msgid "low redundancy, low resource usage" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:660 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1645 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:674 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1654 msgid "medium redundancy, medium resource usage" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:665 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:679 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1659 msgid "high redundancy, high resource usage" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:679 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:693 msgid "Tunnel Management Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:685 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2259 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:699 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2268 msgid "Profile" msgstr "Profil" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:687 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:701 msgid "Delay Connect" msgstr "Spozdit Připojení" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:689 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:703 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2270 msgid "Connection Profile" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:696 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:710 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2277 msgid "interactive connection" msgstr "interaktivní spojení" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:700 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:714 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2281 msgid "bulk connection (downloads/websites/BT)" msgstr "hromadné spojení (stahování/webové stránky/BT)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:702 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:716 msgid "Delay Connection" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:706 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:720 msgid "for request/response connections" msgstr "pro spojení požadavků/odpovědí" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:718 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:732 msgid "Delay tunnel open until required" msgstr "Zpozdit otevření tunelu dokud není vyžadováno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:720 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:734 msgid "Conserve resources by only creating tunnels when required" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:724 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:738 msgid "" "Delay opening client tunnel until activity is detected on the configured " "tunnel port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:730 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2278 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:744 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2287 msgid "Reduce tunnel quantity when idle" msgstr "Snížit kvantitu tunelu při nečinnosti" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:732 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:746 msgid "" "Reduce tunnel count when idle but keep tunnel open (to ensure immediate " "availability)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:736 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2282 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2291 msgid "Reduce tunnel quantity when idle to conserve resources" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:738 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:740 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:752 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:754 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2293 msgid "Reduced tunnel count" msgstr "Snížený počet tunelů" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:744 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:758 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2290 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:772 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2299 msgid "Idle period" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:746 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:760 msgid "Reduced Tunnel Idle Time" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:764 msgid "Close tunnels when idle" msgstr "Zavřít tunely při nečinnosti" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:752 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:766 msgid "To conserve resources, close tunnels when not in use" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:756 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:770 msgid "Close client tunnels after specified idle period" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:760 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:774 msgid "Close Tunnel Idle Time" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:770 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:784 msgid "Change tunnel identity (destination) when tunnels reopen" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:772 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:786 msgid "Retain tunnel identity (destination) when tunnels reopen" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:778 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:792 msgid "New Keys on Reopen" msgstr "Nové Klíče při Opětovném otevření." -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:784 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:798 msgid "Enable" msgstr "Zapnout" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:790 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1734 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1744 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2180 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:804 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1743 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1753 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2189 msgid "Disable" -msgstr "Zakázat" +msgstr "Vypnout" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:802 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:816 msgid "Persistent private key" msgstr "Trvalý privátní klíč" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:805 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:819 msgid "" "Enabling this feature will ensure your tunnel identity (destination) remains" " static, for services offering features based on destination e.g. IRC user " "authentication" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:807 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2091 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:821 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1297 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2100 msgid "Path to Private Key File" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:816 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:830 msgid "Generate key to enable persistent client tunnel identity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:818 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:832 msgid "File" msgstr "Soubor" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:830 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1270 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:844 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1283 msgid "Local destination" msgstr "Místní cíl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:832 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1279 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:846 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1292 msgid "Read Only: Local Destination (if known)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:836 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:850 msgid "Local Base32" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:847 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:861 msgid "Tunnel Filtering Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:849 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:863 msgid "HTTP Filtering" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:851 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:865 msgid "" "When enabled, the user agent of your web browser or http client will not be " "spoofed, potentially reducing your anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:855 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:869 msgid "Do not spoof User-Agent header" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:857 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:871 msgid "" "When enabled, the referer (originating page) of your web requests will not " "be filtered, potentially reducing your anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:861 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:875 msgid "Do not block Referer header" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:863 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:877 msgid "" "When enabled, the accept headers (mime types support) broadcast by your web " "browser will not be filtered, potentially reducing your anonymity" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:867 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:881 msgid "Do not block Accept headers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:869 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:883 msgid "Allow SSL to I2P addresses when enabled" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:873 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:887 msgid "Allow SSL to I2P addresses" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:881 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2014 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:895 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2023 msgid "Configuration cannot be changed after destination is created" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:886 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1719 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:900 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1728 msgid "Tunnel Cryptography Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:890 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2023 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:904 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2032 msgid "Signature type" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:894 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2027 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:908 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2036 msgid "Legacy option (deprecated), provided for backward compatibility" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:923 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2048 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:937 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2057 msgid "This is the default, recommended option" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:938 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2070 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:952 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2079 msgid "Encryption types" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:952 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2084 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:966 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2093 msgid "Both encryption types" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:958 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:972 msgid "Tunnel Authentication Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:960 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:974 msgid "Local Authorization" msgstr "Místní Autorizace" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:962 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:976 msgid "" "Enable to require a username and password to access this local service (for " "example if hosting on a LAN)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:966 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:980 msgid "Require local authorization for this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:968 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:984 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:982 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:998 msgid "Username" msgstr "Uživatelské jméno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:970 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:984 msgid "Set username required to access this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:972 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:990 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:986 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1004 msgid "Password" msgstr "Heslo" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:974 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1854 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:988 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1863 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1043 msgid "Set password required to access this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:976 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:990 msgid "Outproxy Authorization" msgstr "Outproxy Autorizace" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:978 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:992 msgid "Enable if the outproxy a username and password to access" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:982 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:996 msgid "Outproxy requires authorization" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:986 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1000 msgid "Enter username required by outproxy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:992 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1006 msgid "Enter password required by outproxy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1002 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1016 msgid "Tunnel Address Lookup Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1004 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1018 msgid "Jump URL List" msgstr "Skočit v Seznamu URL" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1006 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1020 msgid "" "List of helper URLs providing jump links when a host is not found in your " "addressbook" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1018 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1032 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2403 msgid "Router I2CP Address" msgstr "Adresa Routeru I2CP" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1022 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2398 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1036 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2407 msgid "I2CP Hostname or IP" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1028 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2404 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1042 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2413 msgid "I2CP Port Number" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1036 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1050 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2421 msgid "Custom options" msgstr "Vlastní možnosti" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1038 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2414 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1052 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2423 msgid "Advanced tunnel, streaming, and I2CP options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1042 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2418 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1056 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2427 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:599 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:745 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:738 msgid "Cancel" msgstr "Zrušit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1044 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1062 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2433 msgid "Delete this Proxy (cannot be undone)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1047 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2423 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1064 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2435 msgid "Delete" msgstr "Smazat" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1049 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1070 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2441 msgid "Save" msgstr "Uložit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1062 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1083 msgid "Edit Server Settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1073 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1094 msgid "New Server Settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1138 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1159 msgid "The hidden service must be stopped to change this setting" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1178 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:533 msgid "Specify the port the server is running on" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1193 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1209 msgid "" "To avoid traffic sniffing if connecting to a remote server, you can enable " "an SSL connection. Note that the target server must be configured to accept " "SSL connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1197 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1213 msgid "Use SSL to connect to target" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1215 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1226 msgid "" "Port required to access service (this can be a different port to the port " "the service is hosted on)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:540 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:567 msgid "" "Listening interface (IP address) for client access (normally 127.0.0.1)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1259 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1272 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:659 msgid "Website Hostname" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1274 msgid "Website Hostname e.g. mysite.i2p" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1265 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1278 msgid "(leave blank for outproxies)" msgstr "(nechejte prázdné pro výstupní proxiny)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1277 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1290 msgid "Private key file" msgstr "Soubor s privátním klíčem" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1348 msgid "Generate a QR Code for this domain" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1347 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2133 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2141 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2150 msgid "Generate QR Code" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1354 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2157 msgid "Add to Private addressbook" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1360 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1369 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2163 msgid "Add to local addressbook" msgstr "Přidat do lokální knihy kontaktů (addressbook)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1366 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1375 msgid "Register, unregister or change details for hostname" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1380 msgid "Registration Authentication" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1386 msgid "HTTPS configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1391 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:215 msgid "SSL Wizard" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1392 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2164 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2173 msgid "" "Note: In order to enable QR code generation or registration authentication, " "configure the Website Hostname field (for websites) or the Name field " "(everything else) above with an .i2p suffixed hostname e.g. mynewserver.i2p" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1410 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1622 msgid "Inbound" msgstr "Příchozí" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1474 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1565 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1483 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1574 msgid "Level of Randomization for Tunnel Depth" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1522 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1667 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1676 msgid "Outbound" msgstr "Odchozí" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1721 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1730 msgid "Encrypt Leaseset" msgstr "Šifrovat Leaseset" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1730 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1740 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2176 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1739 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1749 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2185 msgid "Allow all clients to connect to this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1750 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1780 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1759 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1789 msgid "Send key to all users." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1754 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1784 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1763 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1793 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "Encrypted" msgstr "Zašifrováno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1764 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1773 msgid "Prevents server discovery by floodfills" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1768 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1777 msgid "Blinded" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1774 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1783 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1808 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1821 msgid "Send password to all users." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1778 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1787 msgid "Blinded with lookup password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1786 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1795 msgid "Send key and password to all users." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1790 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 msgid "Encrypted with lookup password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1792 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1798 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1801 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1807 msgid "Send individual key to each user." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1796 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1809 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1818 msgid "Encrypted with per-user key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1803 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1816 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1825 msgid "Encrypted with lookup password and per-user key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1811 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1814 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1820 msgid "Enter key from each user." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1829 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1838 msgid "Optional lookup password" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1844 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1853 msgid "Encryption Key" msgstr "Šifrovací klíč" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1872 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1881 msgid "Encryption key required to access this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1886 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1895 msgid "Revoke" msgstr "Odvolat platnost" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1888 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1925 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1897 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1934 msgid "Client Name" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1890 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1933 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1899 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1942 msgid "Client Key" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1907 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1939 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1916 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1948 msgid "Client" msgstr "Klient" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1923 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1932 msgid "Add" msgstr "Přidat" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2055 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2064 msgid "Recommended for blinded and encrypted destinations" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2097 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2106 msgid "Alternate private key file" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2120 msgid "Alternate local destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2122 msgid "Read Only: Alternate Local Destination" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2172 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2181 msgid "Tunnel Access Control Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2174 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2183 msgid "Restricted Access List" msgstr "Seznam těch s omezeným přístupem" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2182 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2191 msgid "Prevent listed clients from connecting to this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2186 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2195 msgid "Deny List" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2188 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2197 msgid "Only allow listed clients to connect to this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2201 msgid "Allow List" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2203 msgid "Access List Description" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2196 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2205 msgid "Specify clients, 1 per line" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2207 msgid "Control access to this service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2211 msgid "Filter Definition File" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2204 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2213 msgid "You can define an advanced filter for this tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2206 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2215 msgid "Format Specification" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2217 msgid "Absolute path to file containing filter definition" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2221 msgid "Server Access Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2227 msgid "Prevent clients from accessing this service via an inproxy" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2231 msgid "Block Access via Inproxies" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2235 msgid "Block Accesses containing Referers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2237 msgid "Deny User-Agents matching these strings (probably from inproxies)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2232 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 msgid "Block these User-Agents" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2234 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2243 msgid "comma separated, e.g. Mozilla,Opera (case-sensitive)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2250 msgid "" "Use unique IP addresses for each connecting client (local non-SSL servers " "only)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2254 msgid "Unique Local Address per Client" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2256 msgid "Only enable if you are hosting this service on multiple routers" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2260 msgid "Optimize for Multihoming" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2262 msgid "Tunnel Performance Options" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2286 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2295 msgid "Number of tunnels to keep open to maintain availability of service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2301 msgid "Period of inactivity before tunnel number is reduced" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2296 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2366 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2378 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2305 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2387 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2395 msgid "minutes" msgstr "minut" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2307 msgid "Server Throttling" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2309 msgid "Inbound connection limits" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 msgid "Per Minute" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2313 msgid "Per Hour" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2315 msgid "Per Day" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2308 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2317 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2365 msgid "Per Client" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2320 msgid "unlimited" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2323 msgid "" "Maximum number of web page requests per minute for a unique client before " "access to the server is blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2318 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2327 msgid "" "Maximum number of web page requests per hour for a unique client before " "access to the server is blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2331 msgid "" "Maximum number of web page requests per day for a unique client before " "access to the server is blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2326 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2377 msgid "Total" msgstr "Celkově" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2337 msgid "" "Total number of web page requests per minute before access to the server is " "blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2341 msgid "" "Total number of web page requests per hour before access to the server is " "blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2336 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2345 msgid "" "Total number of web page requests per day before access to the server is " "blocked" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2340 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2349 msgid "Max concurrent connections" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2342 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2351 msgid "Maximum number of simultaneous client connections" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2359 msgid "POST limits" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2352 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2361 msgid "Per Period" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2354 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2363 msgid "Ban Duration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2367 msgid "" "Maximum number of post requests permitted for a unique client for the " "configured time span" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2371 msgid "" "If a client exceeds the maximum number of post requests per allocated " "period, enforce a ban for this number of minutes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2370 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2379 msgid "Total number of post requests permitted for the configured time span" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2374 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2383 msgid "" "If the maximum number of post requests per allocated period is exceeded, " "enforce a global access ban for this number of minutes" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2389 msgid "POST limit period" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2391 msgid "" "Time span for the maximum number of post requests to be reached before a ban" " is triggered" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2451 msgid "Tunnels not initialized yet; please retry in a few moments." msgstr "" @@ -1555,155 +1563,157 @@ msgstr "Ukazuje na" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:228 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:288 msgid "Preview" msgstr "Náhled" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:467 msgid "Status" msgstr "Stav" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:469 msgid "Control" msgstr "Control" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 msgid "Edit Server Tunnel Settings for" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 msgid "Test HTTPS server, bypassing I2P" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 msgid "Test HTTP server, bypassing I2P" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 msgid "Test HTTP server through I2P" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293 msgid "No Preview" msgstr "Bez náhledu" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:512 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:513 msgid "Starting..." msgstr "Spouštím" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:553 msgid "Stop this Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:522 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:541 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:560 msgid "Stop" msgstr "Zastaveno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:323 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:548 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:551 msgid "Running" msgstr "Běží" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:565 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:570 msgid "Stopped" msgstr "Zastaven" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:347 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:572 msgid "Start this Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:354 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:579 msgid "Start" msgstr "Zapnout" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:597 msgid "Destination" msgstr "Cíl" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370 msgid "Hostname" msgstr "Hostitelské jméno" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:411 msgid "Share your site using the hostname" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:432 msgid "Copy the hostname to the clipboard" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:435 msgid "Copy Hostname" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:451 msgid "New hidden service" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:454 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:675 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:286 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:344 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:350 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:647 msgid "Standard" msgstr "Standarní" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:456 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:679 msgid "Create" msgstr "Vytvořit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:457 msgid "I2P Client Tunnels" msgstr "I2P Klient Tunely" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:463 msgid "Interface" msgstr "Rozhraní" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:477 msgid "Edit Tunnel Settings for" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:529 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:532 msgid "Standby" msgstr "Pohotovostní" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:589 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:591 msgid "Outproxy" msgstr "Outproxy" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:602 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:604 msgid "internal plugin" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:621 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:623 msgid "none" msgstr "žádný" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:673 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:675 msgid "New client tunnel" msgstr "Nový tunel klienta" @@ -1716,7 +1726,7 @@ msgid "" "This service uses encrypted leasesets. Registration is not recommended. " "Registration authentication is disabled." -msgstr "" +msgstr "Tato služba používá šifrované leasesety. Registrace není doporučena. Ověření registrace je vypnuto." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:246 msgid "" @@ -1726,7 +1736,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:663 msgid "Tunnel name" msgstr "" @@ -1962,11 +1972,11 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1027 msgid "Disable SSL" -msgstr "" +msgstr "Vypnout SSL" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1033 msgid "SSL is disabled" -msgstr "" +msgstr "SSL je vypnuto" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1035 msgid "Enable SSL" @@ -1989,12 +1999,12 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:638 msgid "Server or client tunnel?" msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:208 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:642 msgid "Tunnel type" msgstr "" @@ -2003,7 +2013,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:674 msgid "Tunnel destination" msgstr "" @@ -2012,7 +2022,7 @@ msgstr "" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:711 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:716 msgid "Tunnel auto-start" msgstr "" @@ -2020,320 +2030,320 @@ msgid "Wizard completed" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:339 msgid "" "This wizard will take you through the various options available for creating" " tunnels in I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:341 msgid "" "The first thing to decide is whether you want to create a server or a client" " tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:343 msgid "" "If you need to connect to a remote service, such as an IRC server inside I2P" " or a code repository, then you will require a CLIENT tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:258 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:345 msgid "" "On the other hand, if you wish to host a service for others to connect to " "you'll need to create a SERVER tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:347 msgid "Server Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:349 msgid "Client Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:361 msgid "There are several types of tunnels to choose from:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:288 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:369 msgid "Basic tunnel for connecting to a single service inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:405 msgid "" "Try this if none of the tunnel types below fit your requirements, or you " "don't know what type of tunnel you need." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:373 msgid "Tunnel that acts as an HTTP proxy for reaching I2P Sites inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:375 msgid "" "Set your browser to use this tunnel as an http proxy, or set your " "\"http_proxy\" environment variable for command-line applications in " "GNU/Linux." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:377 msgid "" "Websites outside I2P can also be reached if an HTTP proxy within I2P is " "known." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:379 msgid "Customized client tunnel specific for IRC connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381 msgid "" "With this tunnel type, your IRC client will be able to connect to an IRC " "network inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383 msgid "" "Each IRC network in I2P that you wish to connect to will require its own " "tunnel. (See Also, SOCKS IRC)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:385 msgid "A tunnel that implements the SOCKS protocol." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:387 msgid "" "This enables both TCP and UDP connections to be made through a SOCKS " "outproxy within I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:389 msgid "" "A client tunnel implementing the SOCKS protocol, which is customized for " "connecting to IRC networks." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:391 msgid "" "With this tunnel type, IRC networks in I2P can be reached by typing the I2P " "address into your IRC client, and configuring the IRC client to use this " "SOCKS tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:393 msgid "" "This means that only one I2P tunnel is required rather than a separate " "tunnel per IRC network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:395 msgid "" "IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P " "is known, though it depends on whether or not the outproxy has been blocked " "by the IRC network." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:403 msgid "A basic server tunnel for hosting a generic service inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:407 msgid "A server tunnel that is customized for HTTP connections." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:409 msgid "Use this tunnel type if you want to host an I2P Site." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:411 msgid "A customized server tunnel for hosting IRC networks inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413 msgid "" "Usually, a separate tunnel needs to be created for each IRC server that is " "to be accessible inside I2P." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:419 msgid "Select tunnel type" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:446 msgid "Choose a name and description for your tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448 msgid "" "These can be anything you want - they are just for ease of identifying the " "tunnel in the routerconsole." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:474 msgid "" "If you know of any outproxies for this type of tunnel (either HTTP or " "SOCKS), fill them in below." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:476 msgid "Separate multiple proxies with commas." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:480 msgid "" "List of I2P outproxy destinations, separated with commas (e.g. " "proxy1.i2p,proxy2.i2p)" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:490 msgid "" "Type in the I2P destination of the service that this client tunnel should " "connect to." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:492 msgid "" "This could be the full Base64 destination key, or an I2P URL from your " "address book." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:496 msgid "Enter a b64 or .i2p address here" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517 msgid "" "This is the IP that your service is running on, this is usually on the same " "machine so 127.0.0.1 is autofilled." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:529 msgid "This is the port that the service is accepting connections on." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548 msgid "This is the port that the client tunnel will be accessed from locally." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558 msgid "" "How do you want this tunnel to be accessed? By just this machine, your " "entire subnet, or external internet?" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560 msgid "You will most likely want to just allow 127.0.0.1" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:597 msgid "" "The I2P router can automatically start this tunnel for you when the router " "is started." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:578 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:599 msgid "" "This can be useful for frequently-used tunnels (especially server tunnels), " "but for tunnels that are only used occasionally it would mean that the I2P " "router is creating and maintaining unnecessary tunnels." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:617 msgid "The wizard has now collected enough information to create your tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:606 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619 msgid "" "Upon clicking the Save button below, the wizard will set up the tunnel, and " "take you back to the main I2PTunnel page." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:624 msgid "" "Because you chose to automatically start the tunnel when the router starts, " "you don't have to do anything further." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:626 msgid "The router will start the tunnel once it has been set up." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:630 msgid "" "Because you chose not to automatically start the tunnel, you will have to " "manually start it." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:632 msgid "" "You can do this by clicking the Start button on the main page which " "corresponds to the new tunnel." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:636 msgid "Below is a summary of the options you chose:" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:667 msgid "Tunnel description" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:680 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:693 msgid "Binding address" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:688 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:697 msgid "Tunnel port" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:722 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:727 msgid "" "Alongside these basic settings, there are a number of advanced options for " "tunnel configuration." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:729 msgid "" "The wizard will set reasonably sensible default values for these, but you " "can view and/or edit these by clicking on the tunnel's name in the main " "I2PTunnel page." msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:743 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:736 msgid "Cancel the wizard and return to Tunnel Manager home page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:743 msgid "Return to previous page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:753 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:745 msgid "Previous" msgstr "Předchozí" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:761 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:753 msgid "Save tunnel configuration" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:764 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:756 msgid "Save Tunnel" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:770 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:762 msgid "Finish Wizard and review tunnel settings" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:773 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:765 msgid "Finish" msgstr "Dokončit" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:779 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:771 msgid "Advance to next page" msgstr "" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:782 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:774 msgid "Next" msgstr "Další" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_ja.po i2p-2.5.0/apps/i2ptunnel/locale/messages_ja.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_ja.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_ja.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,7 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# daingewuvzeevisiddfddd, 2022-2023 +# daingewuvzeevisiddfddd, 2022-2024 # タカハシ, 2013-2014 # タカハシ, 2022 # heizi , 2016 @@ -16,7 +16,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-12-04 23:26+0000\n" "PO-Revision-Date: 2011-02-13 11:46+0000\n" -"Last-Translator: daingewuvzeevisiddfddd, 2022-2023\n" +"Last-Translator: daingewuvzeevisiddfddd, 2022-2024\n" "Language-Team: Japanese (http://app.transifex.com/otf/I2P/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1713,7 +1713,7 @@ msgid "" "This service uses encrypted leasesets. Registration is not recommended. " "Registration authentication is disabled." -msgstr "このサービスは暗号化されたリースセットを使います。登録は非推奨です。登録は無効化されました。" +msgstr "このサービスは暗号化されたリースセットを使います。登録は非推奨です。登録認証は無効化されました。" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:246 msgid "" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_pt.po i2p-2.5.0/apps/i2ptunnel/locale/messages_pt.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_pt.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_pt.po 2024-04-10 02:29:57.000000000 +0000 @@ -1140,7 +1140,7 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1483 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1574 msgid "Level of Randomization for Tunnel Depth" -msgstr "" +msgstr "Nível de randomização para profundidade do túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1531 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1676 @@ -1155,12 +1155,12 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1749 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2185 msgid "Allow all clients to connect to this service" -msgstr "" +msgstr "Permitir que todos os clientes se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1759 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1789 msgid "Send key to all users." -msgstr "" +msgstr "Enviar chave para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1763 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1793 @@ -1170,53 +1170,53 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1773 msgid "Prevents server discovery by floodfills" -msgstr "" +msgstr "Impede a descoberta do servidor por preenchimentos de inundação" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1777 msgid "Blinded" -msgstr "" +msgstr "Cego" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1783 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1808 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1821 msgid "Send password to all users." -msgstr "" +msgstr "Enviar senha para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1787 msgid "Blinded with lookup password" -msgstr "" +msgstr "Blinded com senha de pesquisa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1795 msgid "Send key and password to all users." -msgstr "" +msgstr "Enviar chave e senha para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 msgid "Encrypted with lookup password" -msgstr "" +msgstr "Criptografado com senha de pesquisa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1801 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1807 msgid "Send individual key to each user." -msgstr "" +msgstr "Envie uma chave individual para cada usuário." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1818 msgid "Encrypted with per-user key" -msgstr "" +msgstr "Criptografado com chave por usuário" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1825 msgid "Encrypted with lookup password and per-user key" -msgstr "" +msgstr "Criptografado com senha de pesquisa e chave por usuário" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1814 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1820 msgid "Enter key from each user." -msgstr "" +msgstr "Digite a chave de cada usuário." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1838 msgid "Optional lookup password" -msgstr "" +msgstr "Optional lookup password" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1853 msgid "Encryption Key" @@ -1224,21 +1224,21 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1881 msgid "Encryption key required to access this service" -msgstr "" +msgstr "Chave de criptografia necessária para acessar este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1895 msgid "Revoke" -msgstr "" +msgstr "Revogar" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1897 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1934 msgid "Client Name" -msgstr "" +msgstr "Nome do Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1899 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1942 msgid "Client Key" -msgstr "" +msgstr "Chave do Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1916 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1948 @@ -1251,23 +1251,23 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2064 msgid "Recommended for blinded and encrypted destinations" -msgstr "" +msgstr "Recomendado para destinos cegos e criptografados" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2106 msgid "Alternate private key file" -msgstr "" +msgstr "Arquivo de chave privada alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2120 msgid "Alternate local destination" -msgstr "" +msgstr "Destino local alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2122 msgid "Read Only: Alternate Local Destination" -msgstr "" +msgstr "Somente leitura: destino local alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2181 msgid "Tunnel Access Control Options" -msgstr "" +msgstr "Opções de controle de acesso ao túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2183 msgid "Restricted Access List" @@ -1275,105 +1275,105 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2191 msgid "Prevent listed clients from connecting to this service" -msgstr "" +msgstr "Impedir que os clientes listados se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2195 msgid "Deny List" -msgstr "" +msgstr "Negar lista" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2197 msgid "Only allow listed clients to connect to this service" -msgstr "" +msgstr "Permitir que apenas os clientes listados se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2201 msgid "Allow List" -msgstr "" +msgstr "Lista de permissões" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2203 msgid "Access List Description" -msgstr "" +msgstr "Descrição da Lista de Acesso" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2205 msgid "Specify clients, 1 per line" -msgstr "" +msgstr "Specify clients, 1 per line" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2207 msgid "Control access to this service" -msgstr "" +msgstr "Controlar o acesso a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2211 msgid "Filter Definition File" -msgstr "" +msgstr "Arquivo de definição de filtro" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2213 msgid "You can define an advanced filter for this tunnel." -msgstr "" +msgstr "Você pode definir um filtro avançado para este túnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2215 msgid "Format Specification" -msgstr "" +msgstr "Especificação de formato" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2217 msgid "Absolute path to file containing filter definition" -msgstr "" +msgstr "Caminho absoluto para o arquivo que contém a definição do filtro" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2221 msgid "Server Access Options" -msgstr "" +msgstr "Opções de Acesso ao Servidor" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2227 msgid "Prevent clients from accessing this service via an inproxy" -msgstr "" +msgstr "Impedir que os clientes acessem esse serviço por meio de um inproxy" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2231 msgid "Block Access via Inproxies" -msgstr "" +msgstr "Bloquear acesso via Inproxies" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2235 msgid "Block Accesses containing Referers" -msgstr "" +msgstr "Bloquear acessos contendo Referers" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2237 msgid "Deny User-Agents matching these strings (probably from inproxies)" -msgstr "" +msgstr "Negar User-Agents correspondentes a essas cadeias de caracteres (provavelmente de inproxies)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 msgid "Block these User-Agents" -msgstr "" +msgstr "Bloquear estes User-Agents" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2243 msgid "comma separated, e.g. Mozilla,Opera (case-sensitive)" -msgstr "" +msgstr "vírgula separada, por exemplo, Mozilla, Opera (diferencia maiúsculas de minúsculas)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2250 msgid "" "Use unique IP addresses for each connecting client (local non-SSL servers " "only)" -msgstr "" +msgstr "Use endereços IP exclusivos para cada cliente de conexão (somente servidores locais não SSL)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2254 msgid "Unique Local Address per Client" -msgstr "" +msgstr "Endereço Local Exclusivo por Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2256 msgid "Only enable if you are hosting this service on multiple routers" -msgstr "" +msgstr "Habilite somente se você estiver hospedando esse serviço em vários roteadores" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2260 msgid "Optimize for Multihoming" -msgstr "" +msgstr "Otimize para Multihoming" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2262 msgid "Tunnel Performance Options" -msgstr "" +msgstr "Opções de desempenho do túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2295 msgid "Number of tunnels to keep open to maintain availability of service" -msgstr "" +msgstr "Número de túneis a manter abertos para manter a disponibilidade do serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2301 msgid "Period of inactivity before tunnel number is reduced" -msgstr "" +msgstr "Período de inatividade antes que o número do túnel seja reduzido" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2305 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2375 @@ -1384,50 +1384,50 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2307 msgid "Server Throttling" -msgstr "" +msgstr "Limitação do servidor" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2309 msgid "Inbound connection limits" -msgstr "" +msgstr "Limites de conexão de entrada" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 msgid "Per Minute" -msgstr "" +msgstr "Por Minuto" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2313 msgid "Per Hour" -msgstr "" +msgstr "Por Hora" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2315 msgid "Per Day" -msgstr "" +msgstr "Por Dia" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2317 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2365 msgid "Per Client" -msgstr "" +msgstr "Por Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2320 msgid "unlimited" -msgstr "" +msgstr "ilimitado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2323 msgid "" "Maximum number of web page requests per minute for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por minuto para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2327 msgid "" "Maximum number of web page requests per hour for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por hora para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2331 msgid "" "Maximum number of web page requests per day for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por dia para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2335 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2377 @@ -1438,27 +1438,27 @@ msgid "" "Total number of web page requests per minute before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por minuto antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2341 msgid "" "Total number of web page requests per hour before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por hora antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2345 msgid "" "Total number of web page requests per day before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por dia antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2349 msgid "Max concurrent connections" -msgstr "" +msgstr "Máximo de conexões simultâneas" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2351 msgid "Maximum number of simultaneous client connections" -msgstr "" +msgstr "Número máximo de conexões de cliente simultâneas" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2359 msgid "POST limits" @@ -1470,53 +1470,53 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2363 msgid "Ban Duration" -msgstr "" +msgstr "Duração da proibição" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2367 msgid "" "Maximum number of post requests permitted for a unique client for the " "configured time span" -msgstr "" +msgstr "Número máximo de solicitações de postagem permitidas para um cliente exclusivo para o período de tempo configurado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2371 msgid "" "If a client exceeds the maximum number of post requests per allocated " "period, enforce a ban for this number of minutes" -msgstr "" +msgstr "Se um cliente exceder o número máximo de solicitações de postagem por período alocado, aplique uma proibição para esse número de minutos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2379 msgid "Total number of post requests permitted for the configured time span" -msgstr "" +msgstr "Número total de solicitações de postagem permitidas para o período de tempo configurado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2383 msgid "" "If the maximum number of post requests per allocated period is exceeded, " "enforce a global access ban for this number of minutes" -msgstr "" +msgstr "Se o número máximo de solicitações de postagem por período alocado for excedido, aplique uma proibição de acesso global para esse número de minutos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2389 msgid "POST limit period" -msgstr "" +msgstr "Período limite POST" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2391 msgid "" "Time span for the maximum number of post requests to be reached before a ban" " is triggered" -msgstr "" +msgstr "Período de tempo para que o número máximo de pedidos de correio seja atingido antes de uma proibição ser desencadeada" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2451 msgid "Tunnels not initialized yet; please retry in a few moments." -msgstr "" +msgstr "Túneis ainda não inicializados; Por favor, tente novamente em alguns momentos." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 msgid "These are the local services provided by your router." -msgstr "" +msgstr "Estes são os serviços locais fornecidos pelo seu roteador." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:165 msgid "" "By default, most of your client services (email, HTTP proxy, IRC) will share" " the same set of tunnels and be listed as \"Shared Clients\"." -msgstr "" +msgstr "Por padrão, a maioria dos seus serviços de cliente (e-mail, proxy HTTP, IRC) compartilhará o mesmo conjunto de túneis e será listada como \"Clientes Compartilhados\"." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:638 @@ -1576,19 +1576,19 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 msgid "Edit Server Tunnel Settings for" -msgstr "" +msgstr "Editar configurações de túnel do servidor para" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 msgid "Test HTTPS server, bypassing I2P" -msgstr "" +msgstr "Testar servidor HTTPS, ignorando I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 msgid "Test HTTP server, bypassing I2P" -msgstr "" +msgstr "Testar servidor HTTP, ignorando I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 msgid "Test HTTP server through I2P" -msgstr "" +msgstr "Testar servidor HTTP através de I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293 msgid "No Preview" @@ -1915,7 +1915,7 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:689 msgid "Base32" -msgstr "" +msgstr "Base32" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:697 msgid "Alt Base32" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_pt_BR.po i2p-2.5.0/apps/i2ptunnel/locale/messages_pt_BR.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_pt_BR.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_pt_BR.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,7 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# Cauan Henrique Zorzenon , 2023 +# Cauan Henrique Zorzenon , 2023-2024 # testsubject67 , 2014 # Eduardo Rodrigues, 2021 # L., 2013 @@ -16,7 +16,7 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-12-04 23:26+0000\n" "PO-Revision-Date: 2011-02-13 11:46+0000\n" -"Last-Translator: Cauan Henrique Zorzenon , 2023\n" +"Last-Translator: Cauan Henrique Zorzenon , 2023-2024\n" "Language-Team: Portuguese (Brazil) (http://app.transifex.com/otf/I2P/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -1140,7 +1140,7 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1483 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1574 msgid "Level of Randomization for Tunnel Depth" -msgstr "" +msgstr "Nível de randomização para profundidade do túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1531 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1676 @@ -1155,12 +1155,12 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1749 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2185 msgid "Allow all clients to connect to this service" -msgstr "" +msgstr "Permitir que todos os clientes se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1759 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1789 msgid "Send key to all users." -msgstr "" +msgstr "Enviar chave para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1763 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1793 @@ -1170,53 +1170,53 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1773 msgid "Prevents server discovery by floodfills" -msgstr "" +msgstr "Impede a descoberta do servidor por preenchimentos de inundação" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1777 msgid "Blinded" -msgstr "" +msgstr "Blinded" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1783 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1808 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1821 msgid "Send password to all users." -msgstr "" +msgstr "Enviar senha para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1787 msgid "Blinded with lookup password" -msgstr "" +msgstr "Blinded com senha de pesquisa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1795 msgid "Send key and password to all users." -msgstr "" +msgstr "Enviar chave e senha para todos os usuários." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 msgid "Encrypted with lookup password" -msgstr "" +msgstr "Criptografado com senha de pesquisa" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1801 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1807 msgid "Send individual key to each user." -msgstr "" +msgstr "Envie uma chave individual para cada usuário." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1818 msgid "Encrypted with per-user key" -msgstr "" +msgstr "Criptografado com chave por usuário" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1825 msgid "Encrypted with lookup password and per-user key" -msgstr "" +msgstr "Criptografado com senha de pesquisa e chave por usuário" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1814 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1820 msgid "Enter key from each user." -msgstr "" +msgstr "Digite a chave de cada usuário." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1838 msgid "Optional lookup password" -msgstr "" +msgstr "Senha de pesquisa opcional" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1853 msgid "Encryption Key" @@ -1224,21 +1224,21 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1881 msgid "Encryption key required to access this service" -msgstr "" +msgstr "Chave de criptografia necessária para acessar este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1895 msgid "Revoke" -msgstr "" +msgstr "Revogar" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1897 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1934 msgid "Client Name" -msgstr "" +msgstr "Nome do Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1899 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1942 msgid "Client Key" -msgstr "" +msgstr "Chave do Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1916 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1948 @@ -1251,23 +1251,23 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2064 msgid "Recommended for blinded and encrypted destinations" -msgstr "" +msgstr "Recomendado para destinos cegos e criptografados" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2106 msgid "Alternate private key file" -msgstr "" +msgstr "Arquivo de chave privada alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2120 msgid "Alternate local destination" -msgstr "" +msgstr "Destino local alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2122 msgid "Read Only: Alternate Local Destination" -msgstr "" +msgstr "Somente leitura: destino local alternativo" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2181 msgid "Tunnel Access Control Options" -msgstr "" +msgstr "Opções de controle de acesso ao túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2183 msgid "Restricted Access List" @@ -1275,105 +1275,105 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2191 msgid "Prevent listed clients from connecting to this service" -msgstr "" +msgstr "Impedir que os clientes listados se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2195 msgid "Deny List" -msgstr "" +msgstr "Negar lista" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2197 msgid "Only allow listed clients to connect to this service" -msgstr "" +msgstr "Permitir que apenas os clientes listados se conectem a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2201 msgid "Allow List" -msgstr "" +msgstr "Lista de permissões" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2203 msgid "Access List Description" -msgstr "" +msgstr "Descrição da Lista de Acesso" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2205 msgid "Specify clients, 1 per line" -msgstr "" +msgstr "Especificar clientes, 1 por linha" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2207 msgid "Control access to this service" -msgstr "" +msgstr "Controlar o acesso a este serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2211 msgid "Filter Definition File" -msgstr "" +msgstr "Arquivo de definição de filtro" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2213 msgid "You can define an advanced filter for this tunnel." -msgstr "" +msgstr "Você pode definir um filtro avançado para este túnel." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2215 msgid "Format Specification" -msgstr "" +msgstr "Especificação de formato" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2217 msgid "Absolute path to file containing filter definition" -msgstr "" +msgstr "Caminho absoluto para o arquivo que contém a definição do filtro" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2221 msgid "Server Access Options" -msgstr "" +msgstr "Opções de Acesso ao Servidor" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2227 msgid "Prevent clients from accessing this service via an inproxy" -msgstr "" +msgstr "Impedir que os clientes acessem esse serviço por meio de um inproxy" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2231 msgid "Block Access via Inproxies" -msgstr "" +msgstr "Bloquear acesso via Inproxies" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2235 msgid "Block Accesses containing Referers" -msgstr "" +msgstr "Bloquear acessos contendo Referers" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2237 msgid "Deny User-Agents matching these strings (probably from inproxies)" -msgstr "" +msgstr "Negar User-Agents correspondentes a essas cadeias de caracteres (provavelmente de inproxies)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 msgid "Block these User-Agents" -msgstr "" +msgstr "Bloquear estes User-Agents" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2243 msgid "comma separated, e.g. Mozilla,Opera (case-sensitive)" -msgstr "" +msgstr "vírgula separada, por exemplo, Mozilla, Opera (diferencia maiúsculas de minúsculas)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2250 msgid "" "Use unique IP addresses for each connecting client (local non-SSL servers " "only)" -msgstr "" +msgstr "Use endereços IP exclusivos para cada cliente de conexão (somente servidores locais não SSL)" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2254 msgid "Unique Local Address per Client" -msgstr "" +msgstr "Endereço Local Exclusivo por Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2256 msgid "Only enable if you are hosting this service on multiple routers" -msgstr "" +msgstr "Habilite somente se você estiver hospedando esse serviço em vários roteadores" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2260 msgid "Optimize for Multihoming" -msgstr "" +msgstr "Otimize para Multihoming" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2262 msgid "Tunnel Performance Options" -msgstr "" +msgstr "Opções de desempenho do túnel" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2295 msgid "Number of tunnels to keep open to maintain availability of service" -msgstr "" +msgstr "Número de túneis a manter abertos para manter a disponibilidade do serviço" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2301 msgid "Period of inactivity before tunnel number is reduced" -msgstr "" +msgstr "Período de inatividade antes que o número do túnel seja reduzido" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2305 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2375 @@ -1384,50 +1384,50 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2307 msgid "Server Throttling" -msgstr "" +msgstr "Limitação do servidor" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2309 msgid "Inbound connection limits" -msgstr "" +msgstr "Limites de conexão de entrada" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 msgid "Per Minute" -msgstr "" +msgstr "Por Minuto" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2313 msgid "Per Hour" -msgstr "" +msgstr "Por Hora" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2315 msgid "Per Day" -msgstr "" +msgstr "Por Dia" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2317 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2365 msgid "Per Client" -msgstr "" +msgstr "Por Cliente" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2320 msgid "unlimited" -msgstr "" +msgstr "ilimitado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2323 msgid "" "Maximum number of web page requests per minute for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por minuto para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2327 msgid "" "Maximum number of web page requests per hour for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por hora para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2331 msgid "" "Maximum number of web page requests per day for a unique client before " "access to the server is blocked" -msgstr "" +msgstr "Número máximo de solicitações de página da Web por dia para um cliente exclusivo antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2335 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2377 @@ -1438,27 +1438,27 @@ msgid "" "Total number of web page requests per minute before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por minuto antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2341 msgid "" "Total number of web page requests per hour before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por hora antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2345 msgid "" "Total number of web page requests per day before access to the server is " "blocked" -msgstr "" +msgstr "Número total de solicitações de página da Web por dia antes que o acesso ao servidor seja bloqueado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2349 msgid "Max concurrent connections" -msgstr "" +msgstr "Máximo de conexões simultâneas" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2351 msgid "Maximum number of simultaneous client connections" -msgstr "" +msgstr "Número máximo de conexões de cliente simultâneas" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2359 msgid "POST limits" @@ -1470,53 +1470,53 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2363 msgid "Ban Duration" -msgstr "" +msgstr "Duração da proibição" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2367 msgid "" "Maximum number of post requests permitted for a unique client for the " "configured time span" -msgstr "" +msgstr "Número máximo de solicitações de postagem permitidas para um cliente exclusivo para o período de tempo configurado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2371 msgid "" "If a client exceeds the maximum number of post requests per allocated " "period, enforce a ban for this number of minutes" -msgstr "" +msgstr "Se um cliente exceder o número máximo de solicitações de postagem por período alocado, aplique uma proibição para esse número de minutos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2379 msgid "Total number of post requests permitted for the configured time span" -msgstr "" +msgstr "Número total de solicitações de postagem permitidas para o período de tempo configurado" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2383 msgid "" "If the maximum number of post requests per allocated period is exceeded, " "enforce a global access ban for this number of minutes" -msgstr "" +msgstr "Se o número máximo de solicitações de postagem por período alocado for excedido, aplique uma proibição de acesso global para esse número de minutos" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2389 msgid "POST limit period" -msgstr "" +msgstr "Período limite POST" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2391 msgid "" "Time span for the maximum number of post requests to be reached before a ban" " is triggered" -msgstr "" +msgstr "Período de tempo para que o número máximo de pedidos de correio seja atingido antes de uma proibição ser desencadeada" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2451 msgid "Tunnels not initialized yet; please retry in a few moments." -msgstr "" +msgstr "Túneis ainda não inicializados; Por favor, tente novamente em alguns momentos." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163 msgid "These are the local services provided by your router." -msgstr "" +msgstr "Estes são os serviços locais fornecidos pelo seu roteador." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:165 msgid "" "By default, most of your client services (email, HTTP proxy, IRC) will share" " the same set of tunnels and be listed as \"Shared Clients\"." -msgstr "" +msgstr "Por padrão, a maioria dos seus serviços de cliente (e-mail, proxy HTTP, IRC) compartilhará o mesmo conjunto de túneis e será listada como \"Clientes Compartilhados\"." #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:638 @@ -1576,19 +1576,19 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 msgid "Edit Server Tunnel Settings for" -msgstr "" +msgstr "Editar configurações de túnel do servidor para" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 msgid "Test HTTPS server, bypassing I2P" -msgstr "" +msgstr "Testar servidor HTTPS, ignorando I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 msgid "Test HTTP server, bypassing I2P" -msgstr "" +msgstr "Testar servidor HTTP, ignorando I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 msgid "Test HTTP server through I2P" -msgstr "" +msgstr "Testar servidor HTTP através de I2P" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293 msgid "No Preview" @@ -1915,7 +1915,7 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:689 msgid "Base32" -msgstr "" +msgstr "Base32" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:697 msgid "Alt Base32" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_zh.po i2p-2.5.0/apps/i2ptunnel/locale/messages_zh.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_zh.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_zh.po 2024-04-10 02:29:57.000000000 +0000 @@ -11,10 +11,10 @@ # a7c0396e818c2941c33529bda1f6bf1b_d554568 <93d1ed349b85f9981f2c90624c315cde_129513>, 2013 # xkimo_daeee , 2014 # a478a116a491ba89a1cee347ebcf239b_fd74b84, 2022 -# Narrator Z, 2023 +# 591313068a9d8b738947e39c2189fca2_35785ab, 2023 # a7c0396e818c2941c33529bda1f6bf1b_d554568 <93d1ed349b85f9981f2c90624c315cde_129513>, 2017 # 黃彥儒 , 2014 -# Scott Rhodes , 2020-2021 +# Scott Rhodes , 2020-2021,2023 # SF W, 2019 # 27bc57984b2c3dde32a36ec9a8dba140_ab3c34d , 2017 # walking , 2011 @@ -30,164 +30,164 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-11-17 13:12+0000\n" +"POT-Creation-Date: 2023-12-04 23:26+0000\n" "PO-Revision-Date: 2011-02-13 11:46+0000\n" -"Last-Translator: Narrator Z, 2023\n" -"Language-Team: Chinese (China) (http://www.transifex.com/otf/I2P/language/zh_CN/)\n" +"Last-Translator: Scott Rhodes , 2020-2021,2023\n" +"Language-Team: Chinese (China) (http://app.transifex.com/otf/I2P/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:498 -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:508 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:506 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:516 msgid "internal" msgstr "內置" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:545 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:553 #, java-format msgid "{0} inbound tunnel" msgid_plural "{0} inbound tunnels" msgstr[0] "{0} 入站隧道" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:547 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:555 #, java-format msgid "{0} outbound tunnel" msgid_plural "{0} outbound tunnels" msgstr[0] "{0} 出站隧道" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:549 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:557 #, java-format msgid "{0} inbound, {0} outbound tunnel" msgid_plural "{0} inbound, {0} outbound tunnels" msgstr[0] "{0}入站, {0}出站隧道" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:553 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:561 msgid "lower bandwidth and reliability" msgstr "较低的带宽和稳定性" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:555 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:563 msgid "standard bandwidth and reliability" msgstr "标准带宽和稳定性" -#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:557 +#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:565 msgid "higher bandwidth and reliability" msgstr "较高的带宽和稳定性" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:100 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:103 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:615 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1093 msgid "Tunnels are not initialized yet, please reload in two minutes." msgstr "隧道尚未初始化,请两分钟后刷新。" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:187 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:190 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:314 msgid "" "Invalid form submission, probably because you used the 'back' or 'reload' " "button on your browser. Please resubmit." msgstr "网页提交无效,可能的原因是您使用了浏览器的“后退”和“刷新”按钮,导致表单过期,请重新提交。" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:189 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:192 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:316 msgid "" "If the problem persists, verify that you have cookies enabled in your " "browser." msgstr "如果问题持续,请确认您的浏览器支持 Cookie。" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:246 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:249 msgid "Configuration reloaded for all tunnels" msgstr "所有隧道都已根据当前配置重启" #. and give them something to look at in any case #. FIXME name will be HTML escaped twice -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:260 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:263 msgid "Starting tunnel" msgstr "正在启动隧道" #. and give them something to look at in any case #. FIXME name will be HTML escaped twice -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:274 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:277 msgid "Stopping tunnel" msgstr "正在关闭隧道" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:432 msgid "New Tunnel" msgstr "新建隧道" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:414 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:444 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:530 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:452 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:482 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:568 msgid "Port not set" msgstr "端口未设置" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:417 -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:532 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:455 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:570 msgid "Invalid port" msgstr "无效端口" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 msgid "Warning - ports less than 1024 are not recommended" msgstr "警告 - 不推荐低于 1024 的端口" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:437 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:475 msgid "Warning - duplicate port" msgstr "警告 - 重复的端口" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:456 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:494 msgid "Standard client" msgstr "标准客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:457 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:495 msgid "HTTP/HTTPS client" msgstr "HTTP/HTTPS 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:458 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:496 msgid "IRC client" msgstr "IRC 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:459 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:497 msgid "Standard server" msgstr "标准服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:460 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:498 msgid "HTTP server" msgstr "HTTP 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:461 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:499 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS4/4A/5 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:462 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:500 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:463 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:501 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:464 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:502 msgid "IRC server" msgstr "IRC 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:465 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:503 msgid "Streamr client" msgstr "Streamr 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:466 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:504 msgid "Streamr server" msgstr "Streamr 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:467 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:505 msgid "HTTP bidir" msgstr "双向 HTTP" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:524 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:493 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:562 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:491 msgid "Host not set" msgstr "主机未设置" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:526 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:564 msgid "Invalid address" msgstr "无效地址" @@ -220,58 +220,58 @@ msgstr "新建代理设置" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:260 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1134 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:460 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:450 msgid "Name" msgstr "名称" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:262 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1115 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1136 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:224 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:462 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:461 msgid "Type" msgstr "类型" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:264 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1117 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1138 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:452 msgid "" "Name of tunnel to be displayed on Tunnel Manager home page and the router " "console sidebar" -msgstr "管道名称,将会在管道管理器主页和路由控制台侧栏显示" +msgstr "隧道名称,将会在隧道管理器主页和路由器控制台侧栏显示" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:270 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1123 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:395 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:648 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1144 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:456 msgid "Description" msgstr "描述" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:272 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1125 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1146 msgid "Auto Start Tunnel" msgstr "自动启动隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:274 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1127 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:458 msgid "Description of tunnel to be displayed on Tunnel Manager home page" msgstr "管道的注释,将会在管道管理器主页显示" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:278 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1131 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1152 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:601 msgid "" "Enable this option to ensure this service is available when the router " "starts" msgstr "启用本选项将确保该服务在路由启动时已经可用" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:282 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1135 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1156 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:605 msgid "Automatically start tunnel when router starts" msgstr "路由器启动时自动启动此隧道" @@ -286,1223 +286,1231 @@ msgstr "为更改此设置,必须停止客户端隧道" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:301 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1175 msgid "Target" msgstr "目标" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:303 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1152 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1205 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1173 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1221 msgid "Access Point" msgstr "接入点" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:306 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1026 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1169 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1207 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2402 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:466 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:487 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:510 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:696 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1040 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1190 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1223 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:465 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:550 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:705 msgid "Port" msgstr "端口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:309 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1193 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:552 +msgid "Specify the local port this service should be accessible from" +msgstr "指定该服务要绑定的本地端口" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:318 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:336 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:435 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1174 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1212 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1287 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1203 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1234 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:500 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:537 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:556 msgid "required" msgstr "必要" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:315 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1177 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:512 -msgid "Specify the local port this service should be accessible from" -msgstr "指定该服务要绑定的本地端口" - -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:330 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1020 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1161 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2396 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1034 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1182 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:521 msgid "Host" msgstr "主机" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:341 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1163 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:466 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1184 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:523 msgid "Hostname or IP address of the target server" msgstr "目标服务器的主机名或 IP 地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:347 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:340 msgid "Local interface (ip address) the client tunnel will be reachable from" msgstr "客户端隧道可访问的本地接口(IP 地址)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:351 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1229 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:538 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:704 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1242 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:565 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:709 msgid "Reachable by" msgstr "访问地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:373 msgid "Use SSL?" msgstr "是否使用 SSL?" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:375 msgid "" "If you are accessing a service on a remote I2P router, you may wish to " "connect with SSL to avoid traffic interception. The client application " "should be also be configured to use SSL." msgstr "如果你在远程 I2P 路由上访问一个服务,你可能希望能够使用 SSL 建立连接以避免通信流量被拦截。同样地,客户端应用也应该被配置为使用 SSL。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:379 msgid "Clients use SSL to connect to tunnel" msgstr "客户端使用 SSL 连接到隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:394 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:411 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:387 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:478 msgid "Outproxies" msgstr "出口代理" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:396 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:408 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:428 msgid "" "Specify the .i2p address or destination (b32 or b64) of the outproxy here." msgstr "在此指定出口代理的 .i2p 地址或目的地(b32 或 b64)。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:398 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:410 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:442 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:403 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:430 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:454 msgid "" "For a random selection from a pool, separate with commas e.g. " "server1.i2p,server2.i2p" msgstr "若要从一个池中随机选择,用英文逗号分隔,如 server1.i2p,server2.i2p" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:406 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:412 +msgid "Outproxy Type" +msgstr "出口代理类型" + +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:426 msgid "SSL Outproxies" msgstr "SSL 出口代理" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:418 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:438 msgid "Use Outproxy Plugin" msgstr "使用出口代理插件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:440 msgid "" "If an outproxy plugin is installed (e.g. Orchid), use this instead of any " "configured outproxies to access websites outside of I2P" msgstr "如果安装了出口代理插件(例如 Orchid),请使用此插件,而非已配置的出口代理来访问 I2P 以外的网站" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:424 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:444 msgid "Use plugin instead of above-listed proxies if available" msgstr "使用插件而非上方列出的代理,如果可用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:430 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:450 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:494 msgid "Tunnel Destination" msgstr "隧道目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:440 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:452 msgid "" "Specify the .i2p address or destination (b32 or b64) of the tunnel here." msgstr "在此指定隧道的 .i2p 地址或目的地(b32 或 b64)。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:446 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:439 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:502 msgid "name, name:port, or destination" msgstr "名称,名称:端口,或目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:466 msgid "b32 not recommended" msgstr "不推荐 b32 地址。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:465 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:641 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:643 msgid "Shared Client" msgstr "共享带宽客户端" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:484 msgid "" "Traffic from all clients with this feature enabled will be routed over the " "same set of tunnels. This will make profiling the tunnels by an adversary " "more difficult, but will link the clients together." msgstr "启用了此功能的所有客户端的流量都将通过同一组隧道进行路由。 这将使对手更难以对隧道进行性能分析,但会将客户端链接在一起。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:481 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:495 msgid "Share tunnels with other clients?" msgstr "是否与其他客户端共享隧道?" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:499 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:513 msgid "Enable DCC" msgstr "启用 DCC" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:501 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:515 msgid "Enables direct chat and file transfers, bypassing I2P" msgstr "启用直接聊天和传输,绕过 I2P" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:519 msgid "" "Enable Direct Client-to-Client protocol. Note that this will compromise your" " anonymity and is not recommended." msgstr "启用客户端到客户端直接协议。注意,这将影响您的匿名性,不推荐使用。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:511 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1403 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:525 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1412 msgid "Advanced networking options" msgstr "高级网络设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:519 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:533 msgid "" "Note: When this client proxy is configured to share tunnels, then these " "options are for all the shared proxy clients!" msgstr "注意:当此客户端代理配置为共享隧道时,这些选项适用于所有的共享隧道客户端!" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:525 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1405 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:539 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1414 msgid "Tunnel Length Options" msgstr "隧道长度选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:527 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1416 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1524 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:541 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1533 msgid "Length" msgstr "长度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:529 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1418 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1526 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:543 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1427 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1535 msgid "Variance" msgstr "随机变化" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1420 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1528 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:545 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1537 msgid "Length of each Tunnel" msgstr "每个隧道的长度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:539 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:544 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:549 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:554 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:562 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:566 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:570 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:574 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:581 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1427 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1432 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1437 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1442 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1450 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1454 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1458 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1462 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1469 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1535 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1539 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1543 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1547 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1551 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1559 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1563 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:553 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:563 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:588 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1441 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1446 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1451 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1459 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1463 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1467 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1471 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1478 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1544 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1548 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1552 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1556 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1560 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1564 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1572 #, java-format msgid "{0} hop tunnel" msgid_plural "{0} hop tunnel" msgstr[0] "{0} 跳隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:540 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1428 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:554 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1437 msgid "no anonymity" msgstr "无匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:545 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:559 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1442 msgid "low anonymity" msgstr "低匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:550 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1438 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:564 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1447 msgid "medium anonymity" msgstr "中匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:555 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1443 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:569 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1452 msgid "high anonymity" msgstr "高匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:587 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:601 msgid "Level of Randomization for Tunnel Length" msgstr "隧道长度随机化等级" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:594 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1481 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1572 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:608 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1490 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1581 msgid "0 hop variance" msgstr "0 跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:595 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1482 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:609 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1491 msgid "no randomization, consistent performance" msgstr "无随机性,恒定性能" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:599 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1486 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1495 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1585 msgid "+ 0-1 hop variance" msgstr "+ 0-1 跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:600 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1487 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:614 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1496 msgid "medium randomization, lower performance" msgstr "中等随机性,更低性能" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:604 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1491 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1580 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:618 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1500 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1589 msgid "+ 0-2 hop variance" msgstr "+ 0-2 跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:605 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1492 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1501 msgid "high randomization, very low performance" msgstr "高随机性,极低性能" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:609 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1496 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1584 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1505 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1593 msgid "+/- 0-1 hop variance" msgstr "+/- 0-1 跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:610 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1497 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:624 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1506 msgid "standard randomization, standard performance" msgstr "标准随机性,标准性能" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:614 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1501 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1588 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:628 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1597 msgid "+/- 0-2 hop variance" msgstr "+/- 0-2 跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:615 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1502 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1511 msgid "not recommended" msgstr "不推荐" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:626 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1513 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1599 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:640 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1522 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1608 msgid "hop variance" msgstr "跳点变化幅度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:631 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1608 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:645 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1617 msgid "Tunnel Quantity Options" msgstr "隧道质量选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:633 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1619 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1669 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:647 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1628 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1678 msgid "Count" msgstr "计数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:635 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1621 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1671 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:649 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1630 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1680 msgid "Backup Count" msgstr "备用数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:637 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1623 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1673 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:651 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1632 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1682 msgid "Number of Tunnels in Group" msgstr "组中隧道数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:641 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1627 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:655 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1636 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1686 msgid "Number of Reserve Tunnels" msgstr "备用隧道数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:649 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:654 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:659 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:663 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:668 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:673 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1634 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1639 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1644 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1649 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:678 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:687 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1643 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1648 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1653 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1658 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1684 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1688 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1692 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1696 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1703 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1667 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1693 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1697 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1701 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1705 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1712 #, java-format msgid "{0} backup tunnel" msgid_plural "{0} backup tunnels" msgstr[0] "{0} 备份隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:650 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1635 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:664 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1644 msgid "no redundancy, no added resource usage" msgstr "无冗余,不增加资源占用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:655 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1640 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:669 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1649 msgid "low redundancy, low resource usage" msgstr "低冗余,低资源占用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:660 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1645 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:674 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1654 msgid "medium redundancy, medium resource usage" msgstr "中等冗余,中等资源占用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:665 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:679 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1659 msgid "high redundancy, high resource usage" msgstr "高冗余,高资源占用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:679 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:693 msgid "Tunnel Management Options" msgstr "隧道管理选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:685 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2259 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:699 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2268 msgid "Profile" msgstr "连接类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:687 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:701 msgid "Delay Connect" msgstr "连接延迟断开" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:689 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:703 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2270 msgid "Connection Profile" msgstr "连接配置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:696 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2268 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:710 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2277 msgid "interactive connection" msgstr "速度连接" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:700 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2272 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:714 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2281 msgid "bulk connection (downloads/websites/BT)" msgstr "大量连接(下载/网站/BT)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:702 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:716 msgid "Delay Connection" msgstr "延迟连接" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:706 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:720 msgid "for request/response connections" msgstr "单请求/响应连接" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:718 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:732 msgid "Delay tunnel open until required" msgstr "仅在请求时打开" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:720 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:734 msgid "Conserve resources by only creating tunnels when required" msgstr "只在需要时创建隧道以节约资源" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:724 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:738 msgid "" "Delay opening client tunnel until activity is detected on the configured " "tunnel port" msgstr "延迟打开客户端隧道,直到在配置的隧道端口上检测到活动" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:730 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2278 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:744 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2287 msgid "Reduce tunnel quantity when idle" msgstr "空闲时缩减隧道数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:732 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:746 msgid "" "Reduce tunnel count when idle but keep tunnel open (to ensure immediate " "availability)" msgstr "空闲时减少隧道数量,但保持隧道开放(以确保立即可用)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:736 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2282 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2291 msgid "Reduce tunnel quantity when idle to conserve resources" msgstr "空闲时减少隧道数量以节约资源" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:738 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:740 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2284 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:752 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:754 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2293 msgid "Reduced tunnel count" msgstr "削减后的隧道数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:744 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:758 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2290 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:772 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2299 msgid "Idle period" msgstr "闲置时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:746 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:760 msgid "Reduced Tunnel Idle Time" msgstr "减少隧道闲置时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:764 msgid "Close tunnels when idle" msgstr "空闲时关闭隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:752 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:766 msgid "To conserve resources, close tunnels when not in use" msgstr "为节约资源,在不使用时关闭隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:756 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:770 msgid "Close client tunnels after specified idle period" msgstr "指定空闲时间后关闭客户端隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:760 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:774 msgid "Close Tunnel Idle Time" msgstr "关闭隧道的闲置时间" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:770 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:784 msgid "Change tunnel identity (destination) when tunnels reopen" msgstr "隧道重新打开时更改隧道身份(目的地)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:772 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:786 msgid "Retain tunnel identity (destination) when tunnels reopen" msgstr "隧道重新打开时保持隧道身份(目的地)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:778 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:792 msgid "New Keys on Reopen" msgstr "重新打开隧道时使用新密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:784 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:798 msgid "Enable" msgstr "启用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:790 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1734 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1744 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2180 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:804 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1743 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1753 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2189 msgid "Disable" msgstr "禁用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:802 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:816 msgid "Persistent private key" msgstr "永久私有密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:805 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:819 msgid "" "Enabling this feature will ensure your tunnel identity (destination) remains" " static, for services offering features based on destination e.g. IRC user " "authentication" msgstr "启用此功能将确保您的隧道身份(目的地)保持静态,以提供基于目的地的功能的服务,如 IRC 用户认证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:807 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2091 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:821 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1297 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2100 msgid "Path to Private Key File" msgstr "私钥文件的路径" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:816 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:830 msgid "Generate key to enable persistent client tunnel identity" msgstr "生成密钥以启用持久的客户端隧道身份" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:818 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:832 msgid "File" msgstr "文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:830 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1270 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:844 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1283 msgid "Local destination" msgstr "本地目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:832 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1279 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:846 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1292 msgid "Read Only: Local Destination (if known)" msgstr "只读:本地目的地(如果已知)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:836 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:850 msgid "Local Base32" msgstr "本地 Base32" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:847 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:861 msgid "Tunnel Filtering Options" msgstr "隧道过滤选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:849 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:863 msgid "HTTP Filtering" msgstr "HTTP 过滤" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:851 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:865 msgid "" "When enabled, the user agent of your web browser or http client will not be " "spoofed, potentially reducing your anonymity" msgstr "启用时,您的网页浏览器或 HTTP 客户端的用户代理信息将不做伪装,这可能降低您的匿名性。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:855 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:869 msgid "Do not spoof User-Agent header" msgstr "不伪装 User-Agent 报头" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:857 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:871 msgid "" "When enabled, the referer (originating page) of your web requests will not " "be filtered, potentially reducing your anonymity" msgstr "启用时,您的网页请求的引用页面(来源网址,referer)将不做过滤,可能降低您的匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:861 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:875 msgid "Do not block Referer header" msgstr "不屏蔽 Referer 头" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:863 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:877 msgid "" "When enabled, the accept headers (mime types support) broadcast by your web " "browser will not be filtered, potentially reducing your anonymity" msgstr "启用后,您的网络浏览器广播的接受标头(支持 MIME 类型)将不会被过滤,从而可能降低您的匿名性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:867 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:881 msgid "Do not block Accept headers" msgstr "不屏蔽 Accept 头" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:869 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:883 msgid "Allow SSL to I2P addresses when enabled" msgstr "启用时允许 SSL 到 I2P 地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:873 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:887 msgid "Allow SSL to I2P addresses" msgstr "允许 SSL 到 I2P 地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:881 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2014 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:895 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2023 msgid "Configuration cannot be changed after destination is created" msgstr "一旦目标被创建后配置将不能被更改" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:886 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1719 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:900 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1728 msgid "Tunnel Cryptography Options" msgstr "隧道加密选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:890 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2023 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:904 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2032 msgid "Signature type" msgstr "签名类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:894 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2027 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:908 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2036 msgid "Legacy option (deprecated), provided for backward compatibility" msgstr "旧选项(已弃用),为向后兼容性提供" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:923 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2048 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:937 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2057 msgid "This is the default, recommended option" msgstr "这是默认和推荐的选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:938 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2070 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:952 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2079 msgid "Encryption types" msgstr "加密方式" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:952 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2084 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:966 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2093 msgid "Both encryption types" msgstr "两者加密类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:958 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:972 msgid "Tunnel Authentication Options" msgstr "隧道认证选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:960 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:974 msgid "Local Authorization" msgstr "本地认证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:962 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:976 msgid "" "Enable to require a username and password to access this local service (for " "example if hosting on a LAN)" msgstr "启用此选项后,访问此本地服务时需要用户名和密码(例如托管在 LAN)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:966 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:980 msgid "Require local authorization for this service" msgstr "此服务要求身份验证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:968 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:984 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:982 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:998 msgid "Username" msgstr "用户名" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:970 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:984 msgid "Set username required to access this service" msgstr "设定访问此服务所需的用户名" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:972 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:990 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:986 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1004 msgid "Password" msgstr "密码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:974 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1854 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:988 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1863 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:1043 msgid "Set password required to access this service" msgstr "设定访问此服务所需的密码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:976 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:990 msgid "Outproxy Authorization" msgstr "出口代理认证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:978 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:992 msgid "Enable if the outproxy a username and password to access" msgstr "如果出口代理需要验证请启用" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:982 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:996 msgid "Outproxy requires authorization" msgstr "出口代理需要验证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:986 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1000 msgid "Enter username required by outproxy" msgstr "出口代理用户名" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:992 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1006 msgid "Enter password required by outproxy" msgstr "出口代理密码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1002 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1016 msgid "Tunnel Address Lookup Options" msgstr "隧道地址查询选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1004 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1018 msgid "Jump URL List" msgstr "跳转服务列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1006 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1020 msgid "" "List of helper URLs providing jump links when a host is not found in your " "addressbook" msgstr "当主机不在您的地址簿中时提供跳转链接的助手 URL 列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1018 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2394 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1032 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2403 msgid "Router I2CP Address" msgstr "路由器 I2CP 地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1022 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2398 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1036 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2407 msgid "I2CP Hostname or IP" msgstr "I2CP 主机名或 IP" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1028 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2404 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1042 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2413 msgid "I2CP Port Number" msgstr "I2CP 端口号" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1036 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1050 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2421 msgid "Custom options" msgstr "自定义选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1038 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2414 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1052 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2423 msgid "Advanced tunnel, streaming, and I2CP options" msgstr "高级隧道,串流和 I2CP 选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1042 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2418 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1056 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2427 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:599 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:745 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:738 msgid "Cancel" msgstr "取消" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1044 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2420 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1062 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2433 msgid "Delete this Proxy (cannot be undone)" msgstr "删除这个代理(无法撤销)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1047 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2423 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1064 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2435 msgid "Delete" msgstr "删除" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1049 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1070 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2441 msgid "Save" msgstr "保存" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1062 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1083 msgid "Edit Server Settings" msgstr "编辑服务设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1073 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1094 msgid "New Server Settings" msgstr "新服务设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1138 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1159 msgid "The hidden service must be stopped to change this setting" msgstr "为更改此设置,隐藏服务必须被停止" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1178 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:489 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:533 msgid "Specify the port the server is running on" msgstr "指定此服务运行于哪个端口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1193 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1209 msgid "" "To avoid traffic sniffing if connecting to a remote server, you can enable " "an SSL connection. Note that the target server must be configured to accept " "SSL connections." msgstr "要避免连接远程服务器时被流量嗅探,您可以启用 SSL 连接。注意,必须将目标服务器配置为接受 SSL 连接。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1197 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1213 msgid "Use SSL to connect to target" msgstr "使用 SSL 连接目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1215 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1226 msgid "" "Port required to access service (this can be a different port to the port " "the service is hosted on)" msgstr "访问服务所需的端口(可以与托管服务的端口不同)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:540 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:567 msgid "" "Listening interface (IP address) for client access (normally 127.0.0.1)" msgstr "监听客户端访问的接口(IP 地址)(通常是 127.0.0.1)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1259 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1272 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:659 msgid "Website Hostname" msgstr "网站主机名" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1261 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1274 msgid "Website Hostname e.g. mysite.i2p" msgstr "网站主机名,例如 mysite.i2p" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1265 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1278 msgid "(leave blank for outproxies)" msgstr "(出口代理这里请置空)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1277 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1290 msgid "Private key file" msgstr "私钥文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1339 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1348 msgid "Generate a QR Code for this domain" msgstr "为这个域名生成二维码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1347 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2133 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2141 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2142 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2150 msgid "Generate QR Code" msgstr "生成QR码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1354 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2148 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1363 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2157 msgid "Add to Private addressbook" msgstr "添加到私有地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1360 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2154 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1369 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2163 msgid "Add to local addressbook" msgstr "添加至本地地址簿" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1366 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1375 msgid "Register, unregister or change details for hostname" msgstr "注册、反注册或更改主机名的细节" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1380 msgid "Registration Authentication" msgstr "注册认证" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1377 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1386 msgid "HTTPS configuration" msgstr "HTTPS配置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1391 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/ssl_jsp.java:215 msgid "SSL Wizard" msgstr "SSL向导" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1392 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2164 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2173 msgid "" "Note: In order to enable QR code generation or registration authentication, " "configure the Website Hostname field (for websites) or the Name field " "(everything else) above with an .i2p suffixed hostname e.g. mynewserver.i2p" msgstr "注意:为了允许 QR 码生成和注册的身份验证,配置“网站主机名” / “名称”时请使用 .i2p 后缀的主机名,例如 mynewserver.i2p" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1410 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1419 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1622 msgid "Inbound" msgstr "传入" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1474 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1565 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1483 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1574 msgid "Level of Randomization for Tunnel Depth" msgstr "隧道深度随机化级别" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1522 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1667 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1676 msgid "Outbound" msgstr "传出" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1721 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1730 msgid "Encrypt Leaseset" msgstr "加密赁集" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1730 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1740 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2176 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1739 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1749 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2185 msgid "Allow all clients to connect to this service" msgstr "允许所有客户端连接到此服务" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1750 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1780 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1759 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1789 msgid "Send key to all users." msgstr "发送密钥给所有用户。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1754 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1784 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1763 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1793 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381 msgid "Encrypted" msgstr "已加密" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1764 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1773 msgid "Prevents server discovery by floodfills" msgstr "通过数据洪流预防服务器发现" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1768 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1777 msgid "Blinded" msgstr "已混淆" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1774 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1783 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1808 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1821 msgid "Send password to all users." msgstr "发送密码给所有用户。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1778 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1787 msgid "Blinded with lookup password" msgstr "使用查找密码混淆" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1786 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1795 msgid "Send key and password to all users." msgstr "发送密码和密钥给所有用户。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1790 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1799 msgid "Encrypted with lookup password" msgstr "使用查找密码加密" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1792 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1798 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1801 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1807 msgid "Send individual key to each user." msgstr "单独发送密钥给每个用户。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1796 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1809 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1818 msgid "Encrypted with per-user key" msgstr "用按用户密钥加密" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1803 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1816 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1812 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1825 msgid "Encrypted with lookup password and per-user key" msgstr "用查找密码和按用户密钥加密" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1805 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1811 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1814 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1820 msgid "Enter key from each user." msgstr "从每个用户输入密钥。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1829 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1838 msgid "Optional lookup password" msgstr "可选查找密码" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1844 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1853 msgid "Encryption Key" msgstr "加密密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1872 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1881 msgid "Encryption key required to access this service" msgstr "需要加密密钥来访问这个服务器" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1886 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1895 msgid "Revoke" msgstr "撤销" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1888 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1925 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1897 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1934 msgid "Client Name" msgstr "客户端名称" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1890 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1933 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1899 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1942 msgid "Client Key" msgstr "客户端密钥" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1907 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1939 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1916 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1948 msgid "Client" msgstr "客户" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1923 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:1932 msgid "Add" msgstr "添加" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2055 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2064 msgid "Recommended for blinded and encrypted destinations" msgstr "推荐匿名和加密的目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2097 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2106 msgid "Alternate private key file" msgstr "备用私钥文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2111 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2120 msgid "Alternate local destination" msgstr "备用本地目的地" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2113 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2122 msgid "Read Only: Alternate Local Destination" msgstr "只读:可选的本地目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2172 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2181 msgid "Tunnel Access Control Options" msgstr "隧道地址控制选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2174 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2183 msgid "Restricted Access List" msgstr "限制访问列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2182 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2191 msgid "Prevent listed clients from connecting to this service" msgstr "阻止列出的客户端连接到此服务" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2186 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2195 msgid "Deny List" msgstr "拒绝列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2188 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2197 msgid "Only allow listed clients to connect to this service" msgstr "仅允许列出的客户端连接到此服务" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2192 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2201 msgid "Allow List" msgstr "允许列表" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2194 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2203 msgid "Access List Description" msgstr "访问列表描述" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2196 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2205 msgid "Specify clients, 1 per line" msgstr "指定客户端,每行一个" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2198 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2207 msgid "Control access to this service" msgstr "控制访问此服务的权限" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2202 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2211 msgid "Filter Definition File" msgstr "过滤器定义文件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2204 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2213 msgid "You can define an advanced filter for this tunnel." msgstr "您可以为此隧道定义高级过滤器。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2206 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2215 msgid "Format Specification" msgstr "格式规范" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2208 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2217 msgid "Absolute path to file containing filter definition" msgstr "包含过滤目标的文件绝对地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2212 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2221 msgid "Server Access Options" msgstr "服务器访问选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2218 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2227 msgid "Prevent clients from accessing this service via an inproxy" msgstr "通过一个传入代理避免客户端访问此服务" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2222 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2231 msgid "Block Access via Inproxies" msgstr "以代理阻止访问" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2226 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2235 msgid "Block Accesses containing Referers" msgstr "阻止包含 Referers 的访问" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2228 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2237 msgid "Deny User-Agents matching these strings (probably from inproxies)" msgstr "User-Agents (可能出自 inproxies)匹配这些字符串时拒绝访问" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2232 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 msgid "Block these User-Agents" msgstr "阻止这些 User-Agent" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2234 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2243 msgid "comma separated, e.g. Mozilla,Opera (case-sensitive)" msgstr "以逗号分隔,例:Mozilla,Opera(大小写敏感)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2241 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2250 msgid "" "Use unique IP addresses for each connecting client (local non-SSL servers " "only)" msgstr "为每个连接的客户端使用单独的IP地址(仅本地非SSL服务器)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2245 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2254 msgid "Unique Local Address per Client" msgstr "每个客户端的唯一本地地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2247 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2256 msgid "Only enable if you are hosting this service on multiple routers" msgstr "仅当你在多个路由上运行此服务时启用。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2251 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2260 msgid "Optimize for Multihoming" msgstr "为多宿主优化" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2253 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2262 msgid "Tunnel Performance Options" msgstr "隧道性能选项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2286 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2295 msgid "Number of tunnels to keep open to maintain availability of service" msgstr "许多隧道保持开放来保持服务的有效性" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2301 msgid "Period of inactivity before tunnel number is reduced" msgstr "隧道数量减少前的非活动期" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2296 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2366 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2378 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2386 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2305 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2375 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2387 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2395 msgid "minutes" msgstr "分钟" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2307 msgid "Server Throttling" msgstr "服务器节流" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2309 msgid "Inbound connection limits" msgstr "入站连接限制" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 msgid "Per Minute" msgstr "每分钟" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2313 msgid "Per Hour" msgstr "每小时" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2315 msgid "Per Day" msgstr "每天" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2308 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2356 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2317 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2365 msgid "Per Client" msgstr "每个客户端" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2311 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2320 msgid "unlimited" msgstr "无限制" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2323 msgid "" "Maximum number of web page requests per minute for a unique client before " "access to the server is blocked" msgstr "在对服务器的访问被阻挡之前,每分钟用于唯一客户端的最大网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2318 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2327 msgid "" "Maximum number of web page requests per hour for a unique client before " "access to the server is blocked" msgstr "在对服务器的访问被阻挡之前,每小时用于唯一客户端的最大网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2331 msgid "" "Maximum number of web page requests per day for a unique client before " "access to the server is blocked" msgstr "在对服务器的访问被阻挡之前,每天用于唯一客户端的最大网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2326 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2368 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2335 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2377 msgid "Total" msgstr "总数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2337 msgid "" "Total number of web page requests per minute before access to the server is " "blocked" msgstr "在对服务器的访问被阻挡之前,每分钟用于唯一客户端的总网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2341 msgid "" "Total number of web page requests per hour before access to the server is " "blocked" msgstr "在对服务器的访问被阻挡之前,每小时用于唯一客户端的总网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2336 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2345 msgid "" "Total number of web page requests per day before access to the server is " "blocked" msgstr "在对服务器的访问被阻挡之前,每天用于唯一客户端的总网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2340 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2349 msgid "Max concurrent connections" msgstr "最大并发连接数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2342 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2351 msgid "Maximum number of simultaneous client connections" msgstr "同时连接客户端的最大数量" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2350 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2359 msgid "POST limits" msgstr "POST 限制" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2352 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2361 msgid "Per Period" msgstr "每个周期" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2354 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2363 msgid "Ban Duration" msgstr "封禁持续" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2358 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2367 msgid "" "Maximum number of post requests permitted for a unique client for the " "configured time span" msgstr "配置的时间跨度中用于唯一客户端的最大网页请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2362 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2371 msgid "" "If a client exceeds the maximum number of post requests per allocated " "period, enforce a ban for this number of minutes" msgstr "如果一个客户端提交的 POST 请求数量超过了每分配时段的最大 POST 请求数量,那么服务端将会强制执行该数量的分钟数的封禁" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2370 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2379 msgid "Total number of post requests permitted for the configured time span" msgstr "配置的时间跨度中被允许的总 POST 请求数" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2374 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2383 msgid "" "If the maximum number of post requests per allocated period is exceeded, " "enforce a global access ban for this number of minutes" msgstr "如果提交的 POST 请求数量超过了每分配时段的最大 POST 请求数量,那么服务端将会强制执行该数量的分钟数的全局封禁" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2380 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2389 msgid "POST limit period" msgstr "POST 限制时长" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2382 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2391 msgid "" "Time span for the maximum number of post requests to be reached before a ban" " is triggered" msgstr "在实施封禁之前达到的最大 POST 请求数的时间跨度" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:2451 msgid "Tunnels not initialized yet; please retry in a few moments." msgstr "隧道尚未初始化;请稍后重试。" @@ -1558,155 +1566,157 @@ msgstr "指向" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:228 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:289 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:288 msgid "Preview" msgstr "预览" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:230 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:468 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:467 msgid "Status" msgstr "状态" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:470 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:469 msgid "Control" msgstr "控制项" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240 msgid "Edit Server Tunnel Settings for" msgstr "编辑服务器隧道设置 - " -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:255 msgid "Test HTTPS server, bypassing I2P" msgstr "测试 HTTPS 服务器,绕过 I2P" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:264 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:263 msgid "Test HTTP server, bypassing I2P" msgstr "测试 HTTP 服务器,绕过 I2P" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:284 msgid "Test HTTP server through I2P" msgstr "测试 HTTP 服务器,通过 I2P" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293 msgid "No Preview" msgstr "无预览" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:512 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:303 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:510 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:513 msgid "Starting..." msgstr "正在启动..." -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:309 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:517 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:515 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:553 msgid "Stop this Tunnel" msgstr "停止这个隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:316 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:524 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:315 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:522 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:541 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:558 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:560 msgid "Stop" msgstr "停止" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:323 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:548 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:551 msgid "Running" msgstr "运行中" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:345 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:565 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:568 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:344 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:567 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:570 msgid "Stopped" msgstr "已停止" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:347 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:570 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:572 msgid "Start this Tunnel" msgstr "启动这个隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:354 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:577 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:579 msgid "Start" msgstr "启动" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:595 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:365 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:597 msgid "Destination" msgstr "目标" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370 msgid "Hostname" msgstr "主机名" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:412 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:411 msgid "Share your site using the hostname" msgstr "通过主机名来分享您的站点" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:433 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:432 msgid "Copy the hostname to the clipboard" msgstr "将该主机名复制到剪贴板上" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:436 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:435 msgid "Copy Hostname" msgstr "复制主机名称" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:452 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:451 msgid "New hidden service" msgstr "新建隐身服务" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:454 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:675 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:286 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:320 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:344 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:350 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:634 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:453 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:367 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:401 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:425 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:647 msgid "Standard" msgstr "标准" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:456 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:677 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:679 msgid "Create" msgstr "创建" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:458 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:457 msgid "I2P Client Tunnels" msgstr "I2P 客户端隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:464 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:463 msgid "Interface" msgstr "网络接口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:479 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:477 msgid "Edit Tunnel Settings for" msgstr "编辑隧道设置 - " -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:531 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:534 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:529 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:532 msgid "Standby" msgstr "等待" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:589 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:591 msgid "Outproxy" msgstr "出口代理" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:602 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:604 msgid "internal plugin" msgstr "内部插件" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:621 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:623 msgid "none" msgstr "无" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:673 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:675 msgid "New client tunnel" msgstr "新建客户隧道" @@ -1729,7 +1739,7 @@ msgstr "请务必选择、复制和粘贴相应身份验证数据的整个内容到您喜欢的注册网站的表单" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/register_jsp.java:248 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:650 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:663 msgid "Tunnel name" msgstr "隧道名称" @@ -1992,12 +2002,12 @@ msgstr "I2P 隧道管理器 - 隧道创建向导" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:202 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:625 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:638 msgid "Server or client tunnel?" msgstr "服务器或客户端隧道?" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:208 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:629 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:642 msgid "Tunnel type" msgstr "隧道类型" @@ -2006,7 +2016,7 @@ msgstr "隧道名称和描述" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:220 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:661 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:674 msgid "Tunnel destination" msgstr "隧道描述" @@ -2015,7 +2025,7 @@ msgstr "隧道绑定的地址和端口" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:232 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:711 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:716 msgid "Tunnel auto-start" msgstr "隧道自动启用" @@ -2023,320 +2033,320 @@ msgid "Wizard completed" msgstr "向导完成" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:252 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:339 msgid "" "This wizard will take you through the various options available for creating" " tunnels in I2P." msgstr "本向导将帮助您配置I2P隧道创建中的各种选项。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:254 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:341 msgid "" "The first thing to decide is whether you want to create a server or a client" " tunnel." msgstr "首先您需要确定,创建的是服务端还是客户端隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:256 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:343 msgid "" "If you need to connect to a remote service, such as an IRC server inside I2P" " or a code repository, then you will require a CLIENT tunnel." msgstr "如果您想通过隧道访问远程的服务,例如I2P的IRC聊天服务器或代码库,那么请选择*客户隧道*。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:258 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:345 msgid "" "On the other hand, if you wish to host a service for others to connect to " "you'll need to create a SERVER tunnel." msgstr "相反,如果您希望提供自己的服务,来让别人访问,您需要创建*服务端隧道*。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:260 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:347 msgid "Server Tunnel" msgstr "服务端隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:262 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:349 msgid "Client Tunnel" msgstr "客户端隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:280 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:361 msgid "There are several types of tunnels to choose from:" msgstr "其中有几种隧道类型可选:" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:288 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:369 msgid "Basic tunnel for connecting to a single service inside I2P." msgstr "基本隧道供连接至I2P中的单个服务。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:290 -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:324 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:405 msgid "" "Try this if none of the tunnel types below fit your requirements, or you " "don't know what type of tunnel you need." msgstr "请尝试此项,如果后面的类型没有适合您的,或您不清楚需要何种类型的隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:292 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:373 msgid "Tunnel that acts as an HTTP proxy for reaching I2P Sites inside I2P." msgstr "访问HTTP代理的隧道,用来访问I2P中的站点。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:294 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:375 msgid "" "Set your browser to use this tunnel as an http proxy, or set your " "\"http_proxy\" environment variable for command-line applications in " "GNU/Linux." msgstr "设置您的浏览器将此隧道作为 HTTP 代理,在 GNU/Linux 的命令行环境中请使用 \"http_proxy\" 环境变量。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:296 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:377 msgid "" "Websites outside I2P can also be reached if an HTTP proxy within I2P is " "known." msgstr "如果您知道I2P中的HTTP代理节点,也可以通过其访问I2P以为的网站。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:298 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:379 msgid "Customized client tunnel specific for IRC connections." msgstr "自定义客户端隧道,专为 IRC 连接设置。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:300 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:381 msgid "" "With this tunnel type, your IRC client will be able to connect to an IRC " "network inside I2P." msgstr "使用此隧道类型,您的IRC客户端可以连接至I2P内的IRC网络。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:302 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:383 msgid "" "Each IRC network in I2P that you wish to connect to will require its own " "tunnel. (See Also, SOCKS IRC)" msgstr "I2P中的每个IRC网络,都需要自己独立的隧道。(参见,SOCKS IRC)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:304 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:385 msgid "A tunnel that implements the SOCKS protocol." msgstr "实现 SOCKS 协议的隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:306 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:387 msgid "" "This enables both TCP and UDP connections to be made through a SOCKS " "outproxy within I2P." msgstr "此隧道可以通过 I2P 中 SOCKS 出口代理进行的 TCP 和 UDP 连接。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:308 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:389 msgid "" "A client tunnel implementing the SOCKS protocol, which is customized for " "connecting to IRC networks." msgstr "实现SOCKS协议的客户端隧道,专门为连接IRC网络而调整。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:310 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:391 msgid "" "With this tunnel type, IRC networks in I2P can be reached by typing the I2P " "address into your IRC client, and configuring the IRC client to use this " "SOCKS tunnel." msgstr "使用此隧道类型时,可以在IRC客户端中设置使用此Socks隧道,通过I2P地址访问I2P中的IRC网络。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:312 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:393 msgid "" "This means that only one I2P tunnel is required rather than a separate " "tunnel per IRC network." msgstr "即一个I2P隧道可以连接多个IRC网络。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:314 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:395 msgid "" "IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P " "is known, though it depends on whether or not the outproxy has been blocked " "by the IRC network." msgstr "如果设置SOCKS出口代理,I2P之外的IRC网络也可以访问,尽管这取决于IRC网络是否允许您的出口代理连接。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:322 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:403 msgid "A basic server tunnel for hosting a generic service inside I2P." msgstr "基本服务隧道,适合I2P中的普通服务。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:326 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:407 msgid "A server tunnel that is customized for HTTP connections." msgstr "为HTTP连接而调整的服务隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:328 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:409 msgid "Use this tunnel type if you want to host an I2P Site." msgstr "如果您想要创建一个 I2P 网站请使用此隧道类型。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:330 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:411 msgid "A customized server tunnel for hosting IRC networks inside I2P." msgstr "一个为在 I2P 内部主持 IRC 网络而设立的自定义服务器隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:332 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413 msgid "" "Usually, a separate tunnel needs to be created for each IRC server that is " "to be accessible inside I2P." msgstr "通常每个IRC服务器需要单独占用一条隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:338 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:419 msgid "Select tunnel type" msgstr "选择隧道类型" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:371 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:446 msgid "Choose a name and description for your tunnel." msgstr "为您的隧道选择一个名称和描述。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:448 msgid "" "These can be anything you want - they are just for ease of identifying the " "tunnel in the routerconsole." msgstr "您可以随意设置 - 它们只是为了您在路由控制台中能较容易的识别这些隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:407 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:474 msgid "" "If you know of any outproxies for this type of tunnel (either HTTP or " "SOCKS), fill them in below." msgstr "如果您直到此种隧道类型(HTTP或SOCKS)的出口代理,请将它们填入下表。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:409 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:476 msgid "Separate multiple proxies with commas." msgstr "使用空格分隔多个代理。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:480 msgid "" "List of I2P outproxy destinations, separated with commas (e.g. " "proxy1.i2p,proxy2.i2p)" msgstr "I2P出口代理地址列表,以逗号分开(如proxy1.i2p,proxy2.i2p)" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:429 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:490 msgid "" "Type in the I2P destination of the service that this client tunnel should " "connect to." msgstr "请输入该客户端隧道应连接的 I2P 服务目标。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:431 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:492 msgid "" "This could be the full Base64 destination key, or an I2P URL from your " "address book." msgstr "这可能是一个完整的 Base64 编码的目标密钥或您地址簿中的一个 I2P URL。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:435 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:496 msgid "Enter a b64 or .i2p address here" msgstr "在这里输入一个b64或者.i2p地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:460 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:517 msgid "" "This is the IP that your service is running on, this is usually on the same " "machine so 127.0.0.1 is autofilled." msgstr "这是您的服务当前运行的 IP,通常服务跟I2P在同一电脑上,所以自动填写为 127.0.0.1 。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:485 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:529 msgid "This is the port that the service is accepting connections on." msgstr "这是服务接收连接的端口。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:548 msgid "This is the port that the client tunnel will be accessed from locally." msgstr "这是客户隧道将使用的本地端口。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:531 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:558 msgid "" "How do you want this tunnel to be accessed? By just this machine, your " "entire subnet, or external internet?" msgstr "您希望谁可以访问此端口?仅本机,您的整个子网,还是公共外网?" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:533 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:560 msgid "You will most likely want to just allow 127.0.0.1" msgstr "通常用户只允许127.0.0.1" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:576 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:597 msgid "" "The I2P router can automatically start this tunnel for you when the router " "is started." msgstr "I2P 路由可以在启动时自动为您启动此隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:578 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:599 msgid "" "This can be useful for frequently-used tunnels (especially server tunnels), " "but for tunnels that are only used occasionally it would mean that the I2P " "router is creating and maintaining unnecessary tunnels." msgstr "这适用于经常使用的隧道(尤其是服务端隧道),但如果隧道仅偶尔使用,会不必要地占用I2P的资源。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:604 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:617 msgid "The wizard has now collected enough information to create your tunnel." msgstr "向导已收集到最够的信息来完成隧道的创建。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:606 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619 msgid "" "Upon clicking the Save button below, the wizard will set up the tunnel, and " "take you back to the main I2PTunnel page." msgstr "点击下面的保存按钮,向导将完成隧道设置,带您返回 I2PTunnel 的主页面。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:611 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:624 msgid "" "Because you chose to automatically start the tunnel when the router starts, " "you don't have to do anything further." msgstr "因为您选择了路由启动时自动启动隧道,您无需再做其他设置。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:613 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:626 msgid "The router will start the tunnel once it has been set up." msgstr "路由将在设置好后自动启动隧道。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:617 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:630 msgid "" "Because you chose not to automatically start the tunnel, you will have to " "manually start it." msgstr "由于您选择了不自动启用隧道,您需要手动启动它。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:619 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:632 msgid "" "You can do this by clicking the Start button on the main page which " "corresponds to the new tunnel." msgstr "您只需在主页面中对应的新隧道上点击启动按钮。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:623 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:636 msgid "Below is a summary of the options you chose:" msgstr "下面列出了您选择的选项。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:654 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:667 msgid "Tunnel description" msgstr "隧道描述" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:680 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:693 msgid "Binding address" msgstr "监听地址" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:688 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:697 msgid "Tunnel port" msgstr "隧道端口" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:722 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:727 msgid "" "Alongside these basic settings, there are a number of advanced options for " "tunnel configuration." msgstr "除了这些基本的设置,隧道配置还有多个高级选项可以设置。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:724 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:729 msgid "" "The wizard will set reasonably sensible default values for these, but you " "can view and/or edit these by clicking on the tunnel's name in the main " "I2PTunnel page." msgstr "向导会设置合理的默认值,不过您仍可通过在I2PTunnel主页中点击隧道名称来查看/编辑它们。" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:743 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:736 msgid "Cancel the wizard and return to Tunnel Manager home page" msgstr "取消向导并返回隧道管理首页" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:750 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:743 msgid "Return to previous page" msgstr "返回上一页" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:753 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:745 msgid "Previous" msgstr "上一步" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:761 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:753 msgid "Save tunnel configuration" msgstr "保存隧道设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:764 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:756 msgid "Save Tunnel" msgstr "保存隧道" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:770 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:762 msgid "Finish Wizard and review tunnel settings" msgstr "完成向导并预览隧道设置" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:773 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:765 msgid "Finish" msgstr "完成" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:779 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:771 msgid "Advance to next page" msgstr "前进到下一页" -#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:782 +#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/wizard_jsp.java:774 msgid "Next" msgstr "下一步" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale/messages_zh_TW.po i2p-2.5.0/apps/i2ptunnel/locale/messages_zh_TW.po --- i2p-2.4.0/apps/i2ptunnel/locale/messages_zh_TW.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale/messages_zh_TW.po 2024-04-10 02:29:57.000000000 +0000 @@ -368,7 +368,7 @@ #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:412 msgid "Outproxy Type" -msgstr "" +msgstr "出口代理类型" #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/edit_jsp.java:426 msgid "SSL Outproxies" diff -Nru i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_cs.po i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_cs.po --- i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_cs.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_cs.po 2024-04-10 02:29:57.000000000 +0000 @@ -11,9 +11,9 @@ "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-05 14:31+0000\n" -"PO-Revision-Date: 2021-07-08 12:49+0000\n" -"Last-Translator: slrslr\n" -"Language-Team: Czech (http://www.transifex.com/otf/I2P/language/cs/)\n" +"PO-Revision-Date: 2013-07-20 14:50+0000\n" +"Last-Translator: A5h8d0wf0x , 2014\n" +"Language-Team: Czech (http://app.transifex.com/otf/I2P/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -644,7 +644,7 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:301 msgid "Address book" -msgstr "" +msgstr "Adresář" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:311 msgid "Copy the key and send it to the server operator." diff -Nru i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_pt.po i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_pt.po --- i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_pt.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_pt.po 2024-04-10 02:29:57.000000000 +0000 @@ -19,12 +19,12 @@ "POT-Creation-Date: 2021-02-05 14:31+0000\n" "PO-Revision-Date: 2013-07-20 14:50+0000\n" "Last-Translator: Manuela Silva , 2017\n" -"Language-Team: Portuguese (http://www.transifex.com/otf/I2P/language/pt/)\n" +"Language-Team: Portuguese (http://app.transifex.com/otf/I2P/language/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11 #: ../java/build/Proxy.java:40 ../java/build/Proxy.java:49 @@ -139,7 +139,7 @@ #: ../java/build/Proxy.java:23 msgid "" "The HTTP outproxy was not reachable, because its lease set was not found." -msgstr "" +msgstr "O outproxy HTTP não estava acessível, porque seu conjunto de concessão não foi encontrado." #: ../java/build/Proxy.java:24 msgid "" @@ -204,11 +204,11 @@ #: ../java/build/Proxy.java:47 msgid "The Base32 address is invalid." -msgstr "" +msgstr "O endereço Base32 é inválido." #: ../java/build/Proxy.java:56 msgid "The website was not reachable, because its lease set was not found." -msgstr "" +msgstr "O site não foi acessado, porque seu conjunto de locação não foi encontrado." #: ../java/build/Proxy.java:57 msgid "" @@ -285,7 +285,7 @@ msgid "" "The website was not reachable, because it uses encryption options that are " "not supported by your I2P or Java version." -msgstr "" +msgstr "O site não estava acessível, porque ele usa opções de criptografia que não são suportadas pela sua versão I2P ou Java." #: ../java/build/Proxy.java:99 ../java/build/Proxy.java:217 msgid "Could not connect to the following destination:" @@ -294,7 +294,7 @@ #: ../java/build/Proxy.java:100 ../java/build/Proxy.java:106 #: ../java/build/Proxy.java:185 ../java/build/Proxy.java:191 msgid "Connection Reset" -msgstr "" +msgstr "Redefinição de conexão" #: ../java/build/Proxy.java:107 msgid "The connection to the website was reset while the page was loading." @@ -308,7 +308,7 @@ #: ../java/build/Proxy.java:117 msgid "Warning: Authorization Required" -msgstr "" +msgstr "Aviso: Autorização necessária" #: ../java/build/Proxy.java:126 msgid "" @@ -354,14 +354,14 @@ msgid "" "Someone could be trying to impersonate another website, or people have given" " two websites identical names." -msgstr "" +msgstr "Alguém pode estar tentando se passar por outro site, ou as pessoas deram nomes idênticos a dois sites." #: ../java/build/Proxy.java:149 msgid "" "Resolve the conflict by deciding which key you trust, and then either ignore" " the address helper link, or delete the host entry from your address book " "and click the address helper link again." -msgstr "" +msgstr "Resolva o conflito decidindo em qual chave você confia e, em seguida, ignore o link auxiliar de endereço ou exclua a entrada do host do catálogo de endereços e clique no link auxiliar de endereço novamente." #: ../java/build/Proxy.java:150 ../java/build/Proxy.java:156 msgid "Warning: Bad Address Helper" @@ -462,7 +462,7 @@ msgid "" "The HTTP outproxy was not reachable, because it uses encryption options that" " are not supported by your I2P or Java version." -msgstr "" +msgstr "O outproxy HTTP não estava acessível, porque ele usa opções de criptografia que não são suportadas pela sua versão I2P ou Java." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:692 msgid "This seems to be a bad destination:" @@ -478,20 +478,20 @@ "To visit the destination in your address book, click here. To visit the conflicting addresshelper destination, " "click here." -msgstr "" +msgstr "Para visitar o destino em seu catálogo de endereços, clique em aqui. Para visitar o destino do helper de endereço conflitante, clique em aqui." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:774 #, java-format msgid "Destination for {0} in address book" -msgstr "" +msgstr "Destino para: {0} no catálogo de endereços" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:777 msgid "Conflicting address helper destination" -msgstr "" +msgstr "Destino do auxiliar de endereço conflitante" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224 msgid "Corrupt Base32 address" -msgstr "" +msgstr "Endereço Base32 corrompido" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1304 msgid "Destination lease set not found" @@ -504,7 +504,7 @@ #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1441 #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1502 msgid "Base32" -msgstr "" +msgstr "Base32" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1445 msgid "Destination" @@ -519,11 +519,11 @@ msgid "" "You can browse to the site without saving it to the address book. The " "address will be remembered until you restart your I2P router." -msgstr "" +msgstr "Você pode navegar até o site sem salvá-lo no catálogo de endereços. O endereço será lembrado até que você reinicie o roteador I2P." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1453 msgid "Continue without saving" -msgstr "" +msgstr "Continue without saving" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1460 #, java-format @@ -534,59 +534,59 @@ msgid "" "This address will be saved to your Router address book where your " "subscription-based addresses are stored." -msgstr "" +msgstr "Esse endereço será salvo no catálogo de endereços do roteador, onde seus endereços baseados em assinatura serão armazenados." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1463 msgid "" "If you want to keep track of sites you have added manually, add to your " "Local or Private address book instead." -msgstr "" +msgstr "Se você quiser acompanhar os sites adicionados manualmente, adicione ao seu catálogo de endereços Local ou Privado." #. FIXME wasn't escaped #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1466 #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1548 msgid "Save & continue" -msgstr "" +msgstr "Salvar & continuar" #. only blockfile supports multiple books #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1473 #, java-format msgid "Save {0} to local address book and continue to website" -msgstr "" +msgstr "Salvar {0} para o catálogo de endereços local e continuar para o site" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1474 msgid "" "This address will be saved to your Local address book. Select this option " "for addresses you wish to keep separate from the main router address book, " "but don't mind publishing." -msgstr "" +msgstr "Este endereço será guardado no seu livro de endereços local. Selecione essa opção para endereços que você deseja manter separados do catálogo de endereços do roteador principal, mas não se importe de publicar." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1478 #, java-format msgid "Save {0} to private address book and continue to website" -msgstr "" +msgstr "Salvar {0} para o catálogo de endereços privado e continuar para o site" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1479 msgid "" "This address will be saved to your Private address book, ensuring it is " "never published." -msgstr "" +msgstr "Esse endereço será salvo em seu catálogo de endereços privado, garantindo que nunca seja publicado." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1507 msgid "Base32 address requires lookup password" -msgstr "" +msgstr "O endereço Base32 requer senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1509 msgid "Base32 address requires encryption key" -msgstr "" +msgstr "O endereço Base32 requer chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1511 msgid "Base32 address requires encryption key and lookup password" -msgstr "" +msgstr "O endereço Base32 requer chave de criptografia e senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1513 msgid "Base32 address decryption failure, check encryption key" -msgstr "" +msgstr "Falha de descriptografia de endereço Base32, verifique a chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1524 msgid "Generate" @@ -600,27 +600,27 @@ msgid "" "You must either enter a PSK encryption key provided by the server operator, " "or generate a DH encryption key and send that to the server operator." -msgstr "" +msgstr "Você deve inserir uma chave de criptografia PSK fornecida pelo operador do servidor ou gerar uma chave de criptografia DH e enviá-la ao operador do servidor." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1527 msgid "Ask the server operator for help." -msgstr "" +msgstr "Peça ajuda ao operador do servidor." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1530 msgid "Enter PSK encryption key" -msgstr "" +msgstr "Digite a chave de criptografia PSK" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1533 msgid "Generate new DH encryption key" -msgstr "" +msgstr "Gerar nova chave de criptografia DH" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1541 msgid "Lookup password" -msgstr "" +msgstr "Senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1542 msgid "You must enter the password provided by the server operator." -msgstr "" +msgstr "Você deve digitar a senha fornecida pelo operador do servidor." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196 #, java-format @@ -633,20 +633,20 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:235 msgid "Missing lookup password" -msgstr "" +msgstr "Senha de pesquisa ausente" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:249 msgid "Missing private key" -msgstr "" +msgstr "Chave privada ausente" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:254 msgid "Invalid private key" -msgstr "" +msgstr "Chave privada inválida" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:287 #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:306 msgid "Your new encryption key" -msgstr "" +msgstr "Sua nova chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:301 msgid "Address book" @@ -654,15 +654,15 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:311 msgid "Copy the key and send it to the server operator." -msgstr "" +msgstr "Copie a chave e envie-a para o operador do servidor." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:313 msgid "After you are granted permission, you may proceed to the website." -msgstr "" +msgstr "Depois de receber permissão, você pode prosseguir para o site." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:334 msgid "Go back and fix the error" -msgstr "" +msgstr "Volte e corrija o erro" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:345 msgid "router" @@ -670,7 +670,7 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:347 msgid "local" -msgstr "" +msgstr "local" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:349 msgid "private" @@ -690,12 +690,12 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:376 #, java-format msgid "Saved {0} to the {1} address book, redirecting now." -msgstr "" +msgstr "Salvou {0} para o {1} catálogo de endereços, redirecionando agora." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:377 #, java-format msgid "Failed to save {0} to the {1} address book, redirecting now." -msgstr "" +msgstr "Falha ao salvar {0} para o {1} catálogo de endereços, redirecionando agora." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:379 #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:411 @@ -705,4 +705,4 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:409 #, java-format msgid "Saved the authentication for {0}, redirecting now." -msgstr "" +msgstr "Salvo a autenticação para {0}, redirecionando agora." diff -Nru i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_pt_BR.po i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_pt_BR.po --- i2p-2.4.0/apps/i2ptunnel/locale-proxy/messages_pt_BR.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/locale-proxy/messages_pt_BR.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,6 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: +# Cauan Henrique Zorzenon , 2024 # L., 2013 # L., 2015,2017 # L., 2013-2014 @@ -13,13 +14,13 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-02-05 14:31+0000\n" "PO-Revision-Date: 2013-07-20 14:50+0000\n" -"Last-Translator: L., 2015,2017\n" -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/otf/I2P/language/pt_BR/)\n" +"Last-Translator: Cauan Henrique Zorzenon , 2024\n" +"Language-Team: Portuguese (Brazil) (http://app.transifex.com/otf/I2P/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #: ../java/build/Proxy.java:5 ../java/build/Proxy.java:11 #: ../java/build/Proxy.java:40 ../java/build/Proxy.java:49 @@ -134,7 +135,7 @@ #: ../java/build/Proxy.java:23 msgid "" "The HTTP outproxy was not reachable, because its lease set was not found." -msgstr "" +msgstr "O outproxy HTTP não estava acessível, porque seu conjunto de concessão não foi encontrado." #: ../java/build/Proxy.java:24 msgid "" @@ -199,11 +200,11 @@ #: ../java/build/Proxy.java:47 msgid "The Base32 address is invalid." -msgstr "" +msgstr "O endereço Base32 é inválido." #: ../java/build/Proxy.java:56 msgid "The website was not reachable, because its lease set was not found." -msgstr "" +msgstr "O site não foi acessado, porque seu conjunto de locação não foi encontrado." #: ../java/build/Proxy.java:57 msgid "" @@ -280,7 +281,7 @@ msgid "" "The website was not reachable, because it uses encryption options that are " "not supported by your I2P or Java version." -msgstr "" +msgstr "O site não estava acessível, porque ele usa opções de criptografia que não são suportadas pela sua versão I2P ou Java." #: ../java/build/Proxy.java:99 ../java/build/Proxy.java:217 msgid "Could not connect to the following destination:" @@ -289,7 +290,7 @@ #: ../java/build/Proxy.java:100 ../java/build/Proxy.java:106 #: ../java/build/Proxy.java:185 ../java/build/Proxy.java:191 msgid "Connection Reset" -msgstr "" +msgstr "Redefinição de conexão" #: ../java/build/Proxy.java:107 msgid "The connection to the website was reset while the page was loading." @@ -303,7 +304,7 @@ #: ../java/build/Proxy.java:117 msgid "Warning: Authorization Required" -msgstr "" +msgstr "Aviso: Autorização necessária" #: ../java/build/Proxy.java:126 msgid "" @@ -349,14 +350,14 @@ msgid "" "Someone could be trying to impersonate another website, or people have given" " two websites identical names." -msgstr "" +msgstr "Alguém pode estar tentando se passar por outro site, ou as pessoas deram nomes idênticos a dois sites." #: ../java/build/Proxy.java:149 msgid "" "Resolve the conflict by deciding which key you trust, and then either ignore" " the address helper link, or delete the host entry from your address book " "and click the address helper link again." -msgstr "" +msgstr "Resolva o conflito decidindo em qual chave você confia e, em seguida, ignore o link auxiliar de endereço ou exclua a entrada do host do catálogo de endereços e clique no link auxiliar de endereço novamente." #: ../java/build/Proxy.java:150 ../java/build/Proxy.java:156 msgid "Warning: Bad Address Helper" @@ -457,7 +458,7 @@ msgid "" "The HTTP outproxy was not reachable, because it uses encryption options that" " are not supported by your I2P or Java version." -msgstr "" +msgstr "O outproxy HTTP não estava acessível, porque ele usa opções de criptografia que não são suportadas pela sua versão I2P ou Java." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:692 msgid "This seems to be a bad destination:" @@ -473,20 +474,20 @@ "To visit the destination in your address book, click here. To visit the conflicting addresshelper destination, " "click here." -msgstr "" +msgstr "Para visitar o destino em seu catálogo de endereços, clique em aqui. Para visitar o destino do helper de endereço conflitante, clique em aqui." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:774 #, java-format msgid "Destination for {0} in address book" -msgstr "" +msgstr "Destino para: {0} no catálogo de endereços" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:777 msgid "Conflicting address helper destination" -msgstr "" +msgstr "Destino do auxiliar de endereço conflitante" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1224 msgid "Corrupt Base32 address" -msgstr "" +msgstr "Endereço Base32 corrompido" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1304 msgid "Destination lease set not found" @@ -499,7 +500,7 @@ #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1441 #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1502 msgid "Base32" -msgstr "" +msgstr "Base32" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1445 msgid "Destination" @@ -514,11 +515,11 @@ msgid "" "You can browse to the site without saving it to the address book. The " "address will be remembered until you restart your I2P router." -msgstr "" +msgstr "Você pode navegar até o site sem salvá-lo no catálogo de endereços. O endereço será lembrado até que você reinicie o roteador I2P." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1453 msgid "Continue without saving" -msgstr "" +msgstr "Continuar sem salvar" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1460 #, java-format @@ -529,59 +530,59 @@ msgid "" "This address will be saved to your Router address book where your " "subscription-based addresses are stored." -msgstr "" +msgstr "Esse endereço será salvo no catálogo de endereços do roteador, onde seus endereços baseados em assinatura serão armazenados." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1463 msgid "" "If you want to keep track of sites you have added manually, add to your " "Local or Private address book instead." -msgstr "" +msgstr "Se você quiser acompanhar os sites adicionados manualmente, adicione ao seu catálogo de endereços Local ou Privado." #. FIXME wasn't escaped #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1466 #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1548 msgid "Save & continue" -msgstr "" +msgstr "Salvar & continuar" #. only blockfile supports multiple books #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1473 #, java-format msgid "Save {0} to local address book and continue to website" -msgstr "" +msgstr "Salvar {0} para o catálogo de endereços local e continuar para o site" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1474 msgid "" "This address will be saved to your Local address book. Select this option " "for addresses you wish to keep separate from the main router address book, " "but don't mind publishing." -msgstr "" +msgstr "Este endereço será guardado no seu livro de endereços local. Selecione essa opção para endereços que você deseja manter separados do catálogo de endereços do roteador principal, mas não se importe de publicar." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1478 #, java-format msgid "Save {0} to private address book and continue to website" -msgstr "" +msgstr "Salvar {0} para o catálogo de endereços privado e continuar para o site" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1479 msgid "" "This address will be saved to your Private address book, ensuring it is " "never published." -msgstr "" +msgstr "Esse endereço será salvo em seu catálogo de endereços privado, garantindo que nunca seja publicado." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1507 msgid "Base32 address requires lookup password" -msgstr "" +msgstr "O endereço Base32 requer senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1509 msgid "Base32 address requires encryption key" -msgstr "" +msgstr "O endereço Base32 requer chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1511 msgid "Base32 address requires encryption key and lookup password" -msgstr "" +msgstr "O endereço Base32 requer chave de criptografia e senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1513 msgid "Base32 address decryption failure, check encryption key" -msgstr "" +msgstr "Falha de descriptografia de endereço Base32, verifique a chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1524 msgid "Generate" @@ -595,27 +596,27 @@ msgid "" "You must either enter a PSK encryption key provided by the server operator, " "or generate a DH encryption key and send that to the server operator." -msgstr "" +msgstr "Você deve inserir uma chave de criptografia PSK fornecida pelo operador do servidor ou gerar uma chave de criptografia DH e enviá-la ao operador do servidor." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1527 msgid "Ask the server operator for help." -msgstr "" +msgstr "Peça ajuda ao operador do servidor." #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1530 msgid "Enter PSK encryption key" -msgstr "" +msgstr "Digite a chave de criptografia PSK" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1533 msgid "Generate new DH encryption key" -msgstr "" +msgstr "Gerar nova chave de criptografia DH" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1541 msgid "Lookup password" -msgstr "" +msgstr "Senha de pesquisa" #: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1542 msgid "You must enter the password provided by the server operator." -msgstr "" +msgstr "Você deve digitar a senha fornecida pelo operador do servidor." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:196 #, java-format @@ -628,20 +629,20 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:235 msgid "Missing lookup password" -msgstr "" +msgstr "Senha de pesquisa ausente" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:249 msgid "Missing private key" -msgstr "" +msgstr "Chave privada ausente" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:254 msgid "Invalid private key" -msgstr "" +msgstr "Chave privada inválida" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:287 #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:306 msgid "Your new encryption key" -msgstr "" +msgstr "Sua nova chave de criptografia" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:301 msgid "Address book" @@ -649,15 +650,15 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:311 msgid "Copy the key and send it to the server operator." -msgstr "" +msgstr "Copie a chave e envie-a para o operador do servidor." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:313 msgid "After you are granted permission, you may proceed to the website." -msgstr "" +msgstr "Depois de receber permissão, você pode prosseguir para o site." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:334 msgid "Go back and fix the error" -msgstr "" +msgstr "Volte e corrija o erro" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:345 msgid "router" @@ -665,7 +666,7 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:347 msgid "local" -msgstr "" +msgstr "local" #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:349 msgid "private" @@ -685,12 +686,12 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:376 #, java-format msgid "Saved {0} to the {1} address book, redirecting now." -msgstr "" +msgstr "Salvou {0} para o {1} catálogo de endereços, redirecionando agora." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:377 #, java-format msgid "Failed to save {0} to the {1} address book, redirecting now." -msgstr "" +msgstr "Falha ao salvar {0} para o {1} catálogo de endereços, redirecionando agora." #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:379 #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:411 @@ -700,4 +701,4 @@ #: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:409 #, java-format msgid "Saved the authentication for {0}, redirecting now." -msgstr "" +msgstr "Salvo a autenticação para {0}, redirecionando agora." diff -Nru i2p-2.4.0/apps/i2ptunnel/resources/proxy/dnfh-header.ht i2p-2.5.0/apps/i2ptunnel/resources/proxy/dnfh-header.ht --- i2p-2.4.0/apps/i2ptunnel/resources/proxy/dnfh-header.ht 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/i2ptunnel/resources/proxy/dnfh-header.ht 2024-04-10 02:29:57.000000000 +0000 @@ -1,4 +1,4 @@ -HTTP/1.1 500 Domain Not Found +HTTP/1.1 502 Domain Not Found Content-Type: text/html; charset=UTF-8 Cache-Control: no-cache Connection: close diff -Nru i2p-2.4.0/apps/jetty/java/src/net/i2p/servlet/filters/XSSFilter.java i2p-2.5.0/apps/jetty/java/src/net/i2p/servlet/filters/XSSFilter.java --- i2p-2.4.0/apps/jetty/java/src/net/i2p/servlet/filters/XSSFilter.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jetty/java/src/net/i2p/servlet/filters/XSSFilter.java 2024-04-10 02:29:57.000000000 +0000 @@ -11,6 +11,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import net.i2p.I2PAppContext; + /** * @since 0.9.14 */ @@ -33,8 +35,9 @@ // We need to send the error quickly, if we just throw a ServletException, // the data keeps coming and the connection gets reset. // This way we at least get the error to the browser. + I2PAppContext.getGlobalContext().logManager().getLog(XSSFilter.class).error("XSS Filter Error", ise); try { - ((HttpServletResponse)response).sendError(413, ise.getMessage()); + ((HttpServletResponse)response).sendError(413, "XSS Filter " + ise.getMessage()); } catch (IllegalStateException ise2) { // Committed, probably wasn't a multipart form error after all } diff -Nru i2p-2.4.0/apps/jrobin/java/src/com/tomgibara/crinch/hashing/PerfectStringHash.java i2p-2.5.0/apps/jrobin/java/src/com/tomgibara/crinch/hashing/PerfectStringHash.java --- i2p-2.4.0/apps/jrobin/java/src/com/tomgibara/crinch/hashing/PerfectStringHash.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/com/tomgibara/crinch/hashing/PerfectStringHash.java 2024-04-10 02:29:57.000000000 +0000 @@ -184,7 +184,7 @@ * such that hash(values[i]) == i. */ - public PerfectStringHash(final String values[]) { + public PerfectStringHash(final String[] values) { final int length = values.length; if (length == 0) throw new IllegalArgumentException("No values supplied"); @@ -242,7 +242,7 @@ final int[] pivots = new int[offset * 2]; for (int i = 0; i < length;) { final int runLength = runLengths[i]; - if (runLength > 1) generatePivots(values, i, runLength, pivots, (int) offsets[i << 1]); + if (runLength > 1) generatePivots(values, i, runLength, pivots, offsets[i << 1]); i += runLength; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/ArcDef.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/ArcDef.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/ArcDef.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/ArcDef.java 2024-04-10 02:29:57.000000000 +0000 @@ -14,7 +14,6 @@ * * For the complete explanation of all archive definition parameters, see RRDTool's * rrdcreate man page - * * * @author Sasa Markovic */ diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/ArcState.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/ArcState.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/ArcState.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/ArcState.java 2024-04-10 02:29:57.000000000 +0000 @@ -9,10 +9,10 @@ * @author Sasa Markovic */ public class ArcState implements RrdUpdater { - private Archive parentArc; + private final Archive parentArc; - private RrdDouble accumValue; - private RrdLong nanSteps; + private final RrdDouble accumValue; + private final RrdLong nanSteps; ArcState(Archive parentArc, boolean shouldInitialize) throws IOException { this.parentArc = parentArc; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Archive.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Archive.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Archive.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Archive.java 2024-04-10 02:29:57.000000000 +0000 @@ -143,7 +143,7 @@ } } // update robin in bulk - int bulkUpdateCount = (int) Math.min(numUpdates / steps.get(), (long) rows.get()); + int bulkUpdateCount = (int) Math.min(numUpdates / steps.get(), rows.get()); robin.bulkStore(value, bulkUpdateCount); // update remaining steps long remainingUpdates = numUpdates % steps.get(); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/DataHolder.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/DataHolder.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/DataHolder.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/DataHolder.java 2024-04-10 02:29:57.000000000 +0000 @@ -17,7 +17,7 @@ * Constant that defines the default {@link RrdDbPool} usage policy. Defaults to false * (i.e. the pool will not be used to fetch data from RRD files) */ - public static final boolean DEFAULT_POOL_USAGE_POLICY = false; + boolean DEFAULT_POOL_USAGE_POLICY = false; /** * Returns boolean value representing {@link org.rrd4j.core.RrdDbPool RrdDbPool} usage policy. @@ -164,7 +164,7 @@ /** * Creates a datasource that performs a variable calculation on an * another named datasource to yield a single combined timestamp/value. - * + *

* Requires that the other datasource has already been defined; otherwise, it'll * end up with no data * diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Datasource.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Datasource.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Datasource.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Datasource.java 2024-04-10 02:29:57.000000000 +0000 @@ -28,9 +28,9 @@ private final RrdDouble minValue, maxValue; // state variables - private RrdDouble lastValue; - private RrdLong nanSeconds; - private RrdDouble accumValue; + private final RrdDouble lastValue; + private final RrdLong nanSeconds; + private final RrdDouble accumValue; Datasource(RrdDb parentDb, DsDef dsDef) throws IOException { boolean shouldInitialize = dsDef != null; @@ -476,4 +476,3 @@ return parentDb.getRrdAllocator(); } } - diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/FetchData.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/FetchData.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/FetchData.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/FetchData.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,9 +1,10 @@ package org.rrd4j.core; import java.io.ByteArrayOutputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import org.rrd4j.ConsolFun; import org.rrd4j.data.Aggregates; @@ -43,14 +44,14 @@ // anything funny will do private static final String RPN_SOURCE_NAME = "WHERE THE SPEECHLES UNITE IN A SILENT ACCORD"; - private FetchRequest request; + private final FetchRequest request; private String[] dsNames; private long[] timestamps; private double[][] values; - private Archive matchingArchive; - private long arcStep; - private long arcEndTime; + private final Archive matchingArchive; + private final long arcStep; + private final long arcEndTime; FetchData(Archive matchingArchive, FetchRequest request) throws IOException { this.matchingArchive = matchingArchive; @@ -279,7 +280,7 @@ } private static String padWithBlanks(String input, int width) { - StringBuilder buff = new StringBuilder(""); + StringBuilder buff = new StringBuilder(); int diff = width - input.length(); while (diff-- > 0) { buff.append(' '); @@ -350,11 +351,10 @@ * @param rpnExpression RRDTool-like RPN expression * @return Object containing all aggregated values * @throws java.lang.IllegalArgumentException Thrown if invalid RPN expression is supplied - * @throws java.io.IOException if any. * @deprecated This method is deprecated. Uses instance of {@link org.rrd4j.data.Variable}, used with {@link org.rrd4j.data.DataProcessor#addDatasource(String, String, Variable)} */ @Deprecated - public Aggregates getRpnAggregates(String rpnExpression) throws IOException { + public Aggregates getRpnAggregates(String rpnExpression) { DataProcessor dataProcessor = createDataProcessor(rpnExpression); return dataProcessor.getAggregates(RPN_SOURCE_NAME); } @@ -402,9 +402,8 @@ * Dumps fetch data to output stream in XML format. A flush is issued at the end of the xml generation. * * @param outputStream Output stream to dump fetch data to - * @throws java.io.IOException Thrown in case of I/O error */ - public void exportXml(OutputStream outputStream) throws IOException { + public void exportXml(OutputStream outputStream) { //No auto flush for XmlWriter, it will be flushed once, when export is finished try (XmlWriter writer = new XmlWriter(outputStream, false)) { writer.startTag("fetch_data"); @@ -447,7 +446,7 @@ * @throws java.io.IOException Thrown in case of I/O error */ public void exportXml(String filepath) throws IOException { - try(OutputStream outputStream = new FileOutputStream(filepath)) { + try (OutputStream outputStream = Files.newOutputStream(Paths.get(filepath))) { exportXml(outputStream); } } @@ -456,9 +455,8 @@ * Dumps fetch data in XML format. * * @return String containing XML formatted fetch data - * @throws java.io.IOException Thrown in case of I/O error */ - public String exportXml() throws IOException { + public String exportXml() { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); exportXml(outputStream); return outputStream.toString(); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/FetchRequest.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/FetchRequest.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/FetchRequest.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/FetchRequest.java 2024-04-10 02:29:57.000000000 +0000 @@ -17,11 +17,11 @@ * @author Sasa Markovic */ public class FetchRequest { - private RrdDb parentDb; - private ConsolFun consolFun; - private long fetchStart; - private long fetchEnd; - private long resolution; + private final RrdDb parentDb; + private final ConsolFun consolFun; + private final long fetchStart; + private final long fetchEnd; + private final long resolution; private String[] filter; FetchRequest(RrdDb parentDb, ConsolFun consolFun, long fetchStart, long fetchEnd, long resolution) { @@ -74,7 +74,7 @@ * @param filter Set of datasource names to fetch data for. */ public void setFilter(Set filter) { - this.filter = filter.toArray(new String[filter.size()]); + this.filter = filter.toArray(new String[0]); } /** diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Header.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Header.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Header.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Header.java 2024-04-10 02:29:57.000000000 +0000 @@ -23,18 +23,19 @@ static final String RRDTOOL_VERSION3 = "0003"; private static final String[] VERSIONS = {"version 0.1", "version 0.2"}; - private RrdDb parentDb; + private final RrdDb parentDb; private int version = -1; - private RrdString

signature; - private RrdLong
step; - private RrdInt
dsCount, arcCount; - private RrdLong
lastUpdateTime; + private final RrdString
signature; + private final RrdLong
step; + private final RrdInt
dsCount; + private final RrdInt
arcCount; + private final RrdLong
lastUpdateTime; Header(RrdDb parentDb, RrdDef rrdDef) throws IOException { this.parentDb = parentDb; - String initSignature = null; + String initSignature; if(rrdDef != null) { version = rrdDef.getVersion(); initSignature = SIGNATURE + ", " + VERSIONS[version - 1]; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RobinArray.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RobinArray.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RobinArray.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RobinArray.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,7 @@ package org.rrd4j.core; import java.io.IOException; +import java.util.Arrays; /** * Class to represent archive values for a single datasource. Robin class is the heart of @@ -18,7 +19,7 @@ private final Archive parentArc; private final RrdInt pointer; private final RrdDoubleArray values; - private int rows; + private final int rows; RobinArray(Archive parentArc, int rows, boolean shouldInitialize) throws IOException { this.parentArc = parentArc; @@ -104,9 +105,7 @@ /** {@inheritDoc} */ public void setValues(double newValue) throws IOException { double[] values = new double[rows]; - for (int i = 0; i < values.length; i++) { - values[i] = newValue; - } + Arrays.fill(values, newValue); update(values); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RobinMatrix.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RobinMatrix.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RobinMatrix.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RobinMatrix.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,7 @@ package org.rrd4j.core; import java.io.IOException; +import java.util.Arrays; /** * Class to represent archive values for a single datasource. Robin class is the heart of @@ -18,10 +19,10 @@ private final Archive parentArc; private final RrdInt pointer; private final RrdDoubleMatrix values; - private int rows; - private int column; + private final int rows; + private final int column; - RobinMatrix(Archive parentArc, RrdDoubleMatrix values, RrdInt pointer, int column) throws IOException { + RobinMatrix(Archive parentArc, RrdDoubleMatrix values, RrdInt pointer, int column) { this.parentArc = parentArc; this.pointer = pointer; this.values = values; @@ -101,9 +102,7 @@ */ public void setValues(double newValue) throws IOException { double[] values = new double[rows]; - for (int i = 0; i < values.length; i++) { - values[i] = newValue; - } + Arrays.fill(values, newValue); update(values); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdAllocator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdAllocator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdAllocator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdAllocator.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,7 +1,5 @@ package org.rrd4j.core; -import java.io.IOException; - /** * An internal usage class. * @@ -14,7 +12,7 @@ super(); } - long allocate(long byteCount) throws IOException { + long allocate(long byteCount) { long pointer = allocationPointer; allocationPointer += byteCount; return pointer; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackend.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackend.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackend.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackend.java 2024-04-10 02:29:57.000000000 +0000 @@ -239,8 +239,8 @@ int count = values.length; byte[] image = new byte[8 * count]; int k = 0; - for (int i = 0; i < count; i++) { - byte[] b = getDoubleBytes(values[i]); + for (double value : values) { + byte[] b = getDoubleBytes(value); image[k++] = b[0]; image[k++] = b[1]; image[k++] = b[2]; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendAnnotation.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendAnnotation.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendAnnotation.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendAnnotation.java 2024-04-10 02:29:57.000000000 +0000 @@ -18,7 +18,7 @@ @Retention(RUNTIME) @Target(TYPE) public @interface RrdBackendAnnotation { - public static boolean DEFAULT_CACHING_ALLOWED = true; + boolean DEFAULT_CACHING_ALLOWED = true; String name(); boolean cachingAllowed() default DEFAULT_CACHING_ALLOWED; String scheme() default ""; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendFactory.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendFactory.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendFactory.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdBackendFactory.java 2024-04-10 02:29:57.000000000 +0000 @@ -27,7 +27,7 @@ * * Factory classes are used to create concrete {@link org.rrd4j.core.RrdBackend} implementations. * Each factory creates unlimited number of specific backend objects. - * + *

* Rrd4j supports six different backend types (backend factories) out of the box: *

    *
  • {@link org.rrd4j.core.RrdRandomAccessFileBackend}: objects of this class are created from the @@ -88,7 +88,7 @@ factories.put(safeFactory.name, safeFactory); defaultFactory = factories.get(DEFAULTFACTORY); } - private static RrdBackendFactory defaultFactory; + private static final RrdBackendFactory defaultFactory; } /** @@ -541,10 +541,9 @@ * Determines if the header should be validated. * * @param path Storage path - * @throws java.io.IOException if header validation fails * @return a boolean. */ - protected boolean shouldValidateHeader(String path) throws IOException { + protected boolean shouldValidateHeader(String path) { return validateHeader; } @@ -552,10 +551,9 @@ * Determines if the header should be validated. * * @param uri Storage URI - * @throws java.io.IOException if header validation fails * @return a boolean. */ - protected boolean shouldValidateHeader(URI uri) throws IOException { + protected boolean shouldValidateHeader(URI uri) { return shouldValidateHeader(getPath(uri)); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdByteArrayBackend.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdByteArrayBackend.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdByteArrayBackend.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdByteArrayBackend.java 2024-04-10 02:29:57.000000000 +0000 @@ -64,10 +64,9 @@ * {@inheritDoc} * *

    It will reserves a memory section as a RRD storage.

    - * - * @throws java.lang.IllegalArgumentException if length is bigger that the possible length. + * */ - protected void setLength(long length) throws IOException { + protected void setLength(long length) { if (length < 0 || length > Integer.MAX_VALUE) { throw new IllegalArgumentException("Illegal length: " + length); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDb.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDb.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDb.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDb.java 2024-04-10 02:29:57.000000000 +0000 @@ -131,7 +131,7 @@ try (DataImporter rrdImporter = resoleImporter(externalPath, importer)) { if (usePool) { try (RrdDb db = resolvePool(pool).requestRrdDb(rrdUri, factory, importer)) { - }; + } } else { try (RrdDb db = new RrdDb(path, rrdUri, null, rrdImporter, factory, null)) { } @@ -210,7 +210,7 @@ } /** - * Internal method used to memorized the pool, without generating a loop + * Internal method used to memorize the pool, without generating a loop * @param pool * @return */ @@ -1220,7 +1220,7 @@ *

    * Use original.xml file to create the corresponding RRDTool file * (from your command line): - * + *

    * rrdtool restore copy.rrd original.xml * * @param filename Path to XML file which will be created. diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDbPool.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDbPool.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDbPool.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDbPool.java 2024-04-10 02:29:57.000000000 +0000 @@ -60,14 +60,14 @@ final Lock lock; final boolean placeholder; final URI uri; - RrdEntry(URI canonicalPath) throws InterruptedException { + RrdEntry(URI canonicalPath) { placeholder = false; uri = canonicalPath; inuse = new ReentrantReadWriteLock(); lock = inuse.writeLock(); waitempty = new CountDownLatch(1); } - RrdEntry(RrdEntry parent) throws InterruptedException { + RrdEntry(RrdEntry parent) { assert ! parent.placeholder; placeholder = true; uri = parent.uri; @@ -243,7 +243,7 @@ } private enum ACTION { - SWAP, DROP; + SWAP, DROP } private void passNext(ACTION a, RrdEntry e) { @@ -297,7 +297,7 @@ return; } URI dburi = rrdDb.getCanonicalUri(); - RrdEntry ref = null; + RrdEntry ref; try { ref = getEntry(dburi, false); } catch (InterruptedException e) { @@ -375,10 +375,9 @@ * Wait for a empty reference with no usage * @param uri * @return an reference with no usage - * @throws IOException * @throws InterruptedException */ - private RrdEntry waitEmpty(URI uri) throws IOException, InterruptedException { + private RrdEntry waitEmpty(URI uri) throws InterruptedException { RrdEntry ref = getEntry(uri, true); try { while (ref.count != 0) { @@ -401,16 +400,14 @@ * @param uri * @return an reference with no usage * @throws InterruptedException - * @throws IOException */ - private RrdEntry requestEmpty(URI uri) throws InterruptedException, IOException { - RrdEntry ref = waitEmpty(uri); - return ref; + private RrdEntry requestEmpty(URI uri) throws InterruptedException { + return waitEmpty(uri); } RrdDb requestRrdDb(URI uri, RrdBackendFactory factory) throws IOException { uri = factory.getCanonicalUri(uri); - RrdEntry ref = null; + RrdEntry ref; try { ref = getEntry(uri, true); @@ -625,10 +622,9 @@ * * @param rrdDb RrdDb reference for which informations is needed. * @return the number of request for this RRD. - * @throws java.io.IOException if any * @throws java.lang.IllegalStateException if the thread was interrupted */ - public int getOpenCount(RrdDb rrdDb) throws IOException { + public int getOpenCount(RrdDb rrdDb) { return getCanonicalUriUsage(rrdDb.getCanonicalUri()); } @@ -638,10 +634,9 @@ * * @param path RRD's path for which informations is needed. * @return the number of request for this RRD. - * @throws java.io.IOException if any * @throws java.lang.IllegalStateException if the thread was interrupted */ - public int getOpenCount(String path) throws IOException { + public int getOpenCount(String path) { return getCanonicalUriUsage(defaultFactory.getCanonicalUri(defaultFactory.getUri(path))); } @@ -650,10 +645,9 @@ * * @param uri RRD's URI for which informations is needed. * @return the number of request for this RRD. - * @throws java.io.IOException if any * @throws java.lang.IllegalStateException if the thread was interrupted */ - public int getOpenCount(URI uri) throws IOException { + public int getOpenCount(URI uri) { return getCanonicalUriUsage(checkFactory(uri).getCanonicalUri(uri)); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDef.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDef.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDef.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDef.java 2024-04-10 02:29:57.000000000 +0000 @@ -5,10 +5,10 @@ import java.io.IOException; import java.io.OutputStream; import java.net.URI; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; -import java.util.Iterator; import java.util.List; import java.util.StringTokenizer; @@ -59,8 +59,8 @@ private long step = DEFAULT_STEP; private int version = DEFAULTVERSION; - private List dsDefs = new ArrayList<>(); - private List arcDefs = new ArrayList<>(); + private final List dsDefs = new ArrayList<>(); + private final List arcDefs = new ArrayList<>(); /** *

    Creates new RRD definition object with the given path. @@ -189,12 +189,19 @@ /** * Returns path for the new RRD. It's extracted from the URI. If it's an opaque URI, it return the scheme specific part. + *
    + * It's not a reliable way to resolve an file path. Instead, one should use Paths.get(def.getUri()) + * when the URI scheme is file. * * @return path to the new RRD which should be created */ public String getPath() { if (uri.isOpaque()) { return uri.getSchemeSpecificPart(); + } else if ("file".equals(uri.getScheme())) { + // Windows path from URI returns strange results. + // Ensure that's a compliant path + return Paths.get(uri).toString(); } else { return uri.getPath(); } @@ -516,7 +523,7 @@ * @return Array of data source definition objects */ public DsDef[] getDsDefs() { - return dsDefs.toArray(new DsDef[dsDefs.size()]); + return dsDefs.toArray(new DsDef[0]); } /** @@ -584,13 +591,7 @@ } void saveSingleDatasource(String dsName) { - Iterator it = dsDefs.iterator(); - while (it.hasNext()) { - DsDef dsDef = it.next(); - if (!dsDef.getDsName().equals(dsName)) { - it.remove(); - } - } + dsDefs.removeIf(dsDef -> !dsDef.getDsName().equals(dsName)); } void removeArchive(ConsolFun consolFun, int steps) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDefTemplate.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDefTemplate.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDefTemplate.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDefTemplate.java 2024-04-10 02:29:57.000000000 +0000 @@ -60,6 +60,7 @@ *

  • There is a strong relation between the XML template syntax and the syntax of * {@link org.rrd4j.core.RrdDef} class methods. If you are not sure what some XML tag means, check javadoc * for the corresponding class. + *
  • the path to the rrd can be specified either as a file path using path element or as an uri using a url tag
  • *
  • starting timestamp can be supplied either as a long integer * (like: 1000243567) or as an ISO formatted string (like: 2004-02-21 12:25:45) *
  • whitespaces are not harmful diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDouble.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDouble.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDouble.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDouble.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,11 +6,11 @@ private double cache; private boolean cached = false; - RrdDouble(RrdUpdater updater, boolean isConstant) throws IOException { + RrdDouble(RrdUpdater updater, boolean isConstant) { super(updater, RrdDouble.RRD_DOUBLE, isConstant); } - RrdDouble(RrdUpdater updater) throws IOException { + RrdDouble(RrdUpdater updater) { super(updater, RrdDouble.RRD_DOUBLE, false); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDoubleArray.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDoubleArray.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdDoubleArray.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdDoubleArray.java 2024-04-10 02:29:57.000000000 +0000 @@ -3,9 +3,9 @@ import java.io.IOException; class RrdDoubleArray> extends RrdPrimitive { - private int length; + private final int length; - RrdDoubleArray(RrdUpdater updater, int length) throws IOException { + RrdDoubleArray(RrdUpdater updater, int length) { super(updater, RrdPrimitive.RRD_DOUBLE, length, false); this.length = length; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdEnum.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdEnum.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdEnum.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdEnum.java 2024-04-10 02:29:57.000000000 +0000 @@ -7,12 +7,12 @@ private E cache; private final Class clazz; - RrdEnum(RrdUpdater updater, boolean isConstant, Class clazz) throws IOException { + RrdEnum(RrdUpdater updater, boolean isConstant, Class clazz) { super(updater, RrdPrimitive.RRD_STRING, isConstant); this.clazz = clazz; } - RrdEnum(RrdUpdater updater, Class clazz) throws IOException { + RrdEnum(RrdUpdater updater, Class clazz) { this(updater, false, clazz); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdInt.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdInt.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdInt.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdInt.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,11 +6,11 @@ private int cache; private boolean cached = false; - RrdInt(RrdUpdater updater, boolean isConstant) throws IOException { + RrdInt(RrdUpdater updater, boolean isConstant) { super(updater, RrdPrimitive.RRD_INT, isConstant); } - RrdInt(RrdUpdater updater) throws IOException { + RrdInt(RrdUpdater updater) { this(updater, false); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdLong.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdLong.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdLong.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdLong.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,11 +6,11 @@ private long cache; private boolean cached = false; - RrdLong(RrdUpdater updater, boolean isConstant) throws IOException { + RrdLong(RrdUpdater updater, boolean isConstant) { super(updater, RrdPrimitive.RRD_LONG, isConstant); } - RrdLong(RrdUpdater updater) throws IOException { + RrdLong(RrdUpdater updater) { this(updater, false); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackend.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackend.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackend.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackend.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core; -import java.io.IOException; import java.nio.ByteBuffer; import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; @@ -21,11 +20,11 @@ protected RrdMemoryBackend(String path, AtomicReference refbb) { super(path); this.refbb = refbb; - Optional.ofNullable(refbb).map(r -> r.get()).ifPresent(this::setByteBuffer); + Optional.ofNullable(refbb).map(AtomicReference::get).ifPresent(this::setByteBuffer); } @Override - protected void setLength(long length) throws IOException { + protected void setLength(long length) { if (length < 0 || length > Integer.MAX_VALUE) { throw new IllegalArgumentException("Illegal length: " + length); } @@ -34,7 +33,7 @@ } @Override - public long getLength() throws IOException { + public long getLength() { return Optional.ofNullable(refbb.get()).map(ByteBuffer::capacity).orElse(0); } @@ -42,10 +41,9 @@ * This method is required by the base class definition, but it does not * releases any memory resources at all. * - * @throws java.io.IOException if any. */ @Override - protected void close() throws IOException { + protected void close() { // Don't release ressources, as backend are cached by the factory and reused } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackendFactory.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackendFactory.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackendFactory.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdMemoryBackendFactory.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core; -import java.io.IOException; import java.net.URI; import java.nio.ByteBuffer; import java.util.Map; @@ -28,8 +27,8 @@ * * Creates RrdMemoryBackend object. */ - protected RrdBackend open(String id, boolean readOnly) throws IOException { - AtomicReference refbb = backends.computeIfAbsent(id, i -> new AtomicReference()); + protected RrdBackend open(String id, boolean readOnly) { + AtomicReference refbb = backends.computeIfAbsent(id, i -> new AtomicReference<>()); return new RrdMemoryBackend(id, refbb); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackend.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackend.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackend.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackend.java 2024-04-10 02:29:57.000000000 +0000 @@ -29,7 +29,7 @@ private static final Object unsafe; static { // Temporary variable, because destinations variables are final - // And it interfere with exceptions + // And it interferes with exceptions Method cleanerMethodTemp; Method cleanMethodTemp; Method invokeCleanerTemp; @@ -99,11 +99,7 @@ } try { if (!readOnly && threadPool != null) { - Runnable syncRunnable = new Runnable() { - public void run() { - sync(); - } - }; + Runnable syncRunnable = this::sync; syncRunnableHandle = threadPool.scheduleWithFixedDelay(syncRunnable, syncPeriod, syncPeriod, TimeUnit.SECONDS); } } catch (RuntimeException rte) { @@ -193,7 +189,7 @@ } @Override - public String getCanonicalPath() throws IOException { + public String getCanonicalPath() { return Paths.get(getPath()).toAbsolutePath().normalize().toString(); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackendFactory.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackendFactory.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackendFactory.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdNioBackendFactory.java 2024-04-10 02:29:57.000000000 +0000 @@ -171,7 +171,7 @@ } @Override - public void close() throws IOException { + public void close() { if (syncThreadPool != null) { syncThreadPool.shutdown(); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdPrimitive.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdPrimitive.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdPrimitive.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdPrimitive.java 2024-04-10 02:29:57.000000000 +0000 @@ -7,16 +7,16 @@ static final int RRD_INT = 0, RRD_LONG = 1, RRD_DOUBLE = 2, RRD_STRING = 3; static final int[] RRD_PRIM_SIZES = {4, 8, 8, 2 * STRING_LENGTH}; - private RrdBackend backend; - private int byteCount; + private final RrdBackend backend; + private final int byteCount; private final long pointer; private final boolean cachingAllowed; - RrdPrimitive(RrdUpdater updater, int type, boolean isConstant) throws IOException { + RrdPrimitive(RrdUpdater updater, int type, boolean isConstant) { this(updater, type, 1, isConstant); } - RrdPrimitive(RrdUpdater updater, int type, int count, boolean isConstant) throws IOException { + RrdPrimitive(RrdUpdater updater, int type, int count, boolean isConstant) { this.backend = updater.getRrdBackend(); this.byteCount = RRD_PRIM_SIZES[type] * count; this.pointer = updater.getRrdAllocator().allocate(byteCount); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdRandomAccessFileBackend.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdRandomAccessFileBackend.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdRandomAccessFileBackend.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdRandomAccessFileBackend.java 2024-04-10 02:29:57.000000000 +0000 @@ -63,7 +63,7 @@ } @Override - public String getCanonicalPath() throws IOException { + public String getCanonicalPath() { return Paths.get(getPath()).toAbsolutePath().normalize().toString(); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdString.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdString.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdString.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdString.java 2024-04-10 02:29:57.000000000 +0000 @@ -5,11 +5,11 @@ class RrdString> extends RrdPrimitive { private String cache; - RrdString(RrdUpdater updater, boolean isConstant) throws IOException { + RrdString(RrdUpdater updater, boolean isConstant) { super(updater, RrdPrimitive.RRD_STRING, isConstant); } - RrdString(RrdUpdater updater) throws IOException { + RrdString(RrdUpdater updater) { this(updater, false); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolReader.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolReader.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolReader.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolReader.java 2024-04-10 02:29:57.000000000 +0000 @@ -29,7 +29,7 @@ return rrd.getHeader().getDSCount(); } - public int getArcCount() throws IOException { + public int getArcCount() { return rrd.getNumArchives(); } @@ -38,7 +38,7 @@ } @Override - public DsType getDsType(int dsIndex) throws IOException { + public DsType getDsType(int dsIndex) { return rrd.getDataSource(dsIndex).getType().getDsType(); } @@ -79,19 +79,19 @@ return rrd.getArchive(arcIndex).getPdpCount(); } - public int getRows(int arcIndex) throws IOException { + public int getRows(int arcIndex) { return rrd.getArchive(arcIndex).getRowCount(); } - public double getStateAccumValue(int arcIndex, int dsIndex) throws IOException { + public double getStateAccumValue(int arcIndex, int dsIndex) { return rrd.getArchive(arcIndex).getCDPStatusBlock(dsIndex).getValue(); } - public int getStateNanSteps(int arcIndex, int dsIndex) throws IOException { + public int getStateNanSteps(int arcIndex, int dsIndex) { return rrd.getArchive(arcIndex).getCDPStatusBlock(dsIndex).getUnknownDatapoints(); } - public double[] getValues(int arcIndex, int dsIndex) throws IOException { + public double[] getValues(int arcIndex, int dsIndex) { return rrd.getArchive(arcIndex).getValues()[dsIndex]; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolkit.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolkit.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolkit.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/RrdToolkit.java 2024-04-10 02:29:57.000000000 +0000 @@ -540,7 +540,7 @@ } List fileList = new LinkedList<>(); traverseDirectory(new File(directory), extension, resursive, fileList); - String[] result = fileList.toArray(new String[fileList.size()]); + String[] result = fileList.toArray(new String[0]); Arrays.sort(result); return result; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Util.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Util.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/Util.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/Util.java 2024-04-10 02:29:57.000000000 +0000 @@ -54,15 +54,12 @@ // directory under $USER_HOME used for demo graphs storing static final String RRD4J_DIR = "rrd4j-demo"; - static final ThreadLocal df = new ThreadLocal() { - @Override - protected NumberFormat initialValue() { - DecimalFormat ldf = (DecimalFormat) NumberFormat.getNumberInstance(Locale.ENGLISH); - ldf.applyPattern(PATTERN); - ldf.setPositivePrefix("+"); - return ldf; - } - }; + static final ThreadLocal df = ThreadLocal.withInitial(() -> { + DecimalFormat ldf = (DecimalFormat) NumberFormat.getNumberInstance(Locale.ENGLISH); + ldf.applyPattern(PATTERN); + ldf.setPositivePrefix("+"); + return ldf; + }); private static final Pattern SPRINTF_PATTERN = Pattern.compile("([^%]|^)%([^a-zA-Z%]*)l(f|g|e)"); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlReader.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlReader.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlReader.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlReader.java 2024-04-10 02:29:57.000000000 +0000 @@ -11,8 +11,9 @@ class XmlReader extends DataImporter { - private Element root; - private Node[] dsNodes, arcNodes; + private final Element root; + private final Node[] dsNodes; + private final Node[] arcNodes; XmlReader(String xmlFilePath) throws IOException { root = Util.Xml.getRootElement(new File(xmlFilePath)); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlTemplate.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlTemplate.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlTemplate.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlTemplate.java 2024-04-10 02:29:57.000000000 +0000 @@ -24,8 +24,8 @@ private static final Pattern PATTERN = Pattern.compile(PATTERN_STRING); protected Element root; - private HashMap valueMap = new HashMap<>(); - private HashSet validatedNodes = new HashSet<>(); + private final HashMap valueMap = new HashMap<>(); + private final HashSet validatedNodes = new HashSet<>(); /** *

    Constructor for XmlTemplate.

    @@ -85,7 +85,7 @@ * @param value value to be set in the XML template */ public void setVariable(String name, int value) { - valueMap.put(name, Integer.valueOf(value)); + valueMap.put(name, value); } /** @@ -97,7 +97,7 @@ * @param value value to be set in the XML template */ public void setVariable(String name, long value) { - valueMap.put(name, Long.valueOf(value)); + valueMap.put(name, value); } /** @@ -109,7 +109,7 @@ * @param value value to be set in the XML template */ public void setVariable(String name, double value) { - valueMap.put(name, Double.valueOf(value)); + valueMap.put(name, value); } /** @@ -185,7 +185,7 @@ /** * Returns the list of variables that should be set in this template. * - * @return List of variable names as an array of strings. + * @return Array of variable names as an array of strings. */ public String[] getVariables() { ArrayList list = new ArrayList<>(); @@ -198,7 +198,7 @@ } } - return list.toArray(new String[list.size()]); + return list.toArray(new String[0]); } /** @@ -301,7 +301,7 @@ String var = matcher.group(1); if (valueMap.containsKey(var)) { // mapping found - result.append(templateValue.substring(lastMatchEnd, matcher.start())); + result.append(templateValue, lastMatchEnd, matcher.start()); result.append(valueMap.get(var).toString()); lastMatchEnd = matcher.end(); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlWriter.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlWriter.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/XmlWriter.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/XmlWriter.java 2024-04-10 02:29:57.000000000 +0000 @@ -24,7 +24,7 @@ } private final PrintWriter writer; - private final StringBuilder indent = new StringBuilder(""); + private final StringBuilder indent = new StringBuilder(); private final Deque openTags = new LinkedList<>(); /** diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Archive.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Archive.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Archive.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Archive.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core.jrrd; -import java.io.IOException; import java.io.PrintStream; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; @@ -21,7 +20,7 @@ */ public class Archive { - private static enum rra_par_en {RRA_cdp_xff_val, RRA_hw_alpha}; + private enum rra_par_en {RRA_cdp_xff_val, RRA_hw_alpha} final RRDatabase db; /** Header offset within file in bytes */ @@ -47,7 +46,7 @@ /** Cached content */ private double[][] values; - Archive(RRDatabase db) throws IOException { + Archive(RRDatabase db) { this.db = db; @@ -74,9 +73,9 @@ return type; } - void loadCDPStatusBlocks(RRDFile file, int numBlocks) throws IOException { + void loadCDPStatusBlocks(RRDFile file, int numBlocks) { - cdpStatusBlocks = new ArrayList(); + cdpStatusBlocks = new ArrayList<>(); for (int i = 0; i < numBlocks; i++) { cdpStatusBlocks.add(new CDPStatusBlock(file)); @@ -103,11 +102,11 @@ return cdpStatusBlocks.iterator(); } - void loadCurrentRow(RRDFile file) throws IOException { + void loadCurrentRow(RRDFile file) { currentRow = file.readLong(); } - void loadData(RRDFile file, int dsCount) throws IOException { + void loadData(RRDFile file, int dsCount) { dataOffset = file.getFilePointer(); @@ -115,8 +114,7 @@ file.skipBytes(Constants.SIZE_OF_DOUBLE * rowCount * dsCount); } - void loadData(DataChunk chunk) - throws IOException { + void loadData(DataChunk chunk) { long rowIndexPointer; @@ -186,18 +184,14 @@ int cdpIndex = 0; - for (Iterator i = cdpStatusBlocks.iterator(); i.hasNext();) { - CDPStatusBlock cdp = i.next(); - + for (CDPStatusBlock cdp : cdpStatusBlocks) { s.print(sb); s.print(cdpIndex); s.print("].value = "); double value = cdp.value; - s.println(Double.isNaN(value) - ? "NaN" - : numberFormat.format(value)); + s.println(Double.isNaN(value) ? "NaN" : numberFormat.format(value)); s.print(sb); s.print(cdpIndex++); s.print("].unknown_datapoints = "); @@ -206,97 +200,89 @@ } void toXml(PrintStream s) { + s.println("\t"); + s.print("\t\t "); + s.print(type); + s.println(" "); + s.print("\t\t "); + s.print(pdpCount); + s.print(" "); + s.print("\t\t "); + s.print(xff); + s.println(" "); + s.println(); + s.println("\t\t"); - try { - s.println("\t"); - s.print("\t\t "); - s.print(type); - s.println(" "); - s.print("\t\t "); - s.print(pdpCount); - s.print(" "); - s.print("\t\t "); - s.print(xff); - s.println(" "); - s.println(); - s.println("\t\t"); - - for (int i = 0; i < cdpStatusBlocks.size(); i++) { - cdpStatusBlocks.get(i).toXml(s); - } + for (CDPStatusBlock cdpStatusBlock : cdpStatusBlocks) { + cdpStatusBlock.toXml(s); + } - s.println("\t\t"); - s.println("\t\t"); + s.println("\t\t"); + s.println("\t\t"); - long timer = -(rowCount - 1); - int counter = 0; - int row = currentRow; + long timer = -(rowCount - 1); + int counter = 0; + int row = currentRow; - db.rrdFile.seek(dataOffset + (row + 1) * db.header.dsCount * Constants.SIZE_OF_DOUBLE); + db.rrdFile.seek(dataOffset + (row + 1) * db.header.dsCount * Constants.SIZE_OF_DOUBLE); - long lastUpdate = db.lastUpdate.getTime() / 1000; - int pdpStep = db.header.pdpStep; - NumberFormat numberFormat = new DecimalFormat("0.0000000000E0", DecimalFormatSymbols.getInstance(Locale.US)); - SimpleDateFormat dateFormat = - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); + long lastUpdate = db.lastUpdate.getTime() / 1000; + int pdpStep = db.header.pdpStep; + NumberFormat numberFormat = new DecimalFormat("0.0000000000E0", DecimalFormatSymbols.getInstance(Locale.US)); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); - while (counter++ < rowCount) { - row++; + while (counter++ < rowCount) { + row++; - if (row == rowCount) { - row = 0; + if (row == rowCount) { + row = 0; - db.rrdFile.seek(dataOffset); - } - - long now = (lastUpdate - lastUpdate % (pdpCount * pdpStep)) - + (timer * pdpCount * pdpStep); + db.rrdFile.seek(dataOffset); + } - timer++; + long now = (lastUpdate - lastUpdate % (pdpCount * pdpStep)) + + (timer * pdpCount * pdpStep); - s.print("\t\t\t "); - - s.println(""); - for (int col = 0; col < db.header.dsCount; col++) { - s.print(" "); - - double value = db.rrdFile.readDouble(); - - // NumberFormat doesn't know how to handle NaN - if (Double.isNaN(value)) { - s.print("NaN"); - } - else { - s.print(numberFormat.format(value)); - } + timer++; - s.print(" "); + s.print("\t\t\t "); + + s.println(""); + for (int col = 0; col < db.header.dsCount; col++) { + s.print(" "); + + double value = db.rrdFile.readDouble(); + + // NumberFormat doesn't know how to handle NaN + if (Double.isNaN(value)) { + s.print("NaN"); + } + else { + s.print(numberFormat.format(value)); } - s.println(""); + s.print(" "); } - s.println("\t\t"); - s.println("\t"); - } - catch (IOException e) { // Is the best thing to do here? - throw new RuntimeException(e.getMessage()); + s.println(""); } + + s.println("\t\t"); + s.println("\t"); } /** *

    Getter for the field values.

    * * @return an array of double. - * @throws java.io.IOException if any. */ - public double[][] getValues() throws IOException { + public double[][] getValues() { if (values != null) { return values; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/CDPStatusBlock.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/CDPStatusBlock.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/CDPStatusBlock.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/CDPStatusBlock.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core.jrrd; -import java.io.IOException; import java.io.PrintStream; /** @@ -11,7 +10,7 @@ */ public class CDPStatusBlock { - private static enum cdp_par_en { + private enum cdp_par_en { CDP_val, CDP_unkn_pdp_cnt, CDP_hw_intercept, CDP_hw_last_intercept, CDP_hw_slope, CDP_hw_last_slope, CDP_null_count, CDP_last_null_count, CDP_primary_val, CDP_secondary_val @@ -27,7 +26,7 @@ final double secondary_value; final double primary_value; - CDPStatusBlock(RRDFile file) throws IOException { + CDPStatusBlock(RRDFile file) { //Should read MAX_CDP_PAR_EN = 10 //Size should be 0x50 offset = file.getFilePointer(); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Constants.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Constants.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Constants.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/Constants.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,25 +2,25 @@ interface Constants { /** Constant DS_NAM_SIZE=20 */ - final int DS_NAM_SIZE = 20; + int DS_NAM_SIZE = 20; /** Constant DST_SIZE=20 */ - final int DST_SIZE = 20; + int DST_SIZE = 20; /** Constant CF_NAM_SIZE=20 */ - final int CF_NAM_SIZE = 20; + int CF_NAM_SIZE = 20; /** Constant LAST_DS_LEN=30 */ - final int LAST_DS_LEN = 30; + int LAST_DS_LEN = 30; /** Constant COOKIE="RRD" */ - static final String COOKIE = "RRD"; + String COOKIE = "RRD"; /** Constant MAX_SUPPORTED_VERSION=3 */ - public static final int MAX_SUPPORTED_VERSION = 3; + int MAX_SUPPORTED_VERSION = 3; /** Constant UNDEFINED_VERSION="UNDEF" */ - public static final String UNDEFINED_VERSION = "UNDEF"; + String UNDEFINED_VERSION = "UNDEF"; /** Constant UNDEFINED_VERSION_AS_INT=-1 */ - public static final int UNDEFINED_VERSION_AS_INT = -1; + int UNDEFINED_VERSION_AS_INT = -1; /** Constant VERSION_WITH_LAST_UPDATE_SEC=3 */ - public static int VERSION_WITH_LAST_UPDATE_SEC = 3; + int VERSION_WITH_LAST_UPDATE_SEC = 3; /** Constant FLOAT_COOKIE=8.642135E130 */ - static final double FLOAT_COOKIE = 8.642135E130; + double FLOAT_COOKIE = 8.642135E130; /** Constant SIZE_OF_DOUBLE=8 */ - public static final int SIZE_OF_DOUBLE = 8; + int SIZE_OF_DOUBLE = 8; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/DataSource.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/DataSource.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/DataSource.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/DataSource.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core.jrrd; -import java.io.IOException; import java.io.PrintStream; import java.text.NumberFormat; @@ -12,7 +11,7 @@ */ public class DataSource { - private static enum ds_param_en { DS_mrhb_cnt, DS_min_val, DS_max_val, DS_cde } + private enum ds_param_en { DS_mrhb_cnt, DS_min_val, DS_max_val, DS_cde } private final long offset; private final long size; @@ -24,7 +23,7 @@ // initialized during RRDatabase construction private PDPStatusBlock pdpStatusBlock; - DataSource(RRDFile file) throws IOException { + DataSource(RRDFile file) { offset = file.getFilePointer(); name = file.readString(Constants.DS_NAM_SIZE); @@ -37,7 +36,7 @@ size = file.getFilePointer() - offset; } - void loadPDPStatusBlock(RRDFile file) throws IOException { + void loadPDPStatusBlock(RRDFile file) { pdpStatusBlock = new PDPStatusBlock(file); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/PDPStatusBlock.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/PDPStatusBlock.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/PDPStatusBlock.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/PDPStatusBlock.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,7 +1,5 @@ package org.rrd4j.core.jrrd; -import java.io.IOException; - /** * Instances of this class model the primary data point status from an RRD file. * @@ -10,14 +8,14 @@ */ public class PDPStatusBlock { - private long offset; - private long size; - String lastReading; - int unknownSeconds; - double value; - private static enum pdp_par_en {PDP_unkn_sec_cnt, PDP_val}; + private final long offset; + private final long size; + final String lastReading; + final int unknownSeconds; + final double value; + private enum pdp_par_en {PDP_unkn_sec_cnt, PDP_val} - PDPStatusBlock(RRDFile file) throws IOException { + PDPStatusBlock(RRDFile file) { offset = file.getFilePointer(); lastReading = file.readString(Constants.LAST_DS_LEN); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDFile.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDFile.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDFile.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDFile.java 2024-04-10 02:29:57.000000000 +0000 @@ -64,7 +64,7 @@ if (!ok) { try { close(); - } catch (Throwable ignored) { + } catch (IOException ignored) { } // and then rethrow } @@ -134,15 +134,15 @@ return alignment; } - double readDouble() throws IOException { + double readDouble() { return mappedByteBuffer.getDouble(); } - int readInt() throws IOException { + int readInt() { return mappedByteBuffer.getInt(); } - int readLong() throws IOException { + int readLong() { if(longSize == 4) { return mappedByteBuffer.getInt(); } @@ -151,20 +151,20 @@ } } - String readString(int maxLength) throws IOException { + String readString(int maxLength) { byte[] array = new byte[maxLength]; mappedByteBuffer.get(array); return new String(array, 0, maxLength).trim(); } - void skipBytes(int n) throws IOException { + void skipBytes(int n) { mappedByteBuffer.position(mappedByteBuffer.position() + n); } - int align(int boundary) throws IOException { + int align(int boundary) { - int skip = (int) (boundary - (mappedByteBuffer.position() % boundary)) % boundary; + int skip = (boundary - (mappedByteBuffer.position() % boundary)) % boundary; if (skip != 0) { mappedByteBuffer.position(mappedByteBuffer.position() + skip); @@ -173,15 +173,15 @@ return skip; } - int align() throws IOException { + int align() { return align(alignment); } - long info() throws IOException { + long info() { return mappedByteBuffer.position(); } - long getFilePointer() throws IOException { + long getFilePointer() { return mappedByteBuffer.position(); } @@ -191,13 +191,13 @@ } } - void read(ByteBuffer bb) throws IOException{ + void read(ByteBuffer bb) { int count = bb.remaining(); bb.put((ByteBuffer) mappedByteBuffer.duplicate().limit(mappedByteBuffer.position() + count)); mappedByteBuffer.position(mappedByteBuffer.position() + count); } - UnivalArray getUnivalArray(int size) throws IOException { + UnivalArray getUnivalArray(int size) { return new UnivalArray(this, size); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDatabase.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDatabase.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDatabase.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/RRDatabase.java 2024-04-10 02:29:57.000000000 +0000 @@ -63,10 +63,10 @@ rrdFile = new RRDFile(file); header = new Header(rrdFile); - nameindex = new HashMap(header.dsCount); + nameindex = new HashMap<>(header.dsCount); // Load the data sources - dataSources = new ArrayList(header.dsCount); + dataSources = new ArrayList<>(header.dsCount); for (int i = 0; i < header.dsCount; i++) { DataSource ds = new DataSource(rrdFile); @@ -75,7 +75,7 @@ } // Load the archives - archives = new ArrayList(header.rraCount); + archives = new ArrayList<>(header.rraCount); for (int i = 0; i < header.rraCount; i++) { Archive archive = new Archive(this); @@ -214,7 +214,7 @@ ArrayList getArchiveList(ConsolidationFunctionType type) { - ArrayList subset = new ArrayList(); + ArrayList subset = new ArrayList<>(); for (Archive archive : archives) { if (archive.getType().equals(type)) { @@ -449,7 +449,7 @@ * Outputs the content of the database to the given print stream * as a stream of XML. The XML format is almost identical to that produced by * rrdtool dump - * + *

    * A flush is issued at the end of the XML generation, so auto flush of the PrintStream can be set to false * * @param s the PrintStream to send the XML to. @@ -470,7 +470,7 @@ s.print("\t "); s.print(lastUpdate.getTime() / 1000); s.print(" "); s.println(); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/UnivalArray.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/UnivalArray.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/UnivalArray.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/jrrd/UnivalArray.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.core.jrrd; -import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -19,9 +18,8 @@ * * @param file the RRdFile * @param size the numer of elements in the array - * @throws java.io.IOException if any. */ - public UnivalArray(RRDFile file, int size) throws IOException { + public UnivalArray(RRDFile file, int size) { sizeoflong = file.getBits(); buffer = ByteBuffer.allocate(size * 8); if(file.isBigEndian()) diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/Epoch.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/Epoch.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/Epoch.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/Epoch.java 2024-04-10 02:29:57.000000000 +0000 @@ -4,8 +4,6 @@ import javax.swing.*; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -44,12 +42,6 @@ private final SimpleDateFormat[] parsers = new SimpleDateFormat[supportedFormats.length]; private final String helpText; - private final Timer timer = new Timer(1000, new ActionListener() { - public void actionPerformed(ActionEvent e) { - showTimestamp(); - } - }); - private final JLabel topLabel = new JLabel("Enter timestamp or readable date:"); private final JTextField inputField = new JTextField(25); private final JButton convertButton = new JButton("Convert"); @@ -73,6 +65,7 @@ tooltipBuff.append("Copyright (c) 2013-2020 The RRD4J Authors. Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor. Copyright (c) 2013 The OpenNMS Group, Inc. Licensed under the Apache License, Version 2.0."); helpText = tooltipBuff.toString(); constructUI(); + Timer timer = new Timer(1000, e -> showTimestamp()); timer.start(); } @@ -83,17 +76,10 @@ c.add(inputField, BorderLayout.WEST); c.add(convertButton, BorderLayout.CENTER); convertButton.setToolTipText(helpText); - convertButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - convert(); - } - }); + convertButton.addActionListener(e -> convert()); c.add(helpButton, BorderLayout.EAST); - helpButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - JOptionPane.showMessageDialog(helpButton, helpText, "Epoch Help", JOptionPane.INFORMATION_MESSAGE); - } - }); + helpButton.addActionListener( + e -> JOptionPane.showMessageDialog(helpButton, helpText, "Epoch Help", JOptionPane.INFORMATION_MESSAGE)); inputField.requestFocus(); getRootPane().setDefaultButton(convertButton); setResizable(false); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeParser.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeParser.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeParser.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeParser.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,7 +6,7 @@ * Class which parses at-style time specification (described in detail on the rrdfetch man page), * used in all RRDTool commands. This code is in most parts just a java port of Tobi's parsetime.c * code. - * + *

    * For years written with two digits, any year before 38 will be post 2000. * */ @@ -14,8 +14,8 @@ private static final int PREVIOUS_OP = -1; TimeToken token; - TimeScanner scanner; - TimeSpec spec; + final TimeScanner scanner; + final TimeSpec spec; int op = TimeToken.PLUS; int prev_multiplier = -1; @@ -104,7 +104,7 @@ * the scanner state to what it was at entry, and returns without setting anything. */ private void timeOfDay() { - int hour = 0; + int hour; int minute = 0; /* save token status in case we must abort */ scanner.saveState(); @@ -183,8 +183,8 @@ private void day() { long mday = 0; - long wday = 0; - long mon = 0; + long wday; + long mon; long year = spec.year; switch (token.token_id) { case TimeToken.YESTERDAY: diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeScanner.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeScanner.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeScanner.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeScanner.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,7 +1,7 @@ package org.rrd4j.core.timespec; class TimeScanner { - private String dateString; + private final String dateString; private int pos, pos_save; private TimeToken token, token_save; @@ -108,7 +108,7 @@ } TimeToken nextToken() { - StringBuilder buffer = new StringBuilder(""); + StringBuilder buffer = new StringBuilder(); while (pos < dateString.length()) { char c = dateString.charAt(pos++); if (Character.isWhitespace(c) || c == '_' || c == ',') { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeSpec.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeSpec.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeSpec.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/core/timespec/TimeSpec.java 2024-04-10 02:29:57.000000000 +0000 @@ -20,7 +20,7 @@ int wday; int dyear, dmonth, dday, dhour, dmin, dsec; - String dateString; + final String dateString; TimeSpec context; @@ -135,4 +135,3 @@ }; } } - diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Aggregates.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Aggregates.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Aggregates.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Aggregates.java 2024-04-10 02:29:57.000000000 +0000 @@ -107,7 +107,7 @@ public String dump() { StringBuilder bl = new StringBuilder(); for(ConsolFun cf: ConsolFun.values()) { - bl.append(cf.name() + '=' + Util.formatDouble(this.getAggregate(cf))); + bl.append(cf.name()).append('=').append(Util.formatDouble(this.getAggregate(cf))); } return bl.toString(); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Aggregator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Aggregator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Aggregator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Aggregator.java 2024-04-10 02:29:57.000000000 +0000 @@ -5,7 +5,8 @@ import java.util.List; class Aggregator { - private final long timestamps[], step; + private final long[] timestamps; + private final long step; private final double[] values; Aggregator(long[] timestamps, double[] values) { @@ -60,13 +61,13 @@ } double getPercentile(long tStart, long tEnd, double percentile) { - List valueList = new ArrayList(); + List valueList = new ArrayList<>(); // create a list of included datasource values (different from NaN) for (int i = 0; i < timestamps.length; i++) { long left = Math.max(timestamps[i] - step, tStart); long right = Math.min(timestamps[i], tEnd); if (right > left && !Double.isNaN(values[i])) { - valueList.add(Double.valueOf(values[i])); + valueList.add(values[i]); } } // create an array to work with @@ -74,7 +75,7 @@ if (count > 1) { double[] valuesCopy = new double[count]; for (int i = 0; i < count; i++) { - valuesCopy[i] = valueList.get(i).doubleValue(); + valuesCopy[i] = valueList.get(i); } // sort array Arrays.sort(valuesCopy); @@ -90,4 +91,3 @@ return Double.NaN; } } - diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/CubicSplineInterpolator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/CubicSplineInterpolator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/CubicSplineInterpolator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/CubicSplineInterpolator.java 2024-04-10 02:29:57.000000000 +0000 @@ -15,8 +15,8 @@ */ @SuppressWarnings("deprecation") public class CubicSplineInterpolator extends Plottable { - private double[] x; - private double[] y; + private final double[] x; + private final double[] y; // second derivates come here private double[] y2; @@ -104,6 +104,7 @@ for (int i = 0; i < x.length - 1 && ok; i++) { if (x[i] >= x[i + 1] || Double.isNaN(y[i])) { ok = false; + break; } } if (!ok) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/DataProcessor.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/DataProcessor.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/DataProcessor.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/DataProcessor.java 2024-04-10 02:29:57.000000000 +0000 @@ -64,7 +64,7 @@ private long tStart; private long tEnd; - private long timestamps[]; + private long[] timestamps; private long lastRrdArchiveUpdateTime = 0; // this will be adjusted later private long step = 0; @@ -74,7 +74,7 @@ private TimeZone tz = TimeZone.getDefault(); // the order is important, ordinary HashMap is unordered - private Map sources = new LinkedHashMap(); + private final Map sources = new LinkedHashMap<>(); private Def[] defSources; @@ -112,7 +112,7 @@ * Creates new DataProcessor object for the given time span. Ending date may be set to null. * In that case, the class will try to find optimal ending date based on the last update time of * RRD files processed with the {@link #processData()} method. - * + *

    * It use the time zone for starting calendar date. * * @param gc1 Starting Calendar date @@ -365,7 +365,7 @@ /** * This method is just an alias for {@link #getPercentile(String)} method. - * + *

    * Used by ISPs which charge for bandwidth utilization on a "95th percentile" basis.

    * * The 95th percentile is the highest source value left when the top 5% of a numerically sorted set @@ -430,7 +430,7 @@ * @return array of datasource names */ public String[] getSourceNames() { - return sources.keySet().toArray(new String[sources.keySet().size()]); + return sources.keySet().toArray(new String[0]); } /** @@ -570,7 +570,7 @@ /** * Creates a datasource that performs a percentile calculation on an * another named datasource to yield a single value. - * + *

    * Requires that the other datasource has already been defined; otherwise, it'll * end up with no data * @@ -588,7 +588,7 @@ /** * Creates a datasource that performs a variable calculation on an * another named datasource to yield a single combined timestamp/value. - * + *

    * Requires that the other datasource has already been defined; otherwise, it'll * end up with no data * @@ -606,7 +606,7 @@ /** * Creates a datasource that performs a variable calculation on an * another named datasource to yield a single combined timestamp/value. - * + *

    * Requires that the other datasource has already been defined; otherwise, it'll * end up with no data * @@ -970,7 +970,7 @@ // PRIVATE METHODS private void extractDefs() { - defSources = sources.values().stream().filter(s -> s instanceof Def).toArray(Def[]::new); + defSources = sources.values().stream().filter(Def.class::isInstance).toArray(Def[]::new); } private void fetchRrdData() throws IOException { @@ -1006,7 +1006,7 @@ } if (!defSources[i].isLoaded()) { // not fetched yet - Set dsNames = new HashSet(); + Set dsNames = new HashSet<>(); dsNames.add(defSources[i].getDsName()); // look for all other datasources with the same path and the same consolidation function for (int j = i + 1; j < defSources.length; j++) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Def.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Def.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Def.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Def.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,6 +1,5 @@ package org.rrd4j.data; -import java.io.IOException; import java.net.URI; import org.rrd4j.ConsolFun; @@ -36,7 +35,7 @@ this.backend = backend; } - URI getCanonicalUri() throws IOException { + URI getCanonicalUri() { return rrdUri; } @@ -52,7 +51,7 @@ return backend; } - boolean isCompatibleWith(Def def) throws IOException { + boolean isCompatibleWith(Def def) { return getCanonicalUri().equals(def.getCanonicalUri()) && getConsolFun() == def.consolFun && ((backend == null && def.backend == null) || diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/IPlottable.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/IPlottable.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/IPlottable.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/IPlottable.java 2024-04-10 02:29:57.000000000 +0000 @@ -16,5 +16,5 @@ * @param timestamp Timestamp in seconds for the datapoint. * @return Double value of the datapoint. */ - public double getValue(long timestamp); + double getValue(long timestamp); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/LinearInterpolator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/LinearInterpolator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/LinearInterpolator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/LinearInterpolator.java 2024-04-10 02:29:57.000000000 +0000 @@ -48,14 +48,14 @@ LEFT, RIGHT, LINEAR, - REGRESSION; + REGRESSION } private int lastIndexUsed = 0; private Method interpolationMethod = Method.LINEAR; - private long[] timestamps; - private double[] values; + private final long[] timestamps; + private final double[] values; // used only if INTERPOLATE_BESTFIT is specified double b0 = Double.NaN; @@ -117,6 +117,7 @@ for (int i = 0; i < timestamps.length - 1 && ok; i++) { if (timestamps[i] >= timestamps[i + 1]) { ok = false; + break; } } if (!ok) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Normalizer.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Normalizer.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Normalizer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Normalizer.java 2024-04-10 02:29:57.000000000 +0000 @@ -41,7 +41,7 @@ long t2 = Math.min(rawTimestamps[rawSeg], timestamps[fillSeg]); if (t1 < t2) { values[fillSeg] = Util.sum(values[fillSeg], (t2 - t1) * rawValues[rawSeg]); - weights[fillSeg] = Util.sum(weights[fillSeg], (double)(t2 - t1)); + weights[fillSeg] = Util.sum(weights[fillSeg], (t2 - t1)); } else { overlap = false; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/RpnCalculator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/RpnCalculator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/RpnCalculator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/RpnCalculator.java 2024-04-10 02:29:57.000000000 +0000 @@ -396,7 +396,7 @@ @Override void do_method(RpnCalculator c, State s) { TimeZone tz = s.getTimeZone(); - c.push((double)(c.timestamps[s.slot] + ((long) tz.getOffset(c.timestamps[s.slot]) / 1000D))); + c.push(c.timestamps[s.slot] + ((long) tz.getOffset(c.timestamps[s.slot]) / 1000D)); } }, TKN_YEAR("YEAR") { @@ -569,7 +569,7 @@ } /* the real calculation */ - double val = Double.NaN; + double val; /* the info on the datasource */ double[] vals = c.dataProcessor.getValues(c.tokens[s.rpi-1].variable); @@ -615,7 +615,7 @@ val = Double.NaN; if (s.token.id == TKN_PREDICT) { /* the average */ if (count > 0) { - val = sum / (double) count; + val = sum / count; } } else { if (count > 1) { /* the sigma case */ @@ -649,14 +649,14 @@ private static final PerfectStringHash perfect; static { - List tokenStrings = new ArrayList(Token_Symbol.values().length); + List tokenStrings = new ArrayList<>(Token_Symbol.values().length); for(Token_Symbol s: Token_Symbol.values()) { if(! s.token_string.isEmpty()) { tokenStrings.add(s.token_string); } } - String[] array = tokenStrings.toArray(new String[tokenStrings.size()]); + String[] array = tokenStrings.toArray(new String[0]); perfect = new PerfectStringHash(array); symbols = new Token_Symbol[tokenStrings.size()]; for(Token_Symbol s: Token_Symbol.values()) { @@ -683,7 +683,7 @@ this.sourceName = sourceName; this.dataProcessor = dataProcessor; this.timestamps = dataProcessor.getTimestamps(); - this.timeStep = (double)(timestamps[1] - timestamps[0]); + this.timeStep = (timestamps[1] - timestamps[0]); this.calculatedValues = new double[timestamps.length]; this.sourcesNames = Arrays.asList(dataProcessor.getSourceNames()); String[] tokensString = rpnExpression.split(" *, *"); @@ -767,7 +767,7 @@ private static final class RpnStack { private static final int MAX_STACK_SIZE = 1000; - private double[] stack = new double[MAX_STACK_SIZE]; + private final double[] stack = new double[MAX_STACK_SIZE]; private int pos = 0; void push(double x) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Source.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Source.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Source.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Source.java 2024-04-10 02:29:57.000000000 +0000 @@ -34,7 +34,7 @@ * @param tStart * @param tEnd * @return - * @deprecated This method is deprecated. Uses instance of {@link org.rrd4j.data.Variable}, used with DataProcessor.addDatasource(String, String, Variable) + * @deprecated This method is deprecated. Uses instance of {@link org.rrd4j.data.Variable}, used with {@link org.rrd4j.data.DataProcessor#addDatasource(String, String, Variable)} */ @Deprecated Aggregates getAggregates(long tStart, long tEnd) { @@ -47,7 +47,7 @@ * @param tEnd * @param percentile * @return - * @deprecated This method is deprecated. Uses instance of {@link org.rrd4j.data.Variable.PERCENTILE}, used with DataProcessor.addDatasource(String, String, Variable) + * @deprecated This method is deprecated. Uses instance of {@link org.rrd4j.data.Variable.PERCENTILE}, used with {@link org.rrd4j.data.DataProcessor#addDatasource(String, String, Variable)} */ @Deprecated double getPercentile(long tStart, long tEnd, double percentile) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Variable.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Variable.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/data/Variable.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/data/Variable.java 2024-04-10 02:29:57.000000000 +0000 @@ -9,7 +9,7 @@ /** * An abstract class to help extract single value from a set of value (VDEF in rrdtool) - * + *

    * It can be used to add new fancy statistical calculation with rrd values * */ @@ -30,7 +30,7 @@ public String toString() { return "Value [value=" + value + ", timestamp=" + timestamp + "]"; } - }; + } public static final Value INVALIDVALUE = new Value(0, Double.NaN); @@ -101,7 +101,7 @@ /** * This method is call with the needed values, extracted from the datasource to do the calculation. - * + *

    * Value is to be filled with both the double value and a possible timestamp, when it's used to find * a specific point * @@ -111,7 +111,7 @@ * @param end the end of the period * @return a filled Value object */ - protected abstract Value fill(long timestamps[], double[] values, long start, long end); + protected abstract Value fill(long[] timestamps, double[] values, long start, long end); /** * Find the first valid data point and it's timestamp @@ -266,8 +266,8 @@ * */ static final class PercentElem { - long timestamp; - double value; + final long timestamp; + final double value; PercentElem(int pos, long timestamp, double value) { this.timestamp = timestamp; @@ -305,7 +305,7 @@ */ static final class ComparPercentElemen implements Comparator, Serializable { @Override - public final int compare(PercentElem arg0, PercentElem arg1) { + public int compare(PercentElem arg0, PercentElem arg1) { if (Double.isNaN(arg0.value) && Double.isNaN(arg1.value)) return Long.signum(arg0.timestamp - arg1.timestamp); else if (Double.isNaN(arg0.value)) @@ -346,7 +346,7 @@ @Override protected Value fill(long[] timestamps, double[] values, long start, long end) { // valuesSet will be a set with NaN packet at the start - SortedSet valuesSet = new TreeSet(new ComparPercentElemen()); + SortedSet valuesSet = new TreeSet<>(new ComparPercentElemen()); for (int i = 0 ; i < values.length ; i++) { valuesSet.add(new PercentElem(i, timestamps[i], values[i])); } @@ -356,7 +356,7 @@ valuesSet = valuesSet.tailSet(new PercentElem(0, 0, Double.NEGATIVE_INFINITY )); } - PercentElem[] element = (PercentElem[]) valuesSet.toArray(new PercentElem[valuesSet.size()]); + PercentElem[] element = valuesSet.toArray(new PercentElem[0]); int pos = Math.round(percentile * (element.length - 1) / 100); // if we have anything left... if (pos >= 0) { @@ -395,15 +395,13 @@ double SUMxx = 0.0; double lslslope; - for (int i = 0; i < values.length; i++) { - double value = values[i]; - + for (double value : values) { if (!Double.isNaN(value)) { cnt++; SUMx += lslstep; SUMxx += lslstep * lslstep; - SUMy += value; + SUMy += value; SUMxy += lslstep * value; } @@ -438,15 +436,13 @@ double lslslope; double lslint; - for (int i = 0; i < values.length; i++) { - double value = values[i]; - + for (double value : values) { if (!Double.isNaN(value)) { cnt++; SUMx += lslstep; SUMxx += lslstep * lslstep; - SUMy += value; + SUMy += value; SUMxy += lslstep * value; } lslstep++; @@ -481,15 +477,13 @@ double SUMyy = 0.0; double lslcorrel; - for (int i = 0; i < values.length; i++) { - double value = values[i]; - + for (double value : values) { if (!Double.isNaN(value)) { cnt++; SUMx += lslstep; SUMxx += lslstep * lslstep; - SUMy += value; + SUMy += value; SUMxy += lslstep * value; SUMyy += value * value; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantArea.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantArea.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantArea.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantArea.java 2024-04-10 02:29:57.000000000 +0000 @@ -13,6 +13,7 @@ this.value = value; } + @Override void assignValues(DataProcessor dproc) { values = new double[dproc.getTimestamps().length]; Arrays.fill(values, value); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantLine.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantLine.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantLine.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ConstantLine.java 2024-04-10 02:29:57.000000000 +0000 @@ -14,6 +14,7 @@ this.value = value; } + @Override void assignValues(DataProcessor dproc) { values = new double[dproc.getTimestamps().length]; Arrays.fill(values, value); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/DownSampler.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/DownSampler.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/DownSampler.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/DownSampler.java 2024-04-10 02:29:57.000000000 +0000 @@ -11,7 +11,7 @@ */ public interface DownSampler { - public class DataSet { + class DataSet { public final long[] timestamps; public final double[] values; public DataSet(long[] timestamps, double[] values) { @@ -25,6 +25,6 @@ } - public DataSet downsize(long[] timestamps, double[] values); + DataSet downsize(long[] timestamps, double[] values); } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ElementsNames.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ElementsNames.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ElementsNames.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ElementsNames.java 2024-04-10 02:29:57.000000000 +0000 @@ -50,5 +50,5 @@ /** * The y-axis color */ - yaxis; + yaxis } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ImageWorker.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ImageWorker.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ImageWorker.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ImageWorker.java 2024-04-10 02:29:57.000000000 +0000 @@ -8,12 +8,8 @@ import java.awt.font.LineMetrics; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.nio.file.Paths; import javax.imageio.IIOImage; @@ -182,7 +178,7 @@ // Some format can't manage 16M colors images // JPEG don't like transparency - if (! imgProvider.canEncodeImage(outputImage) || "image/jpeg".equals(imgProvider.getMIMETypes()[0].toLowerCase())) { + if (! imgProvider.canEncodeImage(outputImage) || "image/jpeg".equalsIgnoreCase(imgProvider.getMIMETypes()[0])) { int w = img.getWidth(); int h = img.getHeight(); outputImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); @@ -208,15 +204,14 @@ } } - InputStream saveImage(String path, ImageWriter writer, ImageWriteParam iwp) throws IOException { + void saveImage(String path, ImageWriter writer, ImageWriteParam iwp) throws IOException { makeImage(Paths.get(path).toFile(), writer, iwp); - return new BufferedInputStream(new FileInputStream(path)); } - InputStream getImageBytes(ImageWriter writer, ImageWriteParam iwp) throws IOException { + byte[] getImageBytes(ImageWriter writer, ImageWriteParam iwp) throws IOException { try (ByteArrayOutputStream stream = new ByteArrayOutputStream(IMG_BUFFER_CAPACITY)){ makeImage(stream, writer, iwp); - return new ByteArrayInputStream(stream.toByteArray()); + return stream.toByteArray(); } } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/LegendComposer.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/LegendComposer.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/LegendComposer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/LegendComposer.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,13 +6,14 @@ class LegendComposer implements RrdGraphConstants { private final RrdGraphDef gdef; private final ImageWorker worker; - private int legX, legY; + private final int legX; + private int legY; private final int legWidth; - private double interLegendSpace; - private double leading; - private double smallLeading; - private double boxSpace; + private final double interLegendSpace; + private final double leading; + private final double smallLeading; + private final double boxSpace; LegendComposer(RrdGraph rrdGraph, int legX, int legY, int legWidth) { this.gdef = rrdGraph.gdef; @@ -46,7 +47,7 @@ private double width; private int spaceCount; private boolean noJustification; - private List comments = new ArrayList(); + private final List comments = new ArrayList<>(); Line() { clear(); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/Mapper.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/Mapper.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/Mapper.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/Mapper.java 2024-04-10 02:29:57.000000000 +0000 @@ -10,10 +10,10 @@ this.im = rrdGraph.im; pixieX = (double) im.xsize / (double) (im.end - im.start); if (!gdef.logarithmic) { - pixieY = (double) im.ysize / (im.maxval - im.minval); + pixieY = im.ysize / (im.maxval - im.minval); } else { - pixieY = (double) im.ysize / (ValueAxisLogarithmic.log10(im.maxval) - ValueAxisLogarithmic.log10(im.minval)); + pixieY = im.ysize / (ValueAxisLogarithmic.log10(im.maxval) - ValueAxisLogarithmic.log10(im.minval)); } } @@ -22,15 +22,15 @@ this.im = im; pixieX = (double) im.xsize / (double) (im.end - im.start); if (!gdef.logarithmic) { - pixieY = (double) im.ysize / (im.maxval - im.minval); + pixieY = im.ysize / (im.maxval - im.minval); } else { - pixieY = (double) im.ysize / (Math.log10(im.maxval) - Math.log10(im.minval)); + pixieY = im.ysize / (Math.log10(im.maxval) - Math.log10(im.minval)); } } int xtr(double mytime) { - return (int) ((double) im.xorigin + pixieX * (mytime - im.start)); + return (int) (im.xorigin + pixieX * (mytime - im.start)); } int ytr(double value) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PDef.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PDef.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PDef.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PDef.java 2024-04-10 02:29:57.000000000 +0000 @@ -4,7 +4,7 @@ import org.rrd4j.data.IPlottable; class PDef extends Source { - private IPlottable plottable; + private final IPlottable plottable; PDef(String name, IPlottable plottable) { super(name); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PathIterator.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PathIterator.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PathIterator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PathIterator.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,7 +1,7 @@ package org.rrd4j.graph; class PathIterator { - private double[] y; + private final double[] y; private int pos = 0; PathIterator(double[] y) { diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PrintText.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PrintText.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/PrintText.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/PrintText.java 2024-04-10 02:29:57.000000000 +0000 @@ -26,10 +26,12 @@ this.strftime = strftime; } + @Override boolean isPrint() { return !includedInGraph; } + @Override void resolveText(Locale l, DataProcessor dproc, ValueScaler valueScaler) { super.resolveText(l, dproc, valueScaler); Value v = dproc.getVariable(srcName); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraph.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraph.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraph.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraph.java 2024-04-10 02:29:57.000000000 +0000 @@ -7,6 +7,10 @@ import java.awt.Paint; import java.awt.Stroke; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; import javax.imageio.ImageIO; import javax.imageio.ImageWriteParam; @@ -172,10 +176,27 @@ private void saveImage() throws IOException { if (! RrdGraphConstants.IN_MEMORY_IMAGE.equals(gdef.filename)) { - info.stream = worker.saveImage(gdef.filename, writer, param); + Path imgpath = Paths.get(gdef.filename); + worker.saveImage(gdef.filename, writer, param); + info.bytesSource = () -> { + try { + return Files.readAllBytes(imgpath); + } catch (IOException e) { + throw new IllegalStateException("Unable to read image bytes", e); + } + }; + info.bytesCount = () -> { + try { + return (int) Files.size(imgpath); + } catch (IOException e) { + throw new IllegalStateException("Unable to read image informations", e); + } + }; } else { - info.stream = worker.getImageBytes(writer, param); + byte[] content = worker.getImageBytes(writer, param); + info.bytesSource = () -> Arrays.copyOf(content, content.length); + info.bytesCount = () -> content.length; } } @@ -248,10 +269,9 @@ worker.drawString(gdef.title, x, y, gdef.getFont(FONTTAG_TITLE), gdef.getColor(ElementsNames.font)); } if (gdef.verticalLabel != null) { - int x = PADDING_LEFT; int y = im.yorigin - im.ysize / 2 + (int) worker.getStringWidth(gdef.verticalLabel, gdef.getFont(FONTTAG_UNIT)) / 2; int ascent = (int) worker.getFontAscent(gdef.getFont(FONTTAG_UNIT)); - worker.transform(x, y, -Math.PI / 2); + worker.transform(PADDING_LEFT, y, -Math.PI / 2); worker.drawString(gdef.verticalLabel, 0, ascent, gdef.getFont(FONTTAG_UNIT), gdef.getColor(ElementsNames.font)); worker.reset(); } @@ -375,8 +395,7 @@ im.xorigin + im.xsize + 4, }; double[] Xarrow_y = { - im.yorigin - 3, - im.yorigin + 0, + im.yorigin - 3, im.yorigin, im.yorigin + 3, }; worker.fillPolygon(Xarrow_x, im.yorigin + 3.0, Xarrow_y, arrowColor); @@ -428,7 +447,7 @@ im.xorigin = 0; } else { - im.xorigin = (int) (PADDING_LEFT + im.unitslength * getFontCharWidth(FontTag.UNIT)); + im.xorigin = (int) (PADDING_LEFT + im.unitslength * getFontCharWidth(FONTTAG_AXIS)); } if (!gdef.onlyGraph && gdef.verticalLabel != null) { @@ -452,7 +471,7 @@ } else { im.xgif = PADDING_RIGHT + im.xsize + im.xorigin; - im.ygif = im.yorigin + (int) (PADDING_PLOT * getFontHeight(FONTTAG_DEFAULT)); + im.ygif = im.yorigin + (int) (PADDING_PLOT * getFontHeight(FONTTAG_AXIS)); } } @@ -566,10 +585,10 @@ } } else { - im.minval = (double) im.ylabfact * im.ygridstep * - Math.floor(im.minval / ((double) im.ylabfact * im.ygridstep)); - im.maxval = (double) im.ylabfact * im.ygridstep * - Math.ceil(im.maxval / ((double) im.ylabfact * im.ygridstep)); + im.minval = im.ylabfact * im.ygridstep * + Math.floor(im.minval / (im.ylabfact * im.ygridstep)); + im.maxval = im.ylabfact * im.ygridstep * + Math.ceil(im.maxval / (im.ylabfact * im.ygridstep)); } } @@ -658,7 +677,7 @@ private void fetchData() throws IOException { dproc = new DataProcessor(gdef.startTime, gdef.endTime); - dproc.setPixelCount(im.xsize); + dproc.setPixelCount(gdef.width); if (gdef.poolUsed) { dproc.setPoolUsed(gdef.poolUsed); dproc.setPool(gdef.getPool()); diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphConstants.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphConstants.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphConstants.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphConstants.java 2024-04-10 02:29:57.000000000 +0000 @@ -293,32 +293,32 @@ /** * The file that contains font configuration searched in the class path. The default value is /rrd4jfonts.properties */ - public static final String PROPERTYFONTSPROPERTIES = "org.rrd4j.fonts.properties"; + String PROPERTYFONTSPROPERTIES = "org.rrd4j.fonts.properties"; /** * A possible URL to a configuration file. */ - public static final String PROPERTYFONTSURL = "org.rrd4j.fonts.properties.url"; + String PROPERTYFONTSURL = "org.rrd4j.fonts.properties.url"; /** - * The name of the plain font, used to define the {@link #DEFAULT_SMALL_FONT} and the {@link GATOR_FONT}. To be found in the classpath. + * The name of the plain font, used to define the {@link #DEFAULT_SMALL_FONT} and the {@link RrdGraphDef#GATOR_FONT}. To be found in the classpath. */ - public static final String PROPERTYFONTPLAIN = "org.rrd4j.font.plain"; + String PROPERTYFONTPLAIN = "org.rrd4j.font.plain"; /** * The name of the bold font, used to define the {@link #DEFAULT_LARGE_FONT}. To be found in the classpath. */ - public static final String PROPERTYFONTBOLD = "org.rrd4j.font.bold"; + String PROPERTYFONTBOLD = "org.rrd4j.font.bold"; /** - * An URL to the plain font, used to define the {@link #DEFAULT_SMALL_FONT} and the {@link GATOR_FONT}. + * An URL to the plain font, used to define the {@link #DEFAULT_SMALL_FONT} and the {@link RrdGraphDef#GATOR_FONT}. */ - public static final String PROPERTYFONTPLAINURL = "org.rrd4j.font.plain.url"; + String PROPERTYFONTPLAINURL = "org.rrd4j.font.plain.url"; /** * An URL to the bold font, used to define the {@link #DEFAULT_LARGE_FONT}. */ - public static final String PROPERTYFONTBOLDURL = "org.rrd4j.font.bold.url"; + String PROPERTYFONTBOLDURL = "org.rrd4j.font.bold.url"; /** * Font constructor, to use embedded fonts. Not really useful outside internal use for RRD4J. */ - static class FontConstructor { + class FontConstructor { private static final Properties fileProps = new Properties(); static { refreshConf(); @@ -364,7 +364,7 @@ */ public static Font getFont(int type, int size) { /* - Function fontStream = null; + Function fontStream; String fontPath = fileProps.getProperty(type == Font.BOLD ? PROPERTYFONTBOLDURL : PROPERTYFONTPLAINURL); if (fontPath!= null) { fontStream = s -> { @@ -391,15 +391,15 @@ /** * Default graph small font */ - static final Font DEFAULT_SMALL_FONT = FontConstructor.getFont(Font.PLAIN, 10); + Font DEFAULT_SMALL_FONT = FontConstructor.getFont(Font.PLAIN, 10); /** * Default graph large font */ - static final Font DEFAULT_LARGE_FONT = FontConstructor.getFont(Font.BOLD, 12); + Font DEFAULT_LARGE_FONT = FontConstructor.getFont(Font.BOLD, 12); /** * Font for the Gator */ - static final Font GATOR_FONT = FontConstructor.getFont(Font.PLAIN, 9); + Font GATOR_FONT = FontConstructor.getFont(Font.PLAIN, 9); /** * Used internally */ @@ -466,7 +466,7 @@ /** * Allowed font tag names which can be used in {@link org.rrd4j.graph.RrdGraphDef#setFont(org.rrd4j.graph.RrdGraphConstants.FontTag, java.awt.Font)} method */ - public enum FontTag { + enum FontTag { /** * Index of the default font. Used in {@link org.rrd4j.graph.RrdGraphDef#setFont(org.rrd4j.graph.RrdGraphConstants.FontTag, java.awt.Font)} */ @@ -508,7 +508,7 @@ FontTag FONTTAG_AXIS = FontTag.AXIS; - FontTag FONTTAG_UNIT = FontTag.AXIS; + FontTag FONTTAG_UNIT = FontTag.UNIT; FontTag FONTTAG_LEGEND = FontTag.LEGEND; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphDef.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphDef.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphDef.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphDef.java 2024-04-10 02:29:57.000000000 +0000 @@ -172,9 +172,9 @@ Stroke tickStroke = TICK_STROKE; DownSampler downsampler = null; - final List sources = new ArrayList(); - final List comments = new ArrayList(); - final List plotElements = new ArrayList(); + final List sources = new ArrayList<>(); + final List comments = new ArrayList<>(); + final List plotElements = new ArrayList<>(); /** * Creates RrdGraphDef object and sets default time span (default ending time is 'now', @@ -580,9 +580,9 @@ /** * Sets image format. - * ImageIO is used to save the image, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to save the image, so any supported format by ImageIO can be used, and it can be extended using .... * - * @param imageFormat Any value as return by {@link javax.imageio.ImageIO#getReaderFormatNames} + * @param imageFormat Any value as return by {@link ImageIO#getReaderFormatNames} */ public void setImageFormat(String imageFormat) { this.imageFormat = imageFormat; @@ -590,7 +590,7 @@ /** * Sets background image. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param backgroundImage Path to background image */ @@ -600,7 +600,7 @@ /** * Sets background image. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param backgroundImageUrl URL to background image */ @@ -619,7 +619,7 @@ /** * Sets canvas background image. Canvas image is printed on canvas area, under canvas color and plot. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param canvasImage Path to canvas image */ @@ -629,7 +629,7 @@ /** * Sets canvas background image. Canvas image is printed on canvas area, under canvas color and plot. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param canvasUrl URL to canvas image */ @@ -648,7 +648,7 @@ /** * Sets overlay image. Overlay image is printed on the top of the image, once it is completely created. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param overlayImage Path to overlay image */ @@ -658,7 +658,7 @@ /** * Sets overlay image. Overlay image is printed on the top of the image, once it is completely created. - * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using https://github.com/geosolutions-it/imageio-ext. + * ImageIO is used to download, so any supported format by ImageIO can be used, and it can be extended using .... * * @param overlayImage URL to overlay image */ @@ -1118,7 +1118,7 @@ /** * Creates a datasource that performs a variable calculation on an * another named datasource to yield a single combined timestamp/value. - * + *

    * Requires that the other datasource has already been defined; otherwise, it'll * end up with no data * diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphInfo.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphInfo.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphInfo.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/RrdGraphInfo.java 2024-04-10 02:29:57.000000000 +0000 @@ -1,9 +1,8 @@ package org.rrd4j.graph; -import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.function.Supplier; /** * Class to represent successfully created Rrd4j graph. Objects of this class are created by method @@ -12,9 +11,10 @@ public class RrdGraphInfo { String filename; int width, height; - InputStream stream; + Supplier bytesSource; + Supplier bytesCount; String imgInfo; - private List printLines = new ArrayList(); + private final List printLines = new ArrayList<>(); RrdGraphInfo() { // cannot instantiate this class @@ -58,16 +58,7 @@ * @throws IllegalStateException if the images bytes are unavailable or can't be read */ public byte[] getBytes() { - try { - byte[] content = new byte[stream.available()]; - int read = stream.read(content); - if (read != content.length) { - throw new IllegalStateException("Unable to read image buffer"); - } - return content; - } catch (IOException e) { - throw new IllegalStateException("Unable to read image bytes", e); - } + return bytesSource.get(); } /** @@ -76,7 +67,7 @@ * @return An array of formatted PRINT lines */ public String[] getPrintLines() { - return printLines.toArray(new String[printLines.size()]); + return printLines.toArray(new String[0]); } /** @@ -95,11 +86,7 @@ * @throws IllegalStateException if the images bytes are unavailable */ public int getByteCount() { - try { - return stream.available(); - } catch (IOException e) { - throw new IllegalStateException("Unable to read image bytes", e); - } + return bytesCount.get(); } /** diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/Stack.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/Stack.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/Stack.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/Stack.java 2024-04-10 02:29:57.000000000 +0000 @@ -10,6 +10,7 @@ super(srcName, color, parent); } + @Override void assignValues(DataProcessor dproc) { double[] parentValues = parent.getValues(); double[] procValues = dproc.getValues(srcName); @@ -40,6 +41,7 @@ } } + @Override Paint getParentColor() { return parent.color; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxis.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxis.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxis.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxis.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,6 +2,8 @@ import java.awt.Font; import java.awt.Paint; +import java.math.BigDecimal; +import java.math.MathContext; import org.rrd4j.core.Util; @@ -106,6 +108,10 @@ } gridstep = selectedYLabel.grid * im.magfact; labfact = findLabelFactor(selectedYLabel); + if(labfact == -1) { + // as a fallback, use the largest label factor of the selected label + labfact = selectedYLabel.labelFacts[3]; + } } } else { @@ -116,13 +122,14 @@ int sgrid = (int) (im.minval / gridstep - 1); int egrid = (int) (im.maxval / gridstep + 1); double scaledstep = gridstep / im.magfact; + boolean fractional = isFractional(scaledstep, labfact); for (int i = sgrid; i <= egrid; i++) { int y = mapper.ytr(gridstep * i); if (y >= im.yorigin - im.ysize && y <= im.yorigin) { if (i % labfact == 0) { String graph_label; if (i == 0 || im.symbol == ' ') { - if (scaledstep < 1) { + if (fractional) { if (i != 0 && gdef.altYGrid) { graph_label = Util.sprintf(gdef.locale, labfmt, scaledstep * i); } @@ -135,7 +142,7 @@ } } else { - if (scaledstep < 1) { + if (fractional) { graph_label = Util.sprintf(gdef.locale, "%4.1f %c", scaledstep * i, im.symbol); } else { @@ -163,7 +170,7 @@ * If the graph covers positive and negative on the y-axis, then * desiredMinimumLabelCount is checked as well, to ensure the chosen YLabel definition * will result in the required number of labels - * + *

    * Returns null if none are acceptable (none the right size or with * enough labels) */ @@ -237,6 +244,18 @@ return range / im.magfact; } + /** + * Returns true if some or all labels have fractional part (other than zero). + */ + private static boolean isFractional(double scaledstep, int labfact) { + if (scaledstep >= 1) { + return false; + } + BigDecimal bd = BigDecimal.valueOf(scaledstep) + .multiply(BigDecimal.valueOf(labfact), MathContext.DECIMAL32); + return !(bd.signum() == 0 || bd.scale() <= 0 || bd.stripTrailingZeros().scale() <= 0); + } + static class YLabel { final double grid; final int[] labelFacts; diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxisLogarithmic.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxisLogarithmic.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxisLogarithmic.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueAxisLogarithmic.java 2024-04-10 02:29:57.000000000 +0000 @@ -43,7 +43,7 @@ if (im.maxval == im.minval) { return false; } - double pixpex = (double) im.ysize / (log10(im.maxval) - log10(im.minval)); + double pixpex = im.ysize / (log10(im.maxval) - log10(im.minval)); if (Double.isNaN(pixpex)) { return false; } diff -Nru i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueScaler.java i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueScaler.java --- i2p-2.4.0/apps/jrobin/java/src/org/rrd4j/graph/ValueScaler.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/jrobin/java/src/org/rrd4j/graph/ValueScaler.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,7 +2,7 @@ class ValueScaler { static final String UNIT_UNKNOWN = "?"; - static final String UNIT_SYMBOLS[] = { + static final String[] UNIT_SYMBOLS = { "a", "f", "p", "n", "u", "m", " ", "k", "M", "G", "T", "P", "E" }; static final int SYMB_CENTER = 6; @@ -55,8 +55,8 @@ } static class Scaled { - double value; - String unit; + final double value; + final String unit; public Scaled(double value, String unit) { this.value = value; diff -Nru i2p-2.4.0/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java i2p-2.5.0/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java --- i2p-2.4.0/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java 2024-04-10 02:29:57.000000000 +0000 @@ -117,6 +117,9 @@ case MessageStatusMessage.STATUS_SEND_FAILURE_META_LEASESET: return "Meta lease set"; + case MessageStatusMessage.STATUS_SEND_FAILURE_LOOPBACK: + return "local loopback denied, set i2cp.disableLoopback=true to test sending to yourself through tunnels"; + case SendMessageStatusListener.STATUS_CANCELLED: return _x("Local destination shutdown"); diff -Nru i2p-2.4.0/apps/ministreaming/locale/messages_ja.po i2p-2.5.0/apps/ministreaming/locale/messages_ja.po --- i2p-2.4.0/apps/ministreaming/locale/messages_ja.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/ministreaming/locale/messages_ja.po 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,95 @@ +# I2P +# Copyright (C) 2014 The I2P Project +# This file is distributed under the same license as the streaming package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# タカハシ, 2022 +# daingewuvzeevisiddfddd, 2021 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-03-29 14:30+0000\n" +"PO-Revision-Date: 2014-06-24 22:17+0000\n" +"Last-Translator: タカハシ, 2022\n" +"Language-Team: Japanese (http://app.transifex.com/otf/I2P/language/ja/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:69 +msgid "Message timeout" +msgstr "メッセージがタイムアウト" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:72 +msgid "Failed delivery to local destination" +msgstr "ローカルの宛先に届けられませんでした" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:75 +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:108 +msgid "Local router failure" +msgstr "ローカルルーターの失敗" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:78 +msgid "Local network failure" +msgstr "ローカルネットワークの失敗" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:81 +msgid "Session closed" +msgstr "セッションが閉じられました" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:84 +msgid "Invalid message" +msgstr "無効なメッセージ" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:87 +msgid "Invalid message options" +msgstr "無効なメッセージオプション" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:90 +msgid "Buffer overflow" +msgstr "バッファオーバーフロー" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:93 +msgid "Message expired" +msgstr "メッセージ有効期限切れ" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:96 +msgid "Local lease set invalid" +msgstr "ローカルリースセットが無効" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:99 +msgid "No local tunnels" +msgstr "ローカルにトンネルがありません" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:102 +msgid "Unsupported encryption options" +msgstr "サポートされていない暗号オプション" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:105 +msgid "Invalid destination" +msgstr "無効な宛先" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:111 +msgid "Destination lease set expired" +msgstr "宛先のリースセットが期限切れです" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:114 +msgid "Destination lease set not found" +msgstr "宛先のリースセットが見つかりませんでした" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:117 +msgid "Local destination shutdown" +msgstr "ローカルの宛先がシャットダウンしています" + +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:120 +msgid "Connection was reset" +msgstr "接続がリセットされました" + +#. Translate this one here, can't do it later +#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:127 +msgid "Failure code" +msgstr "失敗コード" diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java 2024-04-10 02:29:57.000000000 +0000 @@ -74,7 +74,7 @@ rv = true; Writer out = null; try { - out = new OutputStreamWriter(new GZIPOutputStream(new SecureFileOutputStream(file))); + out = new OutputStreamWriter(new GZIPOutputStream(new SecureFileOutputStream(file)), "UTF-8"); out.write(XML_START); XMLParser.toString(buf, entry); out.write(buf.toString()); diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java 2024-04-10 02:29:57.000000000 +0000 @@ -70,6 +70,9 @@ private long _newLastModified; private final File _newsFile; private final File _tempFile; + private final long _timeout; + private final boolean _showStatus; + private String _failMsg; /** is the news newer */ private boolean _isNewer; private boolean _success; @@ -80,14 +83,28 @@ static final String PROP_BLOCKLIST_TIME = "router.blocklistVersion"; private static final String BLOCKLIST_DIR = "docs/feed/blocklist"; private static final String BLOCKLIST_FILE = "blocklist.txt"; + private static final long DEFAULT_TIMEOUT = 60*1000; public NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List uris) { + this(ctx, mgr, uris, DEFAULT_TIMEOUT); + } + + /** + * @param timeout if less than 60 seconds, we assume this was manually initiated, + * and we will log status to the sidebar + * @since 0.9.62 + */ + public NewsFetcher(RouterContext ctx, ConsoleUpdateManager mgr, List uris, long timeout) { super(ctx, mgr, NEWS, uris); _newsFile = new File(ctx.getRouterDir(), NewsHelper.NEWS_FILE); _tempFile = new File(ctx.getTempDir(), "tmp-" + ctx.random().nextLong() + TEMP_NEWS_FILE); - long lastMod = NewsHelper.lastUpdated(ctx); - if (lastMod > 0) - _lastModified = RFC822Date.to822Date(lastMod); + _timeout = timeout; + _showStatus = timeout < DEFAULT_TIMEOUT; + if (!langChanged()) { + long lastMod = NewsHelper.lastUpdated(ctx); + if (lastMod > 0) + _lastModified = RFC822Date.to822Date(lastMod); + } } @Override @@ -140,7 +157,7 @@ long start = _context.clock().now(); // will be adjusted in headerReceived() below _newLastModified = start; - if (get.fetch()) { + if (get.fetch(_timeout)) { int status = get.getStatusCode(); if (status == 200 || status == 304) { Map opts = new HashMap(3); @@ -148,12 +165,39 @@ if (status == 200 && _isNewer) { String lastMod = Long.toString(_newLastModified); opts.put(NewsHelper.PROP_LAST_UPDATED, lastMod); + String lang = Translate.getLanguage(_context); + opts.put(NewsHelper.PROP_LAST_LANG, lang); if (_gotNewEntry) opts.put(NewsHelper.PROP_LAST_NEW_ENTRY, lastMod); } _context.router().saveConfig(opts, null); + if (_failMsg != null) { + // from checkForUpdates() + _mgr.notifyComplete(this, "" + _failMsg + ""); + } else if (_showStatus) { + if (status == 200) + _mgr.notifyComplete(this, "News updated from " + _currentURI.getHost()); + else + _mgr.notifyComplete(this, "No new news available from " + _currentURI.getHost()); + } return; } + } else { + int status = get.getStatusCode(); + String msg; + if (status == 504 || status <= 0) + msg = "Unable to connect to news server " + _currentURI.getHost(); + else if (status == 500) + msg = "News server " + _currentURI.getHost() + " not found in address book"; + else if (status == 404) + msg = "News file not found on news server at " + newsURL; + else + msg = status + " " + DataHelper.stripHTML(get.getStatusText()); + // only display if manually initiated + if (_showStatus) + updateStatus("" + msg + ""); + if (_log.shouldWarn()) + _log.warn(msg); } } catch (Throwable t) { _log.error("Error fetching the news", t); @@ -194,6 +238,17 @@ return uri; } } + + /** + * @since 0.9.62 + */ + private boolean langChanged() { + String old = _context.getProperty(NewsHelper.PROP_LAST_LANG); + if (old == null) + return false; + String lang = Translate.getLanguage(_context); + return !lang.equals(old); + } // Fake XML parsing // Line must contain this, and full entry must be on one line @@ -213,6 +268,7 @@ // unused //private static final String I2P_SUD_KEY = "sudi2p"; //private static final String I2P_SU2_KEY = "su2i2p"; + /** * @since 0.9.52 */ @@ -325,6 +381,7 @@ } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) _log.warn("Error checking the news for an update", ioe); + _failMsg = "Error checking the news for an update: " + ioe; return; } finally { if (in != null) try { in.close(); } catch (IOException ioe) {} @@ -486,9 +543,38 @@ _success = true; } - /** override to prevent status update */ + /** + * override for status update + * @since 0.9.62 + */ @Override - public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {} + public void attemptFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt, int numRetries, Exception cause) { + // only display if manually initiated + if (_showStatus) { + String msg = "Unable to connect to news server " + url + ": " + DataHelper.stripHTML(cause.toString()); + updateStatus("" + msg + ""); + if (_log.shouldWarn()) + _log.warn(msg); + } + // update manager will also log + _mgr.notifyAttemptFailed(this, url, null); + } + + /** + * override for status update + */ + @Override + public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) { + // only display if manually initiated + if (_showStatus) { + String msg = "Failed downloading news from " + url; + updateStatus("" + msg + ""); + if (_log.shouldWarn()) + _log.warn(msg); + } + // update manager will also log + _mgr.notifyAttemptFailed(this, url, null); + } /** * Process the fetched su3 news file _tempFile. diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/update/NewsHandler.java 2024-04-10 02:29:57.000000000 +0000 @@ -67,7 +67,7 @@ //updateSources.add(new URI(BACKUP_NEWS_URL)); updateSources.add(new URI(_context.getProperty(PROP_BACKUP_NEWS_URL_SU3, DEFAULT_BACKUP_NEWS_URL_SU3))); } catch (URISyntaxException use) {} - UpdateRunner update = new NewsFetcher(_context, _mgr, updateSources); + UpdateRunner update = new NewsFetcher(_context, _mgr, updateSources, maxTime); return update; } diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java 2024-04-10 02:29:57.000000000 +0000 @@ -27,6 +27,8 @@ public static final String PROP_LAST_UPDATED = "routerconsole.newsLastUpdated"; /** @since 0.9.55 */ public static final String PROP_LAST_NEW_ENTRY = "routerconsole.newsLastNewEntry"; + /** @since 0.9.62 */ + public static final String PROP_LAST_LANG = "routerconsole.newsLastLanguage"; /** * Default true * @since 0.9.21 diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java 2024-04-10 02:29:57.000000000 +0000 @@ -117,7 +117,8 @@ public void run() { deferredDeletePlugins(_context); if (_context.getBooleanPropertyDefaultTrue("plugins.autoUpdate") && - !NewsHelper.isUpdateInProgress()) { + !NewsHelper.isUpdateInProgress() && + !_context.commSystem().isDummy()) { String prev = _context.getProperty("router.previousVersion"); if (prev != null && VersionComparator.comp(RouterVersion.VERSION, prev) > 0) { diff -Nru i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java --- i2p-2.4.0/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/java/src/net/i2p/router/web/helpers/PeerHelper.java 2024-04-10 02:29:57.000000000 +0000 @@ -227,7 +227,7 @@ for (int idx = 0; idx < 8; idx += 4) { if (style.equals("NTCP") && idx == 0) continue; - if (style.equals("SSU") && idx == 0 && !_context.getBooleanProperty(TransportManager.PROP_ENABLE_SSU1)) + if (style.equals("SSU") && idx == 0) // && !_context.getBooleanProperty(TransportManager.PROP_ENABLE_SSU1)) continue; rows++; buf.append("") diff -Nru i2p-2.4.0/apps/routerconsole/jsp/dns.jsp i2p-2.5.0/apps/routerconsole/jsp/dns.jsp --- i2p-2.4.0/apps/routerconsole/jsp/dns.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/routerconsole/jsp/dns.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -25,6 +25,7 @@ <%@include file="css.jsi" %> <%=intl.title("Address Book")%> + <%@include file="summaryajax.jsi" %> + <%@include file="summaryajax.jsi" %> + <%@include file="summaryajax.jsi" %> + <%@include file="summaryajax.jsi" %> + diff -Nru i2p-2.4.0/apps/susidns/src/jsp/config.jsp i2p-2.5.0/apps/susidns/src/jsp/config.jsp --- i2p-2.4.0/apps/susidns/src/jsp/config.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susidns/src/jsp/config.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -37,6 +37,7 @@ <%=intl._t("configuration")%> - susidns + diff -Nru i2p-2.4.0/apps/susidns/src/jsp/details.jsp i2p-2.5.0/apps/susidns/src/jsp/details.jsp --- i2p-2.4.0/apps/susidns/src/jsp/details.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susidns/src/jsp/details.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -34,6 +34,7 @@ ${book.book} <%=intl._t("address book")%> - susidns + diff -Nru i2p-2.4.0/apps/susidns/src/jsp/index.jsp i2p-2.5.0/apps/susidns/src/jsp/index.jsp --- i2p-2.4.0/apps/susidns/src/jsp/index.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susidns/src/jsp/index.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -46,6 +46,7 @@ <%=intl._t("Introduction")%> - SusiDNS + diff -Nru i2p-2.4.0/apps/susidns/src/jsp/subscriptions.jsp i2p-2.5.0/apps/susidns/src/jsp/subscriptions.jsp --- i2p-2.4.0/apps/susidns/src/jsp/subscriptions.jsp 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susidns/src/jsp/subscriptions.jsp 2024-04-10 02:29:57.000000000 +0000 @@ -36,6 +36,7 @@ <%=intl._t("subscriptions")%> - susidns + diff -Nru i2p-2.4.0/apps/susimail/locale/messages_ar.po i2p-2.5.0/apps/susimail/locale/messages_ar.po --- i2p-2.4.0/apps/susimail/locale/messages_ar.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_ar.po 2024-04-10 02:29:57.000000000 +0000 @@ -9,126 +9,165 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" -"PO-Revision-Date: 2021-02-05 15:27+0000\n" -"Last-Translator: zzzi2p\n" -"Language-Team: Arabic (http://www.transifex.com/otf/I2P/language/ar/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: Tashigi OP, 2018\n" +"Language-Team: Arabic (http://app.transifex.com/otf/I2P/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "{0} رسالة جديدة" +msgstr[1] "{0} رسالة جديدة" +msgstr[2] "{0} رسائل جديدة" +msgstr[3] "{0} رسائل جديدة" +msgstr[4] "{0} رسائل جديدة" +msgstr[5] "{0} رسائل جديدة" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "البريد الإلكتروني." + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "لم يتم العثور على برنامج تشفير للتشفير \\''{0}\\''." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Fwd:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "المسودات" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "أُرسِل" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "سلة القمامة" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "البريد بالجملة" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "البريد الوارد" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "غير معروف" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "مجموعة اﻷحرف \\''{0}\\''  غير مدعوم." -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "الجزء ({0}) لا يظهر، بسبب {1}" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "تنزيل المرفق {0}" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "الملف مكتوب بصيغة ملف zip لأسباب أمنية." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "مرفق ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "يحتاج اسم المستخدم للإثبات." -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "يحتاج كلمة المرور للإثبات." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "يحتاج اسم المستضيف للاتصال." -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "تحتاج إلى رقم منفذ pop3 للاتصال ." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "رقم منفذ POP3 ليس في النطاق 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "رقم منفذ POP3 غير صالح." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "تحتاج إلى رقم منفذ smtp للاتصال ." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "رقم منفذ SMTP ليس في النطاق 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "رقم منفذ SMTP غير صالح." -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -140,79 +179,80 @@ msgid "Cannot connect" msgstr "لا يمكن الاتصال" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "خطأ في الاتصال بالخادم" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "تسجيل خروج المستخدم." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "تم حفظ المسودة." -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "غير قادر على حفظ البريد." -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "في {0} {1} كتب:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "خطأ في قراءة الملف الذي تم رفعه: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "بدء البريد المعاد" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "إنهاء البريد المعاد" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "لا يمكن جلب هيئة البريد." -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "معرف الرسالة غير صالح." -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "خطأ داخلي ، فقد الاتصال." -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "لم يتم العثور على تشفير {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "لم يتم العثور على المرفق." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "الرسالة غير موجودة." -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." @@ -223,36 +263,36 @@ msgstr[4] "{0} الرسائل المحذوفة." msgstr[5] "{0} الرسائل المحذوفة." -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "لم يتم تحديد الرسائل للحذف." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "تم حفظ التهيئة" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "رقم غير صالح لحجم الصفحة ، إعادة الضبط إلى القيمة الافتراضية." -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "تسجيل الدخول" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "تحميل رسائل البريد الإلكتروني، يرجى الانتظار..." -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" @@ -263,143 +303,133 @@ msgstr[4] "{0}الرسائل" msgstr[5] "{0} الرسائل" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "لا رسائل" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "اظهر الرسالة" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "رسالة جديدة" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "التهيئة." -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "البريد الإلكتروني." - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "{0} رسالة جديدة" -msgstr[1] "{0} رسالة جديدة" -msgstr[2] "{0} رسائل جديدة" -msgstr[3] "{0} رسائل جديدة" -msgstr[4] "{0} رسائل جديدة" -msgstr[5] "{0} رسائل جديدة" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "لا توجد رسائل جديدة" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "التحقق من رسائل البريد الإلكتروني الجديدة على الخادم" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "قم بتحديث الصفحة للحصول على التحديثات" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "إضافة مستخدم جديد" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "لا يوجد عنوان" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "لم يتم العثور على عنوان مرسل صالح." -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "لم يتم العثور على عنوان صالح في \\''{0}\\''." -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "لم يتم العثور على المستلمين." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "البريد الإلكتروني كبير جدًا، الحد الأقصى هو {0}" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "إرسال البريد." -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "خطأ في إرسال البريد" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "تم إرسال البريد." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "أرسل" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "حفظ كمسودة" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "الغاء" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "من" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "إلى" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Bcc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "عنوان" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "إضافة مرفق" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "المرفقات" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "احذف المرفقات المختارة" @@ -410,183 +440,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "البريد الإلكتروني تسجيل الدخول" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "المستخدم" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "كلمة السر" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "قراءة البريد دون اتصال" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "الإعدادات" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "إنشاء حساب" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "تعرف على بريد I2P" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "جديد" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "فحص البريد" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "تسجيل خروج" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "اختر للحذف" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "تاريخ" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "الحجم" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "الرسالة جديدة" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "تحتوي الرسالة على مرفق" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "الرسالة غير مرغوب فيها" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "هل تريد حذف الرسائل المحددة حقًا؟" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "نعم ، احذفها!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "احذف المختار" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "حدد الكل" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "امسح الكل" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "مجلد" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "التغيير إلى مجلد" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "اﻷول" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "السابق" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "صفحة {0} من {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "التالي" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "اﻷخير" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "هل تريد حذف هذه الرسالة حقًا؟" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "نعم ، احذفها!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "الرد" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "الرد على الجميع" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "إلى الأمام" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "احفظ كـ" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "حذف" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "انتقل إلى المجلد" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "العودة إلى المجلد" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "حجم صفحة المجلد" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "ضبط" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "التهيئة المتقدمة" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "حفظ التهيئة" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_az.po i2p-2.5.0/apps/susimail/locale/messages_az.po --- i2p-2.4.0/apps/susimail/locale/messages_az.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_az.po 2024-04-10 02:29:57.000000000 +0000 @@ -9,126 +9,161 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" -"PO-Revision-Date: 2021-02-05 15:27+0000\n" -"Last-Translator: zzzi2p\n" -"Language-Team: Azerbaijani (http://www.transifex.com/otf/I2P/language/az/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: Nikafn , 2018\n" +"Language-Team: Azerbaijani (http://app.transifex.com/otf/I2P/language/az/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: az\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "Email" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "Kodlaşdırma üçün heç bir kodlayıcı tapılmadı \\''{0}\\''." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Fwd:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Layihələr" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Göndər" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Sil" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "Qrup Email-i" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Daxil olanlar" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "Tanınmayan" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "Kodlaşdırma \\''{0}\\'' dəstəklənmir. " -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr " ({0}) səbəbindən {1} hissə göstərilmir" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Qoşmanı endir {0}" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Təhlükəsizlik məqsədi ilə fayl zip faylında saxlanılır." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Qoşma ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Təsdiqləmək üçün istifadəçi adı lazımdır." -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Təsdiqləmək üçün şifrə lazımdır." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Qoşulmaq üçün hostun adı lazımdır. " -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "Pop3 bağlantısı üçün port nömrəsinə ehtiyac var." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3 port nömrəsi 0..65535 aralığında deyil." -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3 port nömrəsi xətalıdır." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "Smtp əlaqəsi üçün port nömrəsinə ehtiyac var." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP port nömrəsi 0..65535 aralığında deyil. " -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP port nömrəsi xətalıdır. " -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -140,254 +175,249 @@ msgid "Cannot connect" msgstr "Qoşulmur " -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Serverə qoşulma xətası" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "İstifadəçi sistemdən çıxıb." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "Layihə saxlanıldı." -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "Məktubu saxlamaq alınmır." -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "{0} {1} -də yazılıb:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Yüklənilən faylların oxunma xətası: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "Məktubu yönləndirməyə başlat" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "məktubun yönləndirilməsini bitir " -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "Məktubu yükləmək mümkün olmadı." -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "İsmarışın id-si etibarsızdır." -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Daxili xəta, bağlantı kəsilib." -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "{0} üçün kodlama tapılmadı" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Qoşma tapılmadı." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "İsmarış tapılmadı." -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "" msgstr[1] "" -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "Silinmək üçün heç bir ismarış işarələnməyib." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Quraşdırma saxlandı" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Yanlış səhifə ölçüsünün nömrəsi, standart dəyərinə yeniləmək." -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Daxil ol" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "Email-lər yüklənir, lütfən gözləyin..." -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "" msgstr[1] "" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "İsmarış yoxdur" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "İsmarışı göstər" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Yeni ismarış" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Quraşdırma" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "Email" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "" -msgstr[1] "" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "Yeni ismarış yoxdur" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Serverdə yeni email-lərin yoxlanılması" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Yeniləmələr üçün səhifəni yeniləyin" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Yeni istifadəçi əlavə et" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "mövzu yoxdur" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "Etibarlı göndərici ünvanı tapmadı." -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "\\''{0}\\'' da etibarlı ünvan tapılmadı." -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "Heç bir qəbuledici tapılmadı." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "Email çox böyükdür, maksimum {0}" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "Məktub göndərilir." -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Email göndərilərkən xəta " -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Məktub göndərildi." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Göndər" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "Layihə kimi saxla" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Ləğv et" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Etibarən" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Qədər" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Bcc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Mövzu" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Qoşmanı əlavə et" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Qoşmalar" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Seçilmiş qoşmaları sil" @@ -398,183 +428,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Email girişi" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "İstifadəçi" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Şifrə" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Məktubu oflayn oxu" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Tənzimləmələr" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Hesab yarat" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "I2P məktub haqda öyrən" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Yeni" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Emaili yoxla" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Çıxış" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Silinmə üçün işarələ" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Tarix" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Ölçü" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "İsmarış yenidir" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "İsmarışın bir əlavəsi var" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "İsmarış spamdır" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "İşarələnmiş ismarışlar həqiqətən də silinsinmi?" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Bəli, həqiqətən onları silin!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Seçilənləri sil" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Hamısını işarələ" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Hamısını təmizlə" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Qovluq" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Qovluğu dəyişdir" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "İlk" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Əvvəlki" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "{0} səhifədən {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Növbəti" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Sonuncu" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "İsmarış həqiqətən də silinsinmi?" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Bəli, sil!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Cavab ver" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Hamısına cavab ver" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Forward" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "kimi Yadda saxla" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Sil" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "Qovluğa köçür" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Qovluğa qayıt" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Qovluq səhifə ölçüsü" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Quraşdır" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Yüksək quraşdırma" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Quraşdırmanı saxla" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_en.po i2p-2.5.0/apps/susimail/locale/messages_en.po --- i2p-2.4.0/apps/susimail/locale/messages_en.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_en.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P susimail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2010-06-15 14:09+0100\n" "Last-Translator: duck \n" "Language-Team: duck \n" @@ -18,129 +18,150 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" msgstr[0] "" msgstr[1] "" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -152,243 +173,249 @@ msgid "Cannot connect" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "" #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "" msgstr[1] "" -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "" msgstr[1] "" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "" @@ -396,183 +423,183 @@ #. String host = Config.getProperty(CONFIG_HOST, DEFAULT_HOST); #. String pop3 = Config.getProperty(CONFIG_PORTS_POP3, Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_es.po i2p-2.5.0/apps/susimail/locale/messages_es.po --- i2p-2.4.0/apps/susimail/locale/messages_es.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_es.po 2024-04-10 02:29:57.000000000 +0000 @@ -18,18 +18,18 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" "Last-Translator: Tracachang , 2023\n" -"Language-Team: Spanish (http://www.transifex.com/otf/I2P/language/es/)\n" +"Language-Team: Spanish (http://app.transifex.com/otf/I2P/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" @@ -37,121 +37,143 @@ msgstr[1] "{0} mensajes nuevos" msgstr[2] "{0} mensajes nuevos" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "Correo electrónico " -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Resp:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Reenv:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Borradores" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Enviado" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Papelera" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "Bulk Mail" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Bandeja de entrada" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "desconocido" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "juego de caracteres \\''{0}\\''no soportado." -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, 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:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Descargar adjunto {0}" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 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:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Adjunto ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Es necesario un nombre de usuario para la autentificación." -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Es necesaria una contraseña para la autenticación." -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Es necesario un nombre de host para la conexión." -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 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:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 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:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "El puerto POP3 no es válido." -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 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:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 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:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "El puerto SMTP no es válido." -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -163,79 +185,80 @@ msgid "Cannot connect" msgstr "No se pudo conectar" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Error conectando al servidor" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Usuario desconectado." -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "Borrador guardado" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "No se pudo guardar el correo" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "El {0} {1} escribió:" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Error al leer el archivo subido: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "comenzar correo reenviado" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "final del correo reenviado" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "No se pudo obtener el cuerpo del correo." -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "ID del mensaje no válida." -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Error interno, pérdida de conexión." -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "No se ha encontrado codificación para {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Adjunto no encontrado." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "Mensaje no encontrado." -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." @@ -243,36 +266,36 @@ msgstr[1] "{0} mensajes eliminados." msgstr[2] "{0} mensajes eliminados." -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "No hay mensajes marcados para su eliminación." -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "No se cambió el anfitrión. Edite el fichero de configuración {0} para cambiar de anfitrión." -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Configuración guardada" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 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:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Iniciar sesión" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "Cargando correos electrónicos, espere, por favor..." -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" @@ -280,128 +303,133 @@ msgstr[1] "{0} Mensajes" msgstr[2] "{0} Mensajes" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "No hay mensajes" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Mostrar mensaje" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Nuevo mensaje" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Configuración" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "No hay mensajes nuevos" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Comprobando si hay correos electrónicos nuevos en el servidor" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Actualice la página para actualizar" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Añadir nuevo usuario" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "sin asunto" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 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:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, 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:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "No se han encontrado destinatarios." -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "El correo es demasiado largo, el máximo es {0}" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "Enviando correo" -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Error enviando correo" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Correo enviado." -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Enviar" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "Guardar borrador" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Cancelar" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "De" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "A" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Cco" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Asunto" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Añadir adjunto" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Adjuntos" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Borrar adjuntos seleccionados" @@ -412,183 +440,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Correo de inicio de sesión " #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Usuario" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Contraseña" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Leer correo desconectado" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Configuraciones" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Crear una cuenta" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "Aprende sobre I2P mail" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Nuevo" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Comprobar correo" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Desconectarse" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Marcar para borrado" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Fecha" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Tamaño" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "El mensaje es nuevo" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "El mensaje tiene un adjunto" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "El mensaje es spam" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "¿Realmente deseas borrar los mensajes marcados?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Sí, realmente eliminarlos!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Borrar seleccionados" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Marcar todos" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Borrar todos" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Carpeta" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Cambiar de carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "Primero" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Anterior" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Página {0} de {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Siguiente" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Última" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "¿Realmente deseas borrar este mensaje?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Sí, ¡bórralo!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Responder" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Responder a todos" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Reenviar" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Guardar como" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Eliminar" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "Trasladar a carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Volver a la carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Tamaño de página de la carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Establecer" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Configuración avanzada" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Guardar configuración" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_es_AR.po i2p-2.5.0/apps/susimail/locale/messages_es_AR.po --- i2p-2.4.0/apps/susimail/locale/messages_es_AR.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_es_AR.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" "Last-Translator: duck \n" "Language-Team: Spanish (Argentina) (http://app.transifex.com/otf/I2P/language/es_AR/)\n" @@ -18,8 +18,8 @@ "Language: es_AR\n" "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" @@ -27,121 +27,143 @@ msgstr[1] "{0} mensajes nuevos" msgstr[2] "{0} mensajes nuevos" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "Email" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Reenv:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Borradores" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Enviar" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Papelera" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "Bulk Mail" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Bandeja de entrada" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "desconocido" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "juego de caracteres \\''{0}\\''no soportado." -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, 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:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Descargar adjunto {0}" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 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:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Adjunto ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Es necesario un nombre de usuario para la autentificación." -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Es necesaria una contraseña para la autenticación." -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Es necesario un nombre de host para la conexión." -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 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:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 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:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "El puerto POP3 no es válido." -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 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:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 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:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "El puerto SMTP no es válido." -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -153,79 +175,80 @@ msgid "Cannot connect" msgstr "No se pudo conectar" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Error al conectar al servidor" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Usuario desconectado." -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "Borrador guardado" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "No se pudo guardar el correo" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "El {0} {1} escribió:" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Error al leer el archivo subido: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "comenzar correo reenviado" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "final del correo reenviado" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "No se pudo obtener el cuerpo del correo." -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "ID del mensaje no válida." -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Error interno, pérdida de conexión." -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "No se ha encontrado codificación para {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Adjunto no encontrado." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "Mensaje no encontrado." -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." @@ -233,36 +256,36 @@ msgstr[1] "{0} mensajes eliminados." msgstr[2] "{0} mensajes eliminados." -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "No hay mensajes marcados para su eliminación." -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "No se cambió el servidor. Edite el fichero de configuración {0} para cambiar de servidor." -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Configuración guardada" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 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:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Iniciar sesión" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "Cargando correos electrónicos, espere, por favor..." -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" @@ -270,128 +293,133 @@ msgstr[1] "{0} Mensajes" msgstr[2] "{0} Mensajes" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "No hay mensajes" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Mostrar mensaje" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Nuevo mensaje" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Configuración" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "No hay mensajes nuevos" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Comprobando si hay correos electrónicos nuevos en el servidor" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Actualice la página para actualizar" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Añadir nuevo usuario" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "sin asunto" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 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:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, 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:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "No se han encontrado destinatarios." -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "El correo es demasiado largo, el máximo es {0}" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "Enviando correo" -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Error enviando correo" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Correo enviado." -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Enviar" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "Guardar borrador" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Cancelar" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Desde" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Para" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Cco" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Asunto" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Añadir adjunto" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Adjuntos" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Borrar adjuntos seleccionados" @@ -402,183 +430,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Correo de inicio de sesión " #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Usuario" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Contraseña" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Leer correo desconectado" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Ajustes" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Crear cuenta" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "Aprende sobre I2P mail" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Nuevo" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Comprobar correo " #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Cerrar sesión" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Marcar para borrado" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Fecha" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Talle" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "El mensaje es nuevo" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "El mensaje tiene un adjunto" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "El mensaje es spam" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "¿Realmente deseas borrar los mensajes marcados?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Sí, realmente eliminarlos!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Borrar seleccionados" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Marcar todos" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Borrar todos" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Carpeta" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Cambiar de carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "Primera" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Anterior" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Página {0} de {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Siguiente" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Última" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "¿Realmente deseas borrar este mensaje?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Sí, ¡bórralo!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Responder" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Responder a todos" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Reenviar" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Guardar como" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Borrar" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "Trasladar a carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Volver a la carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Tamaño de página de la carpeta" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Establecer" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Configuración avanzada" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Guardar configuración" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_et.po i2p-2.5.0/apps/susimail/locale/messages_et.po --- i2p-2.4.0/apps/susimail/locale/messages_et.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_et.po 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,614 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: duck \n" +"Language-Team: Estonian (Estonia) (http://app.transifex.com/otf/I2P/language/et_EE/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et_EE\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/src/i2p/susi/webmail/MailCache.java:529 +#: src/src/i2p/susi/webmail/WebMail.java:2414 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/MailCache.java:532 +#: src/src/i2p/susi/webmail/WebMail.java:2337 +msgid "Email" +msgstr "E-post" + +#: src/src/i2p/susi/webmail/MailPart.java:321 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "" + +#. tagged in WebMail +#: src/src/i2p/susi/webmail/Sorters.java:124 +#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1179 +msgid "Re:" +msgstr "" + +#: src/src/i2p/susi/webmail/Sorters.java:125 +#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1259 +msgid "Fwd:" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:214 +msgid "Drafts" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:215 +msgid "Sent" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:216 +msgid "Trash" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:217 +msgid "Bulk Mail" +msgstr "" + +#. untranslated, translate on use +#: src/src/i2p/susi/webmail/WebMail.java:221 +msgid "Inbox" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:541 +msgid "unknown" +msgstr "tundmatu" + +#: src/src/i2p/susi/webmail/WebMail.java:590 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:594 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:644 +#: src/src/i2p/susi/webmail/WebMail.java:649 +#, java-format +msgid "Download attachment {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:650 +msgid "File is packed into a zipfile for security reasons." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:655 +#, java-format +msgid "Attachment ({0})." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:715 +msgid "Need username for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:719 +msgid "Need password for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:723 +msgid "Need hostname for connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:728 +msgid "Need port number for pop3 connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:735 +msgid "POP3 port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:741 +msgid "POP3 port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:747 +msgid "Need port number for smtp connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:754 +msgid "SMTP port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:760 +msgid "SMTP port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:837 +#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:716 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:762 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:243 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:258 +msgid "Cannot connect" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 +msgid "Error connecting to server" +msgstr "" + +#. _t("Internal error, lost connection.") + '\n' + +#: src/src/i2p/susi/webmail/WebMail.java:977 +#: src/src/i2p/susi/webmail/WebMail.java:991 +msgid "User logged out." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1042 +msgid "Draft saved." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1052 +#: src/src/i2p/susi/webmail/WebMail.java:1293 +#: src/src/i2p/susi/webmail/WebMail.java:2729 +#: src/src/i2p/susi/webmail/WebMail.java:2910 +msgid "Unable to save mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1182 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1245 +#: src/src/i2p/susi/webmail/WebMail.java:1472 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1271 +msgid "begin forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1281 +msgid "end forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1299 +#: src/src/i2p/susi/webmail/WebMail.java:3492 +msgid "Could not fetch mail body." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1331 +msgid "Message id not valid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1376 +msgid "Internal error, lost connection." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 +#, java-format +msgid "No Encoding found for {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Attachment not found." +msgstr "" + +#. error if we get here +#: src/src/i2p/susi/webmail/WebMail.java:1628 +#: src/src/i2p/susi/webmail/WebMail.java:1630 +#: src/src/i2p/susi/webmail/WebMail.java:2321 +#: src/src/i2p/susi/webmail/WebMail.java:3496 +msgid "Message not found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1733 +#, java-format +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/WebMail.java:1735 +#: src/src/i2p/susi/webmail/WebMail.java:1744 +msgid "No messages marked for deletion." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1809 +#, java-format +msgid "Host unchanged. Edit configuration file {0} to change host." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1829 +msgid "Configuration saved" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1851 +msgid "Invalid pagesize number, resetting to default value." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2299 +#: src/src/i2p/susi/webmail/WebMail.java:3108 +msgid "Login" +msgstr "Logi sisse" + +#: src/src/i2p/susi/webmail/WebMail.java:2301 +#: src/src/i2p/susi/webmail/WebMail.java:2428 +#: src/src/i2p/susi/webmail/WebMail.java:3125 +msgid "Loading emails, please wait..." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2309 +#, java-format +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/WebMail.java:2311 +#: src/src/i2p/susi/webmail/WebMail.java:3268 +msgid "No messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2319 +msgid "Show Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2324 +msgid "New Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2326 +msgid "Configuration" +msgstr "Häälestus" + +#: src/src/i2p/susi/webmail/WebMail.java:2417 +msgid "No new messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2430 +msgid "Checking for new emails on server" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2432 +#: src/src/i2p/susi/webmail/WebMail.java:3127 +msgid "Refresh the page for updates" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2637 +#: src/src/i2p/susi/webmail/WebMail.java:3227 +#: src/src/i2p/susi/webmail/WebMail.java:3468 +msgid "no subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2765 +msgid "Found no valid sender address." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2771 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2785 +msgid "No recipients found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 +#, java-format +msgid "Email is too large, max is {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2842 +#: src/src/i2p/susi/webmail/WebMail.java:2923 +msgid "Sending mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 +msgid "Error sending mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2881 +msgid "Mail sent." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2973 +msgid "Send" +msgstr "Saada" + +#: src/src/i2p/susi/webmail/WebMail.java:2974 +msgid "Save as Draft" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2975 +#: src/src/i2p/susi/webmail/WebMail.java:3283 +#: src/src/i2p/susi/webmail/WebMail.java:3386 +#: src/src/i2p/susi/webmail/WebMail.java:3548 +msgid "Cancel" +msgstr "Tühista" + +#: src/src/i2p/susi/webmail/WebMail.java:3062 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +msgid "From" +msgstr "Kust" + +#: src/src/i2p/susi/webmail/WebMail.java:3063 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3476 +msgid "To" +msgstr "Kuhu" + +#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3480 +msgid "Cc" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3065 +msgid "Bcc" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3066 +#: src/src/i2p/susi/webmail/WebMail.java:3181 +#: src/src/i2p/susi/webmail/WebMail.java:3473 +msgid "Subject" +msgstr "Teema" + +#: src/src/i2p/susi/webmail/WebMail.java:3069 +msgid "Add Attachment" +msgstr "Lisage manus" + +#: src/src/i2p/susi/webmail/WebMail.java:3075 +msgid "Attachments" +msgstr "Manused" + +#: src/src/i2p/susi/webmail/WebMail.java:3084 +msgid "Delete selected attachments" +msgstr "" + +#. boolean fixed = Boolean.parseBoolean(Config.getProperty( +#. CONFIG_PORTS_FIXED, "true" )); +#. String host = Config.getProperty(CONFIG_HOST, DEFAULT_HOST); +#. String pop3 = Config.getProperty(CONFIG_PORTS_POP3, +#. Integer.toString(DEFAULT_POP3PORT)); +#. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, +#. Integer.toString(DEFAULT_SMTPPORT)); +#: src/src/i2p/susi/webmail/WebMail.java:3101 +msgid "Email Login" +msgstr "" + +#. current postman hq length limits 16/12, new postman version 32/32 +#: src/src/i2p/susi/webmail/WebMail.java:3103 +msgid "User" +msgstr "Kasutaja" + +#: src/src/i2p/susi/webmail/WebMail.java:3104 +msgid "Password" +msgstr "Parool" + +#: src/src/i2p/susi/webmail/WebMail.java:3109 +msgid "Read Mail Offline" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3113 +#: src/src/i2p/susi/webmail/WebMail.java:3302 +msgid "Settings" +msgstr "Seaded" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Create Account" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Learn about I2P mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3140 +#: src/src/i2p/susi/webmail/WebMail.java:3410 +msgid "New" +msgstr "Uus" + +#: src/src/i2p/susi/webmail/WebMail.java:3150 +msgid "Check Mail" +msgstr "" + +#. if (Config.hasConfigFile()) +#. out.println(button( RELOAD, _t("Reload Config") ) + spacer); +#: src/src/i2p/susi/webmail/WebMail.java:3161 +#: src/src/i2p/susi/webmail/WebMail.java:3422 +#: src/src/i2p/susi/webmail/WebMail.java:3550 +msgid "Logout" +msgstr "Logi välja" + +#: src/src/i2p/susi/webmail/WebMail.java:3179 +msgid "Mark for deletion" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3182 +#: src/src/i2p/susi/webmail/WebMail.java:3483 +msgid "Date" +msgstr "Kuupäev" + +#: src/src/i2p/susi/webmail/WebMail.java:3184 +msgid "Size" +msgstr "Maht" + +#: src/src/i2p/susi/webmail/WebMail.java:3231 +msgid "Message is new" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3258 +msgid "Message has an attachment" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3260 +msgid "Message is spam" +msgstr "" + +#. TODO ngettext +#: src/src/i2p/susi/webmail/WebMail.java:3281 +msgid "Really delete the marked messages?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3282 +msgid "Yes, really delete them!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3285 +msgid "Delete Selected" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3287 +msgid "Mark All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3289 +msgid "Clear All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3314 +msgid "Folder" +msgstr "" + +#. TODO css to center it +#: src/src/i2p/susi/webmail/WebMail.java:3315 +msgid "Change to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3321 +msgid "First" +msgstr "Esimene" + +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3434 +msgid "Previous" +msgstr "Eelmine" + +#: src/src/i2p/susi/webmail/WebMail.java:3331 +#, java-format +msgid "Page {0} of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3449 +msgid "Next" +msgstr "Edasi" + +#: src/src/i2p/susi/webmail/WebMail.java:3334 +msgid "Last" +msgstr "Viimane" + +#: src/src/i2p/susi/webmail/WebMail.java:3384 +msgid "Really delete this message?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3385 +msgid "Yes, really delete it!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3413 +msgid "Reply" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3414 +msgid "Reply All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3415 +msgid "Forward" +msgstr "Edasi" + +#: src/src/i2p/susi/webmail/WebMail.java:3416 +msgid "Save As" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3418 +#: src/src/i2p/susi/webmail/WebMail.java:3420 +msgid "Delete" +msgstr "Kustuta" + +#. can't move unless has body +#. can't move from drafts +#: src/src/i2p/susi/webmail/WebMail.java:3426 +msgid "Move to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3446 +msgid "Back to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3531 +msgid "Folder Page Size" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3534 +msgid "Set" +msgstr "Määra" + +#: src/src/i2p/susi/webmail/WebMail.java:3537 +msgid "Advanced Configuration" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3547 +msgid "Save Configuration" +msgstr "" + +#. this appears in the UI so translate +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:108 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:936 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:978 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1199 +msgid "No response from server" +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:747 +msgid "Mail server login failed, wrong username or password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:749 +msgid "Logout and then login again with the correct username and password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1238 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1240 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:314 +msgid "Login failed" +msgstr "" + +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:256 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:285 +msgid "Server refused connection" +msgstr "" + +#. TODO which recipient? +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:327 +msgid "Mail rejected" +msgstr "" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_fa.po i2p-2.5.0/apps/susimail/locale/messages_fa.po --- i2p-2.4.0/apps/susimail/locale/messages_fa.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_fa.po 2024-04-10 02:29:57.000000000 +0000 @@ -10,126 +10,161 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" -"PO-Revision-Date: 2021-02-05 15:27+0000\n" -"Last-Translator: zzzi2p\n" -"Language-Team: Persian (http://www.transifex.com/otf/I2P/language/fa/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: Reza Ghasemi, 2019\n" +"Language-Team: Persian (http://app.transifex.com/otf/I2P/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fa\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "{0} پیام جدید" +msgstr[1] "{0} پیام جدید" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "پست الکترونیکی" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "پاسخ:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "هدایت:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "پیش‌نویس‌ها" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "ارسال شد" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "سطل زباله" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "اینباکس" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "ناشناخته" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "دانلود پیوست {0}" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "فایل به دلایل امنیتی در یک فایل زیپ قرار گرفته است." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "پیوست ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "نیاز به نام کاربر برای احراز هویت." -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "نیاز به گذرواژه برای احراز هویت." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "نیاز به نام میزبان برای اتصال." -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "نیاز به شماره پورت برای اتصال pop3." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "شماره پورت POP3 در محدوده 0..65535 نیست." -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "شماره پورت POP3 نامعتبر است." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "نیاز به شماره پورت برای اتصال smtp." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "شماره پورت SMTP در محدوده 0..65535 نیست." -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "شماره پورت SMTP معتبر نمی باشد." -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -141,254 +176,249 @@ msgid "Cannot connect" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "خطا در اتصال به سرور" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "کاربر خارج شد." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "پیشنویس ذخیره شد." -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "عدم توانایی در ذخیره سازی ایمیل." -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "روی {0} {1} نوشت:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "شروع ایمیل ارسالی" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "پایان ایمیل ارسالی" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "شناسه پیام معتبر نیست." -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "پیوست یافت نشد." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "پیام یافت نشد." -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "1 پیام حذف شد." msgstr[1] "{0} پیام حذف شد." -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "هیچ پیامی برای حذف علامت زده نشد." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "پیکربندی ذخیره شد" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "ورود" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "بارگذاری ایمیل ها، لطفا صبر کنید..." -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "1 پیام" msgstr[1] "{0} پیام ها" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "هیچ پیام" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "نمایش پیام" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "پیام جدید" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "پیکربندی" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "پست الکترونیکی" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "{0} پیام جدید" -msgstr[1] "{0} پیام جدید" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "هیچ پیام جدید" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "بررسی برای ایمیل های جدید روی سرور" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "تازه سازی صفحه برای بروزرسانی ها" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "افزودن کاربر جدید" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "بدون موضوع" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "هیچ آدرس ارسال کننده معتبری یافت نشد" -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "هیچ گیرنده ای یافت نشد." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "ارسال ایمیل." -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "خطا در ارسال ایمیل" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "ایمیل ارسال شد." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "ارسال" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "ذخیره سازی به صورت پیشنویس" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "لغو کردن" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "از" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "به" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "موضوع" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "افزودن پیوست" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "پیوست ها " -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "حذف پیوست های انتخاب شده" @@ -399,183 +429,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "لاگین ایمیل" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "کاربر" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "رمز عبور" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "خواندن ایمیل به صورت آفلاین" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "تنظیمات" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "ایجاد حساب کاربری" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "یادگیری درباره ایمیل I2P" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "جدید" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "بررسی ایمیل" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "خروج" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "علامت دهی برای حذف" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "تاریخ" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "اندازه" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "پیام جدید می باشد" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "پیام دارای یک پیوست است" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "پیام اسپم می باشد" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "حذف پیام های علامت زده شده؟" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "بله، آن ها را پاک کن!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "حذف انتخاب شده" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "علامت زدن همه" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "پاک کردن همه" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "پوشه" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "تغییر به پوشه" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "اولین" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "قبلی" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "صفحه {0} از {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "بعدی" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "آخرین" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "این پیام حذف شود؟" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "بله، حذف کن!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "پاسخ" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "پاسخ همه" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "به سمت جلو" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Save As" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "پاک کردن" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "اندازه صفحه پوشه" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "تنظیم" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "پیکربندی پیشرفته" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "ذخیره سازی پیکربندی" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_ja.po i2p-2.5.0/apps/susimail/locale/messages_ja.po --- i2p-2.4.0/apps/susimail/locale/messages_ja.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_ja.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,7 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# daingewuvzeevisiddfddd, 2022-2023 +# daingewuvzeevisiddfddd, 2022-2024 # タカハシ, 2014 # rafe , 2015 # daingewuvzeevisiddfddd, 2021 @@ -14,9 +14,9 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" -"Last-Translator: daingewuvzeevisiddfddd, 2022-2023\n" +"Last-Translator: daingewuvzeevisiddfddd, 2022-2024\n" "Language-Team: Japanese (http://app.transifex.com/otf/I2P/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,128 +24,150 @@ "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" msgstr[0] "{0} 件の新着メッセージ" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "メール" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr " \\''{0}\\'' のエンコード用のエンコーダーが見つかりませんでした。" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Fwd:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "下書き" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "送信済み" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "ごみ箱" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "迷惑メール" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "受信ボックス" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "HTMLとしてメールを表示" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "プレーンテキストとしてメールを表示" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "不明" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "プライバシーを保護するため、SusiMailはこのメッセージ内の遠隔コンテンツを遮断しています。" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "このメッセージの表示を改善するには、javascriptを有効にしてください。" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "文字セット \\''{0}\\'' はサポートされていません。" -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "パート ({0}) が表示されませ、 {1} のためです。" -#: src/src/i2p/susi/webmail/WebMail.java:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "添付 {0} をダウンロードする" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "ファイルはセキュリティ上の理由から zip ファイルにパックされています。" -#: src/src/i2p/susi/webmail/WebMail.java:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "添付 ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "認証にはユーザー名が必要です。" -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "ユーザー名に @mail.i2p を含めないでください" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "認証にはパスワードが必要です。" -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "接続にはホスト名が必要です。" -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "pop3 接続にはポート番号が必要です。" -#: src/src/i2p/susi/webmail/WebMail.java:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3 ポート番号が0..65535の範囲にありません。" -#: src/src/i2p/susi/webmail/WebMail.java:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3 のポート番号は無効です。" -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "smtp 接続にはポート番号が必要です。" -#: src/src/i2p/susi/webmail/WebMail.java:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP ポート番号が0..65535の範囲にありません。" -#: src/src/i2p/susi/webmail/WebMail.java:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP ポート番号は無効です。" -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -157,241 +179,247 @@ msgid "Cannot connect" msgstr "接続できません。" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "サーバーに接続することができませんでした" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "ユーザーはログアウトしました。" -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "下書きを保存しました。" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "メールを保存できません。" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "{0}に {1}が書きました:" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "アップロードされたファイルを読込中にエラー: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "転送メールを開始" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "転送メールを終了" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "メール本文を取得できませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "メッセージIDが有効でありません。" -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "内部エラー、接続が失われました。" -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "{0} にエンコーディングが見つかりませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "添付ファイルが見つかりません。" #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "メッセージが見つかりませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "{0} 件のメッセージ削除。" -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "削除にマークされているメッセージなし。" -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "ホストは変更されていません。ホストを変更するために、設定ファイル {0} を編集してください。" -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "設定が保存されました" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "無効なページサイズ番号、デフォルトの値にリセット中" -#: src/src/i2p/susi/webmail/WebMail.java:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "ログイン" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "メールの読み込み中、少々お待ちください..." -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "{0} 件のメッセージ" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "本文がありません" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "メッセージを表示" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "新着メッセージ" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "設定" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "新着メッセージなし" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "サーバー上の新しいメッセージの確認中" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "更新のためにページを更新" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "新規ユーザーを追加" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "無題" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "有効な差出人アドレスが見つかりませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "\\''{0}\\'' に有効なアドレスが見つかりませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "受信者が見つかりませんでした。" -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "Eメールが大きすぎます、最大は{0}です" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "メールを送信中。" -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "メールを送信できませんでした" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "メールが送信されました。" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "送信" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "下書きに保存" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "キャンセル" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "差出人" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "宛先" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Bcc" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "件名" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "ファイルを添付する" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "添付ファイル" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "選択した添付ファイルを削除する" @@ -402,183 +430,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Eメールにログイン" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "ユーザー" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "パスワード" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "メールをオフラインで読む" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "設定" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "アカウントを作成" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "I2P メールについて知る" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "新規" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "メールを確認" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "ログアウト" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "削除にマーク" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "日付" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "サイズ" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "新着メールです" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "添付ファイルがあります" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "迷惑メールです" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "本当にマークされたメッセージを削除しますか?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "はい、本当に削除します!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "選択したものを削除" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "全てマーク" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "全てクリア" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "フォルダー" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "フォルダーへ変更" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "最初" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "前へ" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "ページ {0} / {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "次へ" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "最終" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "本当にこのメッセージを削除しますか?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "はい、本当に削除します!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "返信" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "全て返信" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "転送" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "名前を付けて保存" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "削除" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "フォルダーへ移動" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "フォルダーに戻る" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" -msgstr "フォルダーのページサイズ" +msgstr "フォルダーページの大きさ" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "設定" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "高度な設定" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "設定を保存する" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_ku.po i2p-2.5.0/apps/susimail/locale/messages_ku.po --- i2p-2.4.0/apps/susimail/locale/messages_ku.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_ku.po 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,615 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# Zagros, 2020 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: Zagros, 2020\n" +"Language-Team: Kurdish (http://app.transifex.com/otf/I2P/language/ku/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ku\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/src/i2p/susi/webmail/MailCache.java:529 +#: src/src/i2p/susi/webmail/WebMail.java:2414 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/MailCache.java:532 +#: src/src/i2p/susi/webmail/WebMail.java:2337 +msgid "Email" +msgstr "پۆستی ئەلیکترۆنی" + +#: src/src/i2p/susi/webmail/MailPart.java:321 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "" + +#. tagged in WebMail +#: src/src/i2p/susi/webmail/Sorters.java:124 +#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1179 +msgid "Re:" +msgstr "" + +#: src/src/i2p/susi/webmail/Sorters.java:125 +#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1259 +msgid "Fwd:" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:214 +msgid "Drafts" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:215 +msgid "Sent" +msgstr "ڕۆشتوو" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:216 +msgid "Trash" +msgstr "زبڵدان" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:217 +msgid "Bulk Mail" +msgstr "" + +#. untranslated, translate on use +#: src/src/i2p/susi/webmail/WebMail.java:221 +msgid "Inbox" +msgstr "هاتوو" + +#: src/src/i2p/susi/webmail/WebMail.java:541 +msgid "unknown" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:590 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:594 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:644 +#: src/src/i2p/susi/webmail/WebMail.java:649 +#, java-format +msgid "Download attachment {0}" +msgstr "هاوپێچ دابگرە {0}" + +#: src/src/i2p/susi/webmail/WebMail.java:650 +msgid "File is packed into a zipfile for security reasons." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:655 +#, java-format +msgid "Attachment ({0})." +msgstr "هاوپێچ ({0})." + +#: src/src/i2p/susi/webmail/WebMail.java:715 +msgid "Need username for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:719 +msgid "Need password for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:723 +msgid "Need hostname for connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:728 +msgid "Need port number for pop3 connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:735 +msgid "POP3 port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:741 +msgid "POP3 port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:747 +msgid "Need port number for smtp connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:754 +msgid "SMTP port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:760 +msgid "SMTP port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:837 +#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:716 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:762 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:243 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:258 +msgid "Cannot connect" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 +msgid "Error connecting to server" +msgstr "" + +#. _t("Internal error, lost connection.") + '\n' + +#: src/src/i2p/susi/webmail/WebMail.java:977 +#: src/src/i2p/susi/webmail/WebMail.java:991 +msgid "User logged out." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1042 +msgid "Draft saved." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1052 +#: src/src/i2p/susi/webmail/WebMail.java:1293 +#: src/src/i2p/susi/webmail/WebMail.java:2729 +#: src/src/i2p/susi/webmail/WebMail.java:2910 +msgid "Unable to save mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1182 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1245 +#: src/src/i2p/susi/webmail/WebMail.java:1472 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1271 +msgid "begin forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1281 +msgid "end forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1299 +#: src/src/i2p/susi/webmail/WebMail.java:3492 +msgid "Could not fetch mail body." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1331 +msgid "Message id not valid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1376 +msgid "Internal error, lost connection." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 +#, java-format +msgid "No Encoding found for {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Attachment not found." +msgstr "هاوپێچ نەدۆزرایەوە." + +#. error if we get here +#: src/src/i2p/susi/webmail/WebMail.java:1628 +#: src/src/i2p/susi/webmail/WebMail.java:1630 +#: src/src/i2p/susi/webmail/WebMail.java:2321 +#: src/src/i2p/susi/webmail/WebMail.java:3496 +msgid "Message not found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1733 +#, java-format +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/WebMail.java:1735 +#: src/src/i2p/susi/webmail/WebMail.java:1744 +msgid "No messages marked for deletion." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1809 +#, java-format +msgid "Host unchanged. Edit configuration file {0} to change host." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1829 +msgid "Configuration saved" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1851 +msgid "Invalid pagesize number, resetting to default value." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2299 +#: src/src/i2p/susi/webmail/WebMail.java:3108 +msgid "Login" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2301 +#: src/src/i2p/susi/webmail/WebMail.java:2428 +#: src/src/i2p/susi/webmail/WebMail.java:3125 +msgid "Loading emails, please wait..." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2309 +#, java-format +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "" +msgstr[1] "" + +#: src/src/i2p/susi/webmail/WebMail.java:2311 +#: src/src/i2p/susi/webmail/WebMail.java:3268 +msgid "No messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2319 +msgid "Show Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2324 +msgid "New Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2326 +msgid "Configuration" +msgstr "شێوەپێدان" + +#: src/src/i2p/susi/webmail/WebMail.java:2417 +msgid "No new messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2430 +msgid "Checking for new emails on server" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2432 +#: src/src/i2p/susi/webmail/WebMail.java:3127 +msgid "Refresh the page for updates" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2637 +#: src/src/i2p/susi/webmail/WebMail.java:3227 +#: src/src/i2p/susi/webmail/WebMail.java:3468 +msgid "no subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2765 +msgid "Found no valid sender address." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2771 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2785 +msgid "No recipients found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 +#, java-format +msgid "Email is too large, max is {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2842 +#: src/src/i2p/susi/webmail/WebMail.java:2923 +msgid "Sending mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 +msgid "Error sending mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2881 +msgid "Mail sent." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2973 +msgid "Send" +msgstr "ناردن" + +#: src/src/i2p/susi/webmail/WebMail.java:2974 +msgid "Save as Draft" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2975 +#: src/src/i2p/susi/webmail/WebMail.java:3283 +#: src/src/i2p/susi/webmail/WebMail.java:3386 +#: src/src/i2p/susi/webmail/WebMail.java:3548 +msgid "Cancel" +msgstr "وازهێنان" + +#: src/src/i2p/susi/webmail/WebMail.java:3062 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +msgid "From" +msgstr "لە" + +#: src/src/i2p/susi/webmail/WebMail.java:3063 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3476 +msgid "To" +msgstr "بۆ" + +#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3480 +msgid "Cc" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3065 +msgid "Bcc" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3066 +#: src/src/i2p/susi/webmail/WebMail.java:3181 +#: src/src/i2p/susi/webmail/WebMail.java:3473 +msgid "Subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3069 +msgid "Add Attachment" +msgstr "هاوپێچ زیادبکە" + +#: src/src/i2p/susi/webmail/WebMail.java:3075 +msgid "Attachments" +msgstr "هاوپێچەکان" + +#: src/src/i2p/susi/webmail/WebMail.java:3084 +msgid "Delete selected attachments" +msgstr "هاوپێچە دەستنیشانکراوەکان بسڕەوە" + +#. boolean fixed = Boolean.parseBoolean(Config.getProperty( +#. CONFIG_PORTS_FIXED, "true" )); +#. String host = Config.getProperty(CONFIG_HOST, DEFAULT_HOST); +#. String pop3 = Config.getProperty(CONFIG_PORTS_POP3, +#. Integer.toString(DEFAULT_POP3PORT)); +#. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, +#. Integer.toString(DEFAULT_SMTPPORT)); +#: src/src/i2p/susi/webmail/WebMail.java:3101 +msgid "Email Login" +msgstr "" + +#. current postman hq length limits 16/12, new postman version 32/32 +#: src/src/i2p/susi/webmail/WebMail.java:3103 +msgid "User" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3104 +msgid "Password" +msgstr "تێپەڕەوشە" + +#: src/src/i2p/susi/webmail/WebMail.java:3109 +msgid "Read Mail Offline" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3113 +#: src/src/i2p/susi/webmail/WebMail.java:3302 +msgid "Settings" +msgstr "ڕێکخستنەکان" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Create Account" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Learn about I2P mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3140 +#: src/src/i2p/susi/webmail/WebMail.java:3410 +msgid "New" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3150 +msgid "Check Mail" +msgstr "" + +#. if (Config.hasConfigFile()) +#. out.println(button( RELOAD, _t("Reload Config") ) + spacer); +#: src/src/i2p/susi/webmail/WebMail.java:3161 +#: src/src/i2p/susi/webmail/WebMail.java:3422 +#: src/src/i2p/susi/webmail/WebMail.java:3550 +msgid "Logout" +msgstr "دەرچوون" + +#: src/src/i2p/susi/webmail/WebMail.java:3179 +msgid "Mark for deletion" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3182 +#: src/src/i2p/susi/webmail/WebMail.java:3483 +msgid "Date" +msgstr "بەروار" + +#: src/src/i2p/susi/webmail/WebMail.java:3184 +msgid "Size" +msgstr "قەبارە" + +#: src/src/i2p/susi/webmail/WebMail.java:3231 +msgid "Message is new" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3258 +msgid "Message has an attachment" +msgstr "پەیامەکە هاوپێچێکی پێوەیە" + +#: src/src/i2p/susi/webmail/WebMail.java:3260 +msgid "Message is spam" +msgstr "" + +#. TODO ngettext +#: src/src/i2p/susi/webmail/WebMail.java:3281 +msgid "Really delete the marked messages?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3282 +msgid "Yes, really delete them!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3285 +msgid "Delete Selected" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3287 +msgid "Mark All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3289 +msgid "Clear All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3314 +msgid "Folder" +msgstr "" + +#. TODO css to center it +#: src/src/i2p/susi/webmail/WebMail.java:3315 +msgid "Change to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3321 +msgid "First" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3434 +msgid "Previous" +msgstr "پێشتر" + +#: src/src/i2p/susi/webmail/WebMail.java:3331 +#, java-format +msgid "Page {0} of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3449 +msgid "Next" +msgstr "دوواتر" + +#: src/src/i2p/susi/webmail/WebMail.java:3334 +msgid "Last" +msgstr "ئاخرین" + +#: src/src/i2p/susi/webmail/WebMail.java:3384 +msgid "Really delete this message?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3385 +msgid "Yes, really delete it!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3413 +msgid "Reply" +msgstr "وەڵامدانەوە" + +#: src/src/i2p/susi/webmail/WebMail.java:3414 +msgid "Reply All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3415 +msgid "Forward" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3416 +msgid "Save As" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3418 +#: src/src/i2p/susi/webmail/WebMail.java:3420 +msgid "Delete" +msgstr "سڕینەوە" + +#. can't move unless has body +#. can't move from drafts +#: src/src/i2p/susi/webmail/WebMail.java:3426 +msgid "Move to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3446 +msgid "Back to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3531 +msgid "Folder Page Size" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3534 +msgid "Set" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3537 +msgid "Advanced Configuration" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3547 +msgid "Save Configuration" +msgstr "" + +#. this appears in the UI so translate +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:108 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:936 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:978 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1199 +msgid "No response from server" +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:747 +msgid "Mail server login failed, wrong username or password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:749 +msgid "Logout and then login again with the correct username and password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1238 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1240 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:314 +msgid "Login failed" +msgstr "" + +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:256 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:285 +msgid "Server refused connection" +msgstr "" + +#. TODO which recipient? +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:327 +msgid "Mail rejected" +msgstr "" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_ru.po i2p-2.5.0/apps/susimail/locale/messages_ru.po --- i2p-2.4.0/apps/susimail/locale/messages_ru.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_ru.po 2024-04-10 02:29:57.000000000 +0000 @@ -11,14 +11,14 @@ # Irina Fedulova , 2020 # ValdikSS , 2018,2021 # yume, 2014-2015 -# Артём Котлубай , 2023 +# Темак, 2023 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" -"Last-Translator: Артём Котлубай , 2023\n" +"Last-Translator: Темак, 2023\n" "Language-Team: Russian (Russia) (http://app.transifex.com/otf/I2P/language/ru_RU/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -26,8 +26,8 @@ "Language: ru_RU\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" @@ -36,121 +36,143 @@ msgstr[2] "{0} новых сообщений" msgstr[3] "{0} новых сообщений" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "Сетевая почта" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "Для кодировки \\''{0}\\'' не найден кодек." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Fwd:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Черновики" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Отправленные" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Корзина" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "Необработанная почта" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Входящие" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "неизвестно" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "Кодировка \\''{0}\\'' не поддерживается." -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "Часть ({0}) не отображена из-за {1}" -#: src/src/i2p/susi/webmail/WebMail.java:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Скачать вложение {0}" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Файл запакован в zip-архив из соображений безопасности." -#: src/src/i2p/susi/webmail/WebMail.java:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Вложение ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Требуется имя пользователя для аутентификации." -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Требуется пароль для аутентификации." -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Требуется имя хоста для соединений." -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "Требуется номер порта для pop3 соединений." -#: src/src/i2p/susi/webmail/WebMail.java:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "Номер POP3-порта не в диапазоне 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "Номер POP3-порта некорректный." -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "Требуется номер порта для smtp соединений." -#: src/src/i2p/susi/webmail/WebMail.java:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "Номер SMTP-порта не в диапазоне 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "Номер SMTP-порта некорректный." -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -162,79 +184,80 @@ msgid "Cannot connect" msgstr "Невозможно подключиться" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Ошибка соединения с сервером" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Пользователь отключился." -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "Черновик сохранен." -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "Невозможно сохранить письмо." -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "В сообщении от {0} {1} написал(a):" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Ошибка при чтении загруженного файла: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "начало пересланного сообщения" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "конец пересланного сообщения" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "Не удалось скачать тело сообщения." -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "Message id некорректен." -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Внутренняя ошибка, соединение потеряно." -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "Не найдена кодировка для {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Вложение не найдено." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "Сообщение не найдено." -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." @@ -243,36 +266,36 @@ msgstr[2] "{0} сообщений удалены." msgstr[3] "{0} сообщений удалены." -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "Не отмечено сообщений для удаления." -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "Имя хоста не изменено. Отредактируйте файл конигурации {0}, чтобы изменить имя хоста." -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Конфигурация сохранена" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Некорректный размер страницы, устанавливается значение по умолчанию." -#: src/src/i2p/susi/webmail/WebMail.java:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Логин" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "Загружается почта, пожалуйста, подождите…" -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" @@ -281,128 +304,133 @@ msgstr[2] "{0} сообщений" msgstr[3] "{0} сообщений" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "Нет входящих сообщений" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Покзать сообщение" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Новое письмо" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Конфигурация" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "Нет новых сообщений" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Проверка новых писем на сервере" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Обновите страницу для получения свежей информации" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Добавить пользователя" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "без темы" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "Не найдено корректного адреса отправителя." -#: src/src/i2p/susi/webmail/WebMail.java:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "Не найдено корректного адреса в \\''{0}\\''." -#: src/src/i2p/susi/webmail/WebMail.java:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "Не найдено получателей." -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "Email слишком большой, максимальный размер — {0}." -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "Отправляем письмо." -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Ошибка при отправке письма" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Сообщение отправлено." -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Отправить" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "Сохранить как черновик" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Отмена" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "От" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Кому" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Копия" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Скрытая копия" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Тема" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Прикрепить файл" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Приложенные файлы" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Удалить выбранные файлы" @@ -413,183 +441,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Имя пользователя Email" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Пользователь" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Пароль" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Читать почту в автономном режиме" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Настройки" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Создать учётную запись" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "Узнать об I2P почте" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Новое" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Проверить почту" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Выйти" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Пометить для удаления" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Дата" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Размер" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "Новое письмо" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "Письмо с вложением" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "Письмо является спамом" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "Действительно удалить отмеченые сообщения?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Да, действительно удалить!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Удалить выбранное" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Отметить всё" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Удалить все" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Папка" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Перейти в папку" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "Первое" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Предыдущее" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Страница {0} из {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Следующее" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Последнее" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "Действительно удалить это сообщение?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Да, удалить это!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Ответить" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Ответить всем" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Переслать" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Сохранить" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Удалить" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "Переместить в папку" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Вернуться к папке" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Количество писем на странице" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Установить" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Расширенная конфигурация" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Сохранить конфигурацию" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_sl.po i2p-2.5.0/apps/susimail/locale/messages_sl.po --- i2p-2.4.0/apps/susimail/locale/messages_sl.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_sl.po 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,620 @@ +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the susimail package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: duck \n" +"Language-Team: Slovenian (http://app.transifex.com/otf/I2P/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: src/src/i2p/susi/webmail/MailCache.java:529 +#: src/src/i2p/susi/webmail/WebMail.java:2414 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/src/i2p/susi/webmail/MailCache.java:532 +#: src/src/i2p/susi/webmail/WebMail.java:2337 +msgid "Email" +msgstr "Email" + +#: src/src/i2p/susi/webmail/MailPart.java:321 +#, java-format +msgid "No encoder found for encoding \\''{0}\\''." +msgstr "" + +#. tagged in WebMail +#: src/src/i2p/susi/webmail/Sorters.java:124 +#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1179 +msgid "Re:" +msgstr "" + +#: src/src/i2p/susi/webmail/Sorters.java:125 +#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1259 +msgid "Fwd:" +msgstr "" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:214 +msgid "Drafts" +msgstr "Osnutki" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:215 +msgid "Sent" +msgstr "Poslano" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:216 +msgid "Trash" +msgstr "Smeti" + +#. MailDir-like +#: src/src/i2p/susi/webmail/WebMail.java:217 +msgid "Bulk Mail" +msgstr "" + +#. untranslated, translate on use +#: src/src/i2p/susi/webmail/WebMail.java:221 +msgid "Inbox" +msgstr "Poštni predal" + +#: src/src/i2p/susi/webmail/WebMail.java:541 +msgid "unknown" +msgstr "neznan" + +#: src/src/i2p/susi/webmail/WebMail.java:590 +#, java-format +msgid "Charset \\''{0}\\'' not supported." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:594 +#, java-format +msgid "Part ({0}) not shown, because of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:644 +#: src/src/i2p/susi/webmail/WebMail.java:649 +#, java-format +msgid "Download attachment {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:650 +msgid "File is packed into a zipfile for security reasons." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:655 +#, java-format +msgid "Attachment ({0})." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:715 +msgid "Need username for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:719 +msgid "Need password for authentication." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:723 +msgid "Need hostname for connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:728 +msgid "Need port number for pop3 connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:735 +msgid "POP3 port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:741 +msgid "POP3 port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:747 +msgid "Need port number for smtp connect." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:754 +msgid "SMTP port number is not in range 0..65535." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:760 +msgid "SMTP port number is invalid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:837 +#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:716 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:762 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:243 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:258 +msgid "Cannot connect" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 +msgid "Error connecting to server" +msgstr "" + +#. _t("Internal error, lost connection.") + '\n' + +#: src/src/i2p/susi/webmail/WebMail.java:977 +#: src/src/i2p/susi/webmail/WebMail.java:991 +msgid "User logged out." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1042 +msgid "Draft saved." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1052 +#: src/src/i2p/susi/webmail/WebMail.java:1293 +#: src/src/i2p/susi/webmail/WebMail.java:2729 +#: src/src/i2p/susi/webmail/WebMail.java:2910 +msgid "Unable to save mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1182 +#, java-format +msgid "On {0} {1} wrote:" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1245 +#: src/src/i2p/susi/webmail/WebMail.java:1472 +#, java-format +msgid "Error reading uploaded file: {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1271 +msgid "begin forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1281 +msgid "end forwarded mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1299 +#: src/src/i2p/susi/webmail/WebMail.java:3492 +msgid "Could not fetch mail body." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1331 +msgid "Message id not valid." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1376 +msgid "Internal error, lost connection." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 +#, java-format +msgid "No Encoding found for {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1599 +msgid "Attachment not found." +msgstr "" + +#. error if we get here +#: src/src/i2p/susi/webmail/WebMail.java:1628 +#: src/src/i2p/susi/webmail/WebMail.java:1630 +#: src/src/i2p/susi/webmail/WebMail.java:2321 +#: src/src/i2p/susi/webmail/WebMail.java:3496 +msgid "Message not found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1733 +#, java-format +msgid "1 message deleted." +msgid_plural "{0} messages deleted." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/src/i2p/susi/webmail/WebMail.java:1735 +#: src/src/i2p/susi/webmail/WebMail.java:1744 +msgid "No messages marked for deletion." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1809 +#, java-format +msgid "Host unchanged. Edit configuration file {0} to change host." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1829 +msgid "Configuration saved" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:1851 +msgid "Invalid pagesize number, resetting to default value." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2299 +#: src/src/i2p/susi/webmail/WebMail.java:3108 +msgid "Login" +msgstr "Prijava" + +#: src/src/i2p/susi/webmail/WebMail.java:2301 +#: src/src/i2p/susi/webmail/WebMail.java:2428 +#: src/src/i2p/susi/webmail/WebMail.java:3125 +msgid "Loading emails, please wait..." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2309 +#, java-format +msgid "1 Message" +msgid_plural "{0} Messages" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: src/src/i2p/susi/webmail/WebMail.java:2311 +#: src/src/i2p/susi/webmail/WebMail.java:3268 +msgid "No messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2319 +msgid "Show Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2324 +msgid "New Message" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2326 +msgid "Configuration" +msgstr "Konfiguracija" + +#: src/src/i2p/susi/webmail/WebMail.java:2417 +msgid "No new messages" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2430 +msgid "Checking for new emails on server" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2432 +#: src/src/i2p/susi/webmail/WebMail.java:3127 +msgid "Refresh the page for updates" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2637 +#: src/src/i2p/susi/webmail/WebMail.java:3227 +#: src/src/i2p/susi/webmail/WebMail.java:3468 +msgid "no subject" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2765 +msgid "Found no valid sender address." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2771 +#, java-format +msgid "Found no valid address in \\''{0}\\''." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2785 +msgid "No recipients found." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 +#, java-format +msgid "Email is too large, max is {0}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2842 +#: src/src/i2p/susi/webmail/WebMail.java:2923 +msgid "Sending mail." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 +msgid "Error sending mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2881 +msgid "Mail sent." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2973 +msgid "Send" +msgstr "Pošlji" + +#: src/src/i2p/susi/webmail/WebMail.java:2974 +msgid "Save as Draft" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:2975 +#: src/src/i2p/susi/webmail/WebMail.java:3283 +#: src/src/i2p/susi/webmail/WebMail.java:3386 +#: src/src/i2p/susi/webmail/WebMail.java:3548 +msgid "Cancel" +msgstr "Prekliči" + +#: src/src/i2p/susi/webmail/WebMail.java:3062 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +msgid "From" +msgstr "Od" + +#: src/src/i2p/susi/webmail/WebMail.java:3063 +#: src/src/i2p/susi/webmail/WebMail.java:3180 +#: src/src/i2p/susi/webmail/WebMail.java:3476 +msgid "To" +msgstr "To" + +#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3480 +msgid "Cc" +msgstr "Kp" + +#: src/src/i2p/susi/webmail/WebMail.java:3065 +msgid "Bcc" +msgstr "Skp" + +#: src/src/i2p/susi/webmail/WebMail.java:3066 +#: src/src/i2p/susi/webmail/WebMail.java:3181 +#: src/src/i2p/susi/webmail/WebMail.java:3473 +msgid "Subject" +msgstr "Zadeva" + +#: src/src/i2p/susi/webmail/WebMail.java:3069 +msgid "Add Attachment" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3075 +msgid "Attachments" +msgstr "Priloge" + +#: src/src/i2p/susi/webmail/WebMail.java:3084 +msgid "Delete selected attachments" +msgstr "" + +#. boolean fixed = Boolean.parseBoolean(Config.getProperty( +#. CONFIG_PORTS_FIXED, "true" )); +#. String host = Config.getProperty(CONFIG_HOST, DEFAULT_HOST); +#. String pop3 = Config.getProperty(CONFIG_PORTS_POP3, +#. Integer.toString(DEFAULT_POP3PORT)); +#. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, +#. Integer.toString(DEFAULT_SMTPPORT)); +#: src/src/i2p/susi/webmail/WebMail.java:3101 +msgid "Email Login" +msgstr "" + +#. current postman hq length limits 16/12, new postman version 32/32 +#: src/src/i2p/susi/webmail/WebMail.java:3103 +msgid "User" +msgstr "Uporabnik" + +#: src/src/i2p/susi/webmail/WebMail.java:3104 +msgid "Password" +msgstr "Geslo" + +#: src/src/i2p/susi/webmail/WebMail.java:3109 +msgid "Read Mail Offline" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3113 +#: src/src/i2p/susi/webmail/WebMail.java:3302 +msgid "Settings" +msgstr "Nastavitve" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Create Account" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3115 +msgid "Learn about I2P mail" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3140 +#: src/src/i2p/susi/webmail/WebMail.java:3410 +msgid "New" +msgstr "Novo" + +#: src/src/i2p/susi/webmail/WebMail.java:3150 +msgid "Check Mail" +msgstr "" + +#. if (Config.hasConfigFile()) +#. out.println(button( RELOAD, _t("Reload Config") ) + spacer); +#: src/src/i2p/susi/webmail/WebMail.java:3161 +#: src/src/i2p/susi/webmail/WebMail.java:3422 +#: src/src/i2p/susi/webmail/WebMail.java:3550 +msgid "Logout" +msgstr "Odjavi" + +#: src/src/i2p/susi/webmail/WebMail.java:3179 +msgid "Mark for deletion" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3182 +#: src/src/i2p/susi/webmail/WebMail.java:3483 +msgid "Date" +msgstr "Date" + +#: src/src/i2p/susi/webmail/WebMail.java:3184 +msgid "Size" +msgstr "Velikost" + +#: src/src/i2p/susi/webmail/WebMail.java:3231 +msgid "Message is new" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3258 +msgid "Message has an attachment" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3260 +msgid "Message is spam" +msgstr "" + +#. TODO ngettext +#: src/src/i2p/susi/webmail/WebMail.java:3281 +msgid "Really delete the marked messages?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3282 +msgid "Yes, really delete them!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3285 +msgid "Delete Selected" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3287 +msgid "Mark All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3289 +msgid "Clear All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3314 +msgid "Folder" +msgstr "" + +#. TODO css to center it +#: src/src/i2p/susi/webmail/WebMail.java:3315 +msgid "Change to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3321 +msgid "First" +msgstr "Prvi" + +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3434 +msgid "Previous" +msgstr "Nazaj" + +#: src/src/i2p/susi/webmail/WebMail.java:3331 +#, java-format +msgid "Page {0} of {1}" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3449 +msgid "Next" +msgstr "Naprej" + +#: src/src/i2p/susi/webmail/WebMail.java:3334 +msgid "Last" +msgstr "Zadnji" + +#: src/src/i2p/susi/webmail/WebMail.java:3384 +msgid "Really delete this message?" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3385 +msgid "Yes, really delete it!" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3413 +msgid "Reply" +msgstr "Odgovori" + +#: src/src/i2p/susi/webmail/WebMail.java:3414 +msgid "Reply All" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3415 +msgid "Forward" +msgstr "Naprej" + +#: src/src/i2p/susi/webmail/WebMail.java:3416 +msgid "Save As" +msgstr "Shrani kot" + +#: src/src/i2p/susi/webmail/WebMail.java:3418 +#: src/src/i2p/susi/webmail/WebMail.java:3420 +msgid "Delete" +msgstr "Izbriši" + +#. can't move unless has body +#. can't move from drafts +#: src/src/i2p/susi/webmail/WebMail.java:3426 +msgid "Move to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3446 +msgid "Back to Folder" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3531 +msgid "Folder Page Size" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3534 +msgid "Set" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3537 +msgid "Advanced Configuration" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:3547 +msgid "Save Configuration" +msgstr "" + +#. this appears in the UI so translate +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:108 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:754 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:936 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:978 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1199 +msgid "No response from server" +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:747 +msgid "Mail server login failed, wrong username or password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:749 +msgid "Logout and then login again with the correct username and password." +msgstr "" + +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1238 +#: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:1240 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:314 +msgid "Login failed" +msgstr "" + +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:256 +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:285 +msgid "Server refused connection" +msgstr "" + +#. TODO which recipient? +#: src/src/i2p/susi/webmail/smtp/SMTPClient.java:327 +msgid "Mail rejected" +msgstr "" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_sq.po i2p-2.5.0/apps/susimail/locale/messages_sq.po --- i2p-2.4.0/apps/susimail/locale/messages_sq.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_sq.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,7 +4,7 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# Besnik Bleta , 2020,2022 +# Besnik Bleta , 2020,2022,2024 # Besnik Bleta , 2016,2018 # Shpetim , 2014 # Shpetim , 2014 @@ -12,126 +12,161 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" -"Last-Translator: Besnik Bleta , 2020,2022\n" -"Language-Team: Albanian (http://www.transifex.com/otf/I2P/language/sq/)\n" +"Last-Translator: Besnik Bleta , 2020,2022,2024\n" +"Language-Team: Albanian (http://app.transifex.com/otf/I2P/language/sq/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sq\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "{0} mesazh i ri" +msgstr[1] "{0} mesazhe të rinj" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "Email" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "S’u gjet kodues për kodimin \\''{0}\\''." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Pë:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Pcl:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Skica" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Të dërguar" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Hedhurina" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" -msgstr "" +msgstr "Postë Masive" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Të marrë" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "Shiheni email-in si HTML" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "Shiheni email-in si tekst të thjeshtë" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "e panjohur" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "Për mbrojtjen e privatësisë tuaj, SusiMail ka bllokuar lëndë të largët në këtë mesazh." + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "Për shfaqje të përmirësuar të këtij mesazhi, aktivizoni Javascript-in" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "Kodim \\''{0}\\'' i pambuluar." -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "Nuk shfaqet pjesa ({0}), për shkak të {1}" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Shkarkoje bashkëngjitjen {0}" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Për arsye sigurie, kartela është paketuar në një kartelë .zip." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Bashkëngjitje ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Lyp emër përdoruesi për mirëfilltësim" -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "Mos përfshi @mail.i2p te emri i përdoruesit" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Lyp fjalëkalim për mirëfilltësim." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Lyp strehëemër për lidhje." -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "Lyp numër porte për lidhje pop3." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "Numri i portës POP3 s’gjendet në segmentin 0…65535." -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "Numri i portës SMTP është i pavlefshëm." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "Lyp numër porte për lidhje smtp." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "Numri i portës SMTP s’gjendet në segmentin 0…65535." -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "Numri i portës SMTP është i pavlefshëm." -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -143,254 +178,249 @@ msgid "Cannot connect" msgstr "S’lidhet dot" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Gabim gjatë lidhjes me shërbyesin" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Përdoruesi doli." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." -msgstr "" +msgstr "Skica u ruajt." -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." -msgstr "" +msgstr "S’arrihet të ruhet email." -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "Më {0}, {1} shkroi:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Gabim gjatë leximit të kartelës së ngarkuar: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "fillon posta e përcjellë" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "përfundon posta e përcjellë" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "S’u pru dot lënda e email-it." -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "ID-ja e mesazhit s’është e vlefshme." -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Gabim i brendshëm, humbi lidhja." -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "S’u gjet kodim për {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "S’u gjet bashkëngjitje." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "Mesazhi s’u gjet." -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "U fshi 1 mesazh." msgstr[1] "U fshinë {0} mesazhe." -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "S’ka mesazhe të shënuar për fshirje." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." -msgstr "" +msgstr "Strehë e pandryshuar. Që të ndryshoni strehën, përpunoni kartelën e formësimit {0}." -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Formësimi u ruajt" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Numër i pavlefshëm për madhësi faqeje, po i rijepet vlera parazgjedhje." -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Hyrje" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "Po ngarkohen email-e, ju lutemi, prisni…" -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 Mesazh" +msgstr[1] "{0} Mesazhe" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "Pa mesazhe" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Shfaqe mesazhin" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Mesazh i Ri" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Formësim" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "Email" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "{0} mesazh i ri" -msgstr[1] "{0} mesazhe të rinj" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "S’ka mesazhe të reja" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Po kontrollohet për email-e të rinj te shërbyesi" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Për përditësime, rifreskoni faqen" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Shtoni përdorues të ri" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "s’ka subjekt" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "S’u gjet adresë e vlefshme dërguesi." -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "S’u gjet adresë e vlefshme te \\''{0}\\''." -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "S’u gjetën marrës." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "Email-i është shumë i madh, maksimumi është {0}" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." -msgstr "" +msgstr "Po dërgohet email." -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Gabim në dërgim email-i" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Posta u dërgua." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Dërgoje" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" -msgstr "" +msgstr "Ruaje si Skicë" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Anuloje" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Nga " -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Për" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Bcc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Subjekt" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Shtoni Bashkëngjitje" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Bashkëngjitje" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Fshi bashkëngjitjet e përzgjedhura" @@ -401,183 +431,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" -msgstr "" +msgstr "Hyrje Email" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Përdorues" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Fjalëkalim" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Lexoni Postë Jo Në Linjë" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Rregullime" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Krijoni Llogari" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "Mësoni mmbi postën I2P" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "I ri" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Kontrollo Për Postë" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Dalje" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Vëri shenjë për fshirje" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Datë" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Madhësi" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" -msgstr "" +msgstr "Mesazhi është i ri" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "Mesazhi ka një bashkëngjitje" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "Mesazhi është i padëshiruar" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "Të fshihet vërtet mesazhet e shënuara?" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Po, fshiji vërtet!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Fshi të Përzgjedhurën" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Shënoji Krejt" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Spastroji Krejt" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Dosje" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" -msgstr "" +msgstr "Ndryshojeni në Dosje" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "I pari" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "I mëparshmi" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Faqja {0} nga {1} " -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Pasuesi" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "I fundit" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "Të fshihet vërtet ky mesazh?" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Po, fshije vërtet" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Pergjigjuni" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Përgjigjuni të Gjithëve" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Përcille" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Ruaje Si" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Fshije" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" -msgstr "" +msgstr "Kalojeni në Dosje" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Mbrapsht te Kartela" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Madhësi Faqeje Dosjeje" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Caktoje" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Formësim i Mëtejshëm" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Ruaje Formësimin" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_tr.po i2p-2.5.0/apps/susimail/locale/messages_tr.po --- i2p-2.4.0/apps/susimail/locale/messages_tr.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_tr.po 2024-04-10 02:29:57.000000000 +0000 @@ -4,132 +4,167 @@ # To contribute translations, see http://www.i2p2.de/newdevelopers # # Translators: -# Kaya Zeren , 2016-2019,2021-2022 +# Kaya Zeren , 2016-2019,2021-2022,2024 # Ozancan Karataş , 2015 msgid "" msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" -"Last-Translator: Kaya Zeren , 2016-2019,2021-2022\n" -"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n" +"Last-Translator: Kaya Zeren , 2016-2019,2021-2022,2024\n" +"Language-Team: Turkish (Turkey) (http://app.transifex.com/otf/I2P/language/tr_TR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr_TR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "{0} yeni ileti" +msgstr[1] "{0} yeni ileti" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "E-posta" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "\\''{0}\\'' kodlaması için kullanılacak bir kodlayıcı bulunamadı." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Ynt:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "İlt:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Taslaklar" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Gönderildi" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Çöp" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "Toplu e-posta" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Gelen kutusu" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "E-postayı HTML olarak görüntüle" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "E-postayı düz metin olarak görüntüle" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "Bilinmiyor" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "Gizliliğinizi korumak için SuSiMail bu iletideki uzak içeriği engelledi." + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "Bu iletinin daha iyi görüntülenmesi için JavaScript özelliğini etkinleştirin." + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "\\''{0}\\'' karakter kümesi desteklenmiyor." -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "{1} nedeniyle ({0}) bölümü görüntülenemiyor" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "{0} ek dosyasını indir" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Dosya güvenlik nedeniyle zip arşivi içine paketlendi." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Ek dosya ({0})." -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Kimlik doğrulaması için kullanıcı adı gereklidir." -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "Kullanıcı adında @mail.i2p kullanmayın" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Kimlik doğrulaması için parola gereklidir." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Bağlantı kurmak için sunucu adı gereklidir." -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "POP3 bağlantısı için bağlantı noktası gereklidir." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3 bağlantı noktası olması gereken 0..65535 aralığında değil." -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3 bağlantı noktası geçersiz." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "SMTP bağlantısı için bağlantı noktası gereklidir." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP bağlantı noktası olması gereken 0..65535 aralığında değil." -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP bağlantı noktası geçersiz." -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -141,254 +176,249 @@ msgid "Cannot connect" msgstr "Bağlantı kurulamadı" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Sunucu ile bağlantı kurulurken bir sorun çıktı" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Kullanıcı oturumunu kapattı." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "Taslak kaydedildi." -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "E-posta kaydedilemedi." -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "{0} {1} üzerine yazılan:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Yüklenen dosya okunamadı: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "iletilen posta başlangıcı" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "iletilen posta sonu" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "Posta metni alınamadı." -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "İleti kodu geçersiz." -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "İç hata, bağlantı kesildi." -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "{0} için kodlama bulunamadı" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Ek dosya bulunamadı." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "İleti bulunamadı." -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "{0} ileti silindi." msgstr[1] "{0} ileti silindi." -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "Silinmek üzere işaretlenmiş bir ileti yok." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "Sunucu değiştirilmedi. Sunucuyu değiştirmek için {0} yapılandırma dosyasını düzenleyin." -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Yapılandırma kaydedildi" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Sayfa boyutu sayısı geçersiz, varsayılan değere sıfırlanıyor." -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Oturum aç" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "E-postalar yükleniyor, lütfen bekleyin..." -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "{0} ileti" msgstr[1] "{0} ileti" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "Herhangi bir ileti yok" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "İletiyi görüntüle" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Yeni ileti" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Yapılandırma" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "E-posta" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "{0} yeni ileti" -msgstr[1] "{0} yeni ileti" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "Yeni bir ileti yok" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "Sunucu üzerindeki yeni e-postalar denetleniyor" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "Güncellemek için sayfayı yenileyin" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Yeni kullanıcı ekle" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "konu yok" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "Geçerli bir kullanıcı adresi bulunamadı." -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "\\''{0}\\'' içinde geçerli bir adres bulunamadı." -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "Herhangi bir alıcı bulunamadı." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "E-posta çok büyük en fazla {0} olabilir" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "E-posta gönderiliyor." -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "E-posta gönderilirken bir sorun çıktı" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "E-posta gönderildi." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Gönder" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "Taslak olarak kaydet" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "İptal" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Kimden" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Kime" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Kopya" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Gizli kopya" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Konu" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Dosya ekle" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Ek dosyalar" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Seçilmiş ek dosyaları sil" @@ -399,183 +429,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "E-posta oturumu aç" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Kullanıcı" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Parola" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "E-postayı çevrimdışı oku" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Ayarlar" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Hesap aç" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "I2P Mail hakkında bilgiler" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Yeni" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "E-postaları denetle" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Oturumu kapat" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Silinmek üzere işaretle" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Tarih" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Boyut" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "İleti yeni" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "İletinin ek dosyası var" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "İleti spam" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "Seçilmiş iletileri gerçekten silmek istiyor musunuz?" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Evet gerçekten silinsin!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Seçilmişleri sil" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Tümünü seç" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Tümünü bırak" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Klasör" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Klasörü değiştir" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "İlk" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Önceki" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Sayfa {0} / {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Sonraki" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Son" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "Bu iletiyi gerçekten silmek istiyor musunuz?" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Evet gerçekten silinsin!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Yanıtla" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Tümüne yanıtla" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "İlet" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Farklı kaydet" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Sil" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "Klasöre taşı" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Klasöre geri dön" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Klasör sayfa boyutu" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Ayarla" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Gelişmiş yapılandırma" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Yapılandırmayı kaydet" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_uk.po i2p-2.5.0/apps/susimail/locale/messages_uk.po --- i2p-2.4.0/apps/susimail/locale/messages_uk.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_uk.po 2024-04-10 02:29:57.000000000 +0000 @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" "Last-Translator: Greg Koval , 2020\n" "Language-Team: Ukrainian (Ukraine) (http://app.transifex.com/otf/I2P/language/uk_UA/)\n" @@ -24,8 +24,8 @@ "Language: uk_UA\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" @@ -34,121 +34,143 @@ msgstr[2] "" msgstr[3] "" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "Пошта" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "Не знайдено кодировщик для кодування \\''{0}\\''." #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "Fwd:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Чорновики" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Відправлені" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Кошик" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Вхідні" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "Невідомий" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "Кодування \\''{0}\\'' не підтримується." -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "Частина ({0}) не показана тому, що {1}" -#: src/src/i2p/susi/webmail/WebMail.java:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "Завантажити прикріплені файли {0}" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Файл запакований в zipfile з міркувань безпеки" -#: src/src/i2p/susi/webmail/WebMail.java:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Прикріплення ({0})" -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Необхідне ім'я користувача для авторизації." -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Необхідний пароль для авторизації." -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Необхідне ім'я хоста для з'єднання." -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "Необхідний вказати порт для pop3 з'єднання." -#: src/src/i2p/susi/webmail/WebMail.java:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3 порт може бути лише в числовому проміжку 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3 порт вказаний не вірно." -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "Необхідно вказати порт для smtp з'єднання." -#: src/src/i2p/susi/webmail/WebMail.java:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP порт може бути лише в числовому проміжку 0..65535." -#: src/src/i2p/susi/webmail/WebMail.java:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP порт вказаний не вірно." -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -160,79 +182,80 @@ msgid "Cannot connect" msgstr "Неможливо підключитися" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Помилка з'єднання з сервером" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Користувач вийшов." -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "В повідомленні від {0}{1} написав(-ла):" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Помилка читання завантаженого файла: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "початок пересланого листа" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "кінець пересланого листа" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "Не вдалося отримати текст листа." -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "id повідомлення не дійсний." -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Внутрішня помилка, з'єднання закрито." -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "Не знайдено кодировщика для {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "Прикріплені файли не знайдені" #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "Повідомлення не знайдено." -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." @@ -241,36 +264,36 @@ msgstr[2] "{0} повідомлень видалено." msgstr[3] "{0} повідомлень видалено." -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "Не позначені повідомлення для видалення." -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "Конфігурація збережена" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Не дійсний розмір сторінки, скудую до параметру за замовчуванням" -#: src/src/i2p/susi/webmail/WebMail.java:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Логін" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" @@ -279,128 +302,133 @@ msgstr[2] "{0} Повідомлень" msgstr[3] "{0} Повідомлень" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "Немає повідомлень" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Показати повідомлення" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "Нове повідомлення" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Конфігурація" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Додати нового користувача" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "без теми" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "Адреса відправника не дійсна." -#: src/src/i2p/susi/webmail/WebMail.java:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "Знайдена не дійсна адреса в \\''{0}\\''." -#: src/src/i2p/susi/webmail/WebMail.java:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "Одержувачів не знайдено." -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "Надсилання пошту." -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "Помилка відправки пошти" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Лист надісланий." -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Відправити" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Відмінити" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Від" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Кому" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "Cc" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "Bcc" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Тема" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Прикріпити файли" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Прикріплені файли" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "Видалити обрані прикріплені файли" @@ -411,183 +439,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "Електронна пошта Логін" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Користувач" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Пароль" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "Читати пошту офлайн" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Налаштування" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Створити обліковий запис" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "Дізнатись про I2P пошту" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Новий" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Перевірити пошту" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Вийти" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "Позначити для видалення" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Дата" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Розмір" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "Нове повідомлення" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "Повідомлення містить прикріплені файли" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "Повідомлення є спамом" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "Ви дійсно хочете видалити позначені повідомлення?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Так, дійсно видалити їх!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Видалити обрані" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Позначити всі" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "Очистити все" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "Тека" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "Зміни до Папку" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "Перше" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Попереднє" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Сторінка {0} з {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Наступне" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Останнє" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "Ви дійсно хочете видалити ці повідомлення?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Так, дійсно видалити це!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Відповісти" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Відповісти всім" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Переслати" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "Зберегти як" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Видалити" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Назад в Папку" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "Кількість листів на сторінці" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Встановити" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Розширена конфігурація" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "Зберегти конфігурацію" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_vi.po i2p-2.5.0/apps/susimail/locale/messages_vi.po --- i2p-2.4.0/apps/susimail/locale/messages_vi.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_vi.po 2024-04-10 02:29:57.000000000 +0000 @@ -9,126 +9,160 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" -"PO-Revision-Date: 2021-02-05 15:27+0000\n" -"Last-Translator: zzzi2p\n" -"Language-Team: Vietnamese (http://www.transifex.com/otf/I2P/language/vi/)\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" +"PO-Revision-Date: 2011-03-11 22:21+0000\n" +"Last-Translator: dich_tran , 2011\n" +"Language-Team: Vietnamese (http://app.transifex.com/otf/I2P/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "Địa chỉ e-mail" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "Không tìm bộ mã hóa cho bộ \\\"{0}\\\"" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "Re:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "Nháp" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "Hộp thư đi" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "Thùng rác" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "Hộp thư đến" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "không biết" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "Bộ mã \\\"{0}\\\" không dùng được." -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "Phần ({0}) không hiển thị, vì {1}" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "Tập tin được nén lại dạng zip vì lý do an ninh." -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "Đính kèm ({0})" -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "Cần tên người dùng để xác thực." -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "Cần mật khẩu để xác thực." -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "Cần tên máy chủ để nối vào." -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "Cần số cổng để nối qua pop3." -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "Số cổng POP3 không trong khoảng 0..65535" -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "Số cổng POP3 không đúng." -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "Cần số cổng để nối smtp." -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "Số cổng SMTP không trong khoảng 0..65535" -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "Số cổng SMTP không đúng." -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -140,251 +174,247 @@ msgid "Cannot connect" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "Có lỗi kết nối vào máy chủ" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "Người dùng đã đăng xuất." -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "Vào {0} {1} viết:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "Lỗi đọc tập tin tải lên: {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "Bắt đầu email chuyển tiếp " -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "Chấm dứt email chuyển tiếp" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "Không thể lấy thân bài email." -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "ID của thư không đúng" -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "Lỗi nội tại, mất đường nối." -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "Không tìm thấy bộ mã cho {0}" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "" #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "{0} thư đã bị xóa." -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "Không có thư nào chờ xóa." -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "Khổ trang không đúng, trở lại giá trị mặc định." -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "Đăng nhập" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "{0} Thư" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "Hiển Thị Thư" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "Cấu hình" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "Địa chỉ e-mail" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "Thêm người dùng mới" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "không chủ đề" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "Không tìm thấy địa chỉ người gửi." -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "Không tìm thấy địa chỉ người gửi trong \\\"{0}\\\"" -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "Không thấy người nhận." -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "Thư đã gửi." -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "Gửi." -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "Hủy" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "Từ" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "Đến" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "Chủ đề" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "Thêm Đính Kèm" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "Các tập tin đính kèm" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "" @@ -395,183 +425,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "Người dùng" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "Mật khẩu" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "Thiết lập" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "Tạo tài khoản" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "Mới" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "Lấy thư" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "Đăng xuất" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "Ngày" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "Kích thước" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "Thực sự xóa các thư đánh dấu?" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "Vâng, hãy xóa chúng!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "Xóa lựa chọn" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "Đánh dấu tất cả" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "Đầu tiên" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "Trước" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "Trang {0} của {1}" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "Kế" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "Chót" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "Thực sự muốn xoá thư này?" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "Vâng, thực sự xóa nó!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "Trả lời" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "Trả lời tất cả" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "Chuyển tiếp" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "Xóa" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "Trở lại thư mục" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "Chọn" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "Thiết lập nâng cao" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_zh.po i2p-2.5.0/apps/susimail/locale/messages_zh.po --- i2p-2.4.0/apps/susimail/locale/messages_zh.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_zh.po 2024-04-10 02:29:57.000000000 +0000 @@ -7,6 +7,7 @@ # Fosworn D4, 2022 # K , 2017 # xkimo_daeee , 2014 +# Scott Rhodes , 2024 # walking , 2013 # walking , 2011 # YFdyh000 , 2015 @@ -14,126 +15,160 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-05 14:31+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" -"Last-Translator: Fosworn D4, 2022\n" -"Language-Team: Chinese (China) (http://www.transifex.com/otf/I2P/language/zh_CN/)\n" +"Last-Translator: Scott Rhodes , 2024\n" +"Language-Team: Chinese (China) (http://app.transifex.com/otf/I2P/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 +#, java-format +msgid "{0} new message" +msgid_plural "{0} new messages" +msgstr[0] "{0}新消息" + +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 +msgid "Email" +msgstr "电子邮箱" + +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "没有找到可用编码器处理编码\\ '' {0} \\ ''。" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1177 -#: src/src/i2p/susi/webmail/WebMail.java:1178 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "回复:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1257 -#: src/src/i2p/susi/webmail/WebMail.java:1258 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "转发:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "草稿箱" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "已发送" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "垃圾箱" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "大量邮件" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "收件箱" -#: src/src/i2p/susi/webmail/WebMail.java:540 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "以HTML格式查看邮件" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "以纯文本格式查看邮件" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "未知" -#: src/src/i2p/susi/webmail/WebMail.java:589 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "为保护隐私,Susimail已屏蔽该信息的远端内容。" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "启用 JavaScript 以改善此信息的显示。" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "不支持字符集\\ '' {0} \\ ''。" -#: src/src/i2p/susi/webmail/WebMail.java:593 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "第({0})部分没有显示,因为{1}" -#: src/src/i2p/susi/webmail/WebMail.java:643 -#: src/src/i2p/susi/webmail/WebMail.java:648 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "下载附件{0}" -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "出于安全原因,文件被打包为zip文件。" -#: src/src/i2p/susi/webmail/WebMail.java:654 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "附件({0})。" -#: src/src/i2p/susi/webmail/WebMail.java:714 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "需要认证用的用户名。" -#: src/src/i2p/susi/webmail/WebMail.java:718 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "请勿在用户名中包含@mail.i2p" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "需要认证用的密码。" -#: src/src/i2p/susi/webmail/WebMail.java:722 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "需要连接用的主机名。" -#: src/src/i2p/susi/webmail/WebMail.java:727 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "需要POP3的连接端口号。" -#: src/src/i2p/susi/webmail/WebMail.java:734 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3端口号超出范围0-65535。" -#: src/src/i2p/susi/webmail/WebMail.java:740 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3端口号是无效的。" -#: src/src/i2p/susi/webmail/WebMail.java:746 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "需要的SMTP连接端口号。" -#: src/src/i2p/susi/webmail/WebMail.java:753 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP端口号是超出范围0-65535。" -#: src/src/i2p/susi/webmail/WebMail.java:759 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP端口号无效。" -#: src/src/i2p/susi/webmail/WebMail.java:836 -#: src/src/i2p/susi/webmail/WebMail.java:1388 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -145,251 +180,247 @@ msgid "Cannot connect" msgstr "不能连接" -#: src/src/i2p/susi/webmail/WebMail.java:932 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "连接到服务器错误" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:976 -#: src/src/i2p/susi/webmail/WebMail.java:990 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "用户已登出。" -#: src/src/i2p/susi/webmail/WebMail.java:1041 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "草稿已保存。" -#: src/src/i2p/susi/webmail/WebMail.java:1051 -#: src/src/i2p/susi/webmail/WebMail.java:1292 -#: src/src/i2p/susi/webmail/WebMail.java:2728 -#: src/src/i2p/susi/webmail/WebMail.java:2909 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "无法保存邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:1181 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "在 {0} {1} 写到:" -#: src/src/i2p/susi/webmail/WebMail.java:1244 -#: src/src/i2p/susi/webmail/WebMail.java:1471 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "读取上传文件错误:{0}" -#: src/src/i2p/susi/webmail/WebMail.java:1270 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "转信开始" -#: src/src/i2p/susi/webmail/WebMail.java:1280 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "转信结束" -#: src/src/i2p/susi/webmail/WebMail.java:1298 -#: src/src/i2p/susi/webmail/WebMail.java:3491 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "无法获取邮件正文。" -#: src/src/i2p/susi/webmail/WebMail.java:1330 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "消息ID无效。" -#: src/src/i2p/susi/webmail/WebMail.java:1375 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "内部错误,连接已断开。" -#: src/src/i2p/susi/webmail/WebMail.java:1468 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "{0}的编码检测失败。" -#: src/src/i2p/susi/webmail/WebMail.java:1598 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "找不到附件." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1627 -#: src/src/i2p/susi/webmail/WebMail.java:1629 -#: src/src/i2p/susi/webmail/WebMail.java:2320 -#: src/src/i2p/susi/webmail/WebMail.java:3495 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "未找到消息。" -#: src/src/i2p/susi/webmail/WebMail.java:1732 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "已删除{0}封邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:1734 -#: src/src/i2p/susi/webmail/WebMail.java:1743 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "没有邮件被标记来删除。" -#: src/src/i2p/susi/webmail/WebMail.java:1808 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "主机未变更。编辑配置文件{0}来变更主机。" -#: src/src/i2p/susi/webmail/WebMail.java:1828 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "配置已保存" -#: src/src/i2p/susi/webmail/WebMail.java:1850 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "无效的每页数,重置为默认值。" -#: src/src/i2p/susi/webmail/WebMail.java:2298 -#: src/src/i2p/susi/webmail/WebMail.java:3107 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "登录" -#: src/src/i2p/susi/webmail/WebMail.java:2300 -#: src/src/i2p/susi/webmail/WebMail.java:2427 -#: src/src/i2p/susi/webmail/WebMail.java:3124 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "加载邮件中,请稍后..." -#: src/src/i2p/susi/webmail/WebMail.java:2308 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "{0} 封邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2310 -#: src/src/i2p/susi/webmail/WebMail.java:3267 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "没有邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2318 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "显示消息" -#: src/src/i2p/susi/webmail/WebMail.java:2323 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "新邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2325 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "配置" -#: src/src/i2p/susi/webmail/WebMail.java:2336 -msgid "Email" -msgstr "电子邮箱" - -#: src/src/i2p/susi/webmail/WebMail.java:2413 -#, java-format -msgid "{0} new message" -msgid_plural "{0} new messages" -msgstr[0] "{0}新消息" - -#: src/src/i2p/susi/webmail/WebMail.java:2416 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "没有新消息" -#: src/src/i2p/susi/webmail/WebMail.java:2429 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "正在检查服务器上的新邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2431 -#: src/src/i2p/susi/webmail/WebMail.java:3126 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "刷新该页面来更新" -#: src/src/i2p/susi/webmail/WebMail.java:2636 -#: src/src/i2p/susi/webmail/WebMail.java:3226 -#: src/src/i2p/susi/webmail/WebMail.java:3467 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "新增用户" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "没有主题" -#: src/src/i2p/susi/webmail/WebMail.java:2764 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "没有找到有效的发件人地址。" -#: src/src/i2p/susi/webmail/WebMail.java:2770 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "\\ '' {0} \\ ''中没有找到有效的地址。" -#: src/src/i2p/susi/webmail/WebMail.java:2784 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "没有找到收件人。" -#: src/src/i2p/susi/webmail/WebMail.java:2798 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "电子邮件过大,最大为{0}" -#: src/src/i2p/susi/webmail/WebMail.java:2841 -#: src/src/i2p/susi/webmail/WebMail.java:2922 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "正在发送邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:2846 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "发送邮件错误" -#: src/src/i2p/susi/webmail/WebMail.java:2880 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "邮件已发送。" -#: src/src/i2p/susi/webmail/WebMail.java:2972 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "发送" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "作为草稿保存" -#: src/src/i2p/susi/webmail/WebMail.java:2974 -#: src/src/i2p/susi/webmail/WebMail.java:3282 -#: src/src/i2p/susi/webmail/WebMail.java:3385 -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "取消" -#: src/src/i2p/susi/webmail/WebMail.java:3061 -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3318 #: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "发件人" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3179 -#: src/src/i2p/susi/webmail/WebMail.java:3475 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "收件人" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3479 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "抄送" -#: src/src/i2p/susi/webmail/WebMail.java:3064 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "密件抄送" -#: src/src/i2p/susi/webmail/WebMail.java:3065 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "主题" -#: src/src/i2p/susi/webmail/WebMail.java:3068 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "添加附件" -#: src/src/i2p/susi/webmail/WebMail.java:3074 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "附件" -#: src/src/i2p/susi/webmail/WebMail.java:3083 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "删除所选的附件" @@ -400,183 +431,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3100 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "电子邮件登入" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3102 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "用户" -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "密码" -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "脱机阅读邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3112 -#: src/src/i2p/susi/webmail/WebMail.java:3301 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "设置" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "创建帐户" -#: src/src/i2p/susi/webmail/WebMail.java:3114 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "了解 I2P 邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3139 -#: src/src/i2p/susi/webmail/WebMail.java:3409 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "新建" -#: src/src/i2p/susi/webmail/WebMail.java:3149 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "检查邮件" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3160 -#: src/src/i2p/susi/webmail/WebMail.java:3421 -#: src/src/i2p/susi/webmail/WebMail.java:3549 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "注销" -#: src/src/i2p/susi/webmail/WebMail.java:3178 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "标记为删除" -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3482 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "日期" -#: src/src/i2p/susi/webmail/WebMail.java:3183 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "大小" -#: src/src/i2p/susi/webmail/WebMail.java:3230 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "是新邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3257 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "邮件带有附件" -#: src/src/i2p/susi/webmail/WebMail.java:3259 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "邮件是垃圾邮件" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3280 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "真要删除标记的邮件?" -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "是的,立刻删除!" -#: src/src/i2p/susi/webmail/WebMail.java:3284 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "删除所选" -#: src/src/i2p/susi/webmail/WebMail.java:3286 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "全部标记" -#: src/src/i2p/susi/webmail/WebMail.java:3288 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "全部清除" -#: src/src/i2p/susi/webmail/WebMail.java:3313 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "文件夹" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "变更到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "第一页" -#: src/src/i2p/susi/webmail/WebMail.java:3321 -#: src/src/i2p/susi/webmail/WebMail.java:3433 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "上一页" -#: src/src/i2p/susi/webmail/WebMail.java:3330 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "第{0}页 共{1}页" -#: src/src/i2p/susi/webmail/WebMail.java:3332 -#: src/src/i2p/susi/webmail/WebMail.java:3448 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "下一页" -#: src/src/i2p/susi/webmail/WebMail.java:3333 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "最后一页" -#: src/src/i2p/susi/webmail/WebMail.java:3383 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "真的要删除此邮件?" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "是的,立刻删除!" -#: src/src/i2p/susi/webmail/WebMail.java:3412 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "回复" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "回复所有人" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "转寄" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "另存为" -#: src/src/i2p/susi/webmail/WebMail.java:3417 -#: src/src/i2p/susi/webmail/WebMail.java:3419 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "删除" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3425 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "移动到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3445 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "返回到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3530 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "文件夹页面大小" -#: src/src/i2p/susi/webmail/WebMail.java:3533 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "设置" -#: src/src/i2p/susi/webmail/WebMail.java:3536 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "高级配置" -#: src/src/i2p/susi/webmail/WebMail.java:3546 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "保存配置" diff -Nru i2p-2.4.0/apps/susimail/locale/messages_zh_TW.po i2p-2.5.0/apps/susimail/locale/messages_zh_TW.po --- i2p-2.4.0/apps/susimail/locale/messages_zh_TW.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/locale/messages_zh_TW.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: I2P\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-06 14:52+0000\n" +"POT-Creation-Date: 2024-03-27 13:00+0000\n" "PO-Revision-Date: 2011-03-11 22:21+0000\n" "Last-Translator: duck \n" "Language-Team: Chinese (Taiwan) (http://app.transifex.com/otf/I2P/language/zh_TW/)\n" @@ -18,128 +18,150 @@ "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: src/src/i2p/susi/webmail/MailCache.java:529 -#: src/src/i2p/susi/webmail/WebMail.java:2414 +#: src/src/i2p/susi/webmail/MailCache.java:551 +#: src/src/i2p/susi/webmail/WebMail.java:2626 #, java-format msgid "{0} new message" msgid_plural "{0} new messages" msgstr[0] "{0}新消息" -#: src/src/i2p/susi/webmail/MailCache.java:532 -#: src/src/i2p/susi/webmail/WebMail.java:2337 +#: src/src/i2p/susi/webmail/MailCache.java:554 +#: src/src/i2p/susi/webmail/WebMail.java:2539 msgid "Email" msgstr "電郵" -#: src/src/i2p/susi/webmail/MailPart.java:321 +#: src/src/i2p/susi/webmail/MailPart.java:336 #, java-format msgid "No encoder found for encoding \\''{0}\\''." msgstr "没有找到可用编码器处理编码\\ '' {0} \\ ''。" #. tagged in WebMail #: src/src/i2p/susi/webmail/Sorters.java:124 -#: src/src/i2p/susi/webmail/WebMail.java:1178 -#: src/src/i2p/susi/webmail/WebMail.java:1179 +#: src/src/i2p/susi/webmail/WebMail.java:1269 +#: src/src/i2p/susi/webmail/WebMail.java:1270 msgid "Re:" msgstr "回复:" #: src/src/i2p/susi/webmail/Sorters.java:125 -#: src/src/i2p/susi/webmail/WebMail.java:1258 -#: src/src/i2p/susi/webmail/WebMail.java:1259 +#: src/src/i2p/susi/webmail/WebMail.java:1349 +#: src/src/i2p/susi/webmail/WebMail.java:1350 msgid "Fwd:" msgstr "转发:" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:214 +#: src/src/i2p/susi/webmail/WebMail.java:222 msgid "Drafts" msgstr "草稿" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:215 +#: src/src/i2p/susi/webmail/WebMail.java:223 msgid "Sent" msgstr "已送出" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:216 +#: src/src/i2p/susi/webmail/WebMail.java:224 msgid "Trash" msgstr "垃圾筒" #. MailDir-like -#: src/src/i2p/susi/webmail/WebMail.java:217 +#: src/src/i2p/susi/webmail/WebMail.java:225 msgid "Bulk Mail" msgstr "大量邮件" #. untranslated, translate on use -#: src/src/i2p/susi/webmail/WebMail.java:221 +#: src/src/i2p/susi/webmail/WebMail.java:229 msgid "Inbox" msgstr "收件匧" -#: src/src/i2p/susi/webmail/WebMail.java:541 +#: src/src/i2p/susi/webmail/WebMail.java:555 +msgid "View email as HTML" +msgstr "以HTML格式查看邮件" + +#: src/src/i2p/susi/webmail/WebMail.java:573 +msgid "View email as plain text" +msgstr "以纯文本格式查看邮件" + +#: src/src/i2p/susi/webmail/WebMail.java:604 msgid "unknown" msgstr "未知" -#: src/src/i2p/susi/webmail/WebMail.java:590 +#: src/src/i2p/susi/webmail/WebMail.java:638 +msgid "" +"To protect your privacy, SusiMail has blocked remote content in this " +"message." +msgstr "为保护隐私,Susimail已屏蔽该信息的远端内容。" + +#: src/src/i2p/susi/webmail/WebMail.java:639 +msgid "Enable javascript for improved display of this message." +msgstr "启用 JavaScript 以改善此信息的显示。" + +#: src/src/i2p/susi/webmail/WebMail.java:665 #, java-format msgid "Charset \\''{0}\\'' not supported." msgstr "不支持字符集\\ '' {0} \\ ''。" -#: src/src/i2p/susi/webmail/WebMail.java:594 +#: src/src/i2p/susi/webmail/WebMail.java:669 #, java-format msgid "Part ({0}) not shown, because of {1}" msgstr "第({0})部分没有显示,因为{1}" -#: src/src/i2p/susi/webmail/WebMail.java:644 -#: src/src/i2p/susi/webmail/WebMail.java:649 +#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:724 #, java-format msgid "Download attachment {0}" msgstr "下载附件{0}" -#: src/src/i2p/susi/webmail/WebMail.java:650 +#: src/src/i2p/susi/webmail/WebMail.java:725 msgid "File is packed into a zipfile for security reasons." msgstr "出于安全原因,文件被打包为zip文件。" -#: src/src/i2p/susi/webmail/WebMail.java:655 +#: src/src/i2p/susi/webmail/WebMail.java:730 #, java-format msgid "Attachment ({0})." msgstr "附件({0})。" -#: src/src/i2p/susi/webmail/WebMail.java:715 +#: src/src/i2p/susi/webmail/WebMail.java:790 msgid "Need username for authentication." msgstr "需要认证用的用户名。" -#: src/src/i2p/susi/webmail/WebMail.java:719 +#: src/src/i2p/susi/webmail/WebMail.java:795 +msgid "Do not include @mail.i2p in the username" +msgstr "请勿在用户名中包含@mail.i2p" + +#: src/src/i2p/susi/webmail/WebMail.java:800 msgid "Need password for authentication." msgstr "需要认证用的密码。" -#: src/src/i2p/susi/webmail/WebMail.java:723 +#: src/src/i2p/susi/webmail/WebMail.java:806 msgid "Need hostname for connect." msgstr "需要连接用的主机名。" -#: src/src/i2p/susi/webmail/WebMail.java:728 +#: src/src/i2p/susi/webmail/WebMail.java:813 msgid "Need port number for pop3 connect." msgstr "需要POP3的连接端口号。" -#: src/src/i2p/susi/webmail/WebMail.java:735 +#: src/src/i2p/susi/webmail/WebMail.java:821 msgid "POP3 port number is not in range 0..65535." msgstr "POP3端口号超出范围0-65535。" -#: src/src/i2p/susi/webmail/WebMail.java:741 +#: src/src/i2p/susi/webmail/WebMail.java:827 msgid "POP3 port number is invalid." msgstr "POP3端口号是无效的。" -#: src/src/i2p/susi/webmail/WebMail.java:747 +#: src/src/i2p/susi/webmail/WebMail.java:833 msgid "Need port number for smtp connect." msgstr "需要的SMTP连接端口号。" -#: src/src/i2p/susi/webmail/WebMail.java:754 +#: src/src/i2p/susi/webmail/WebMail.java:841 msgid "SMTP port number is not in range 0..65535." msgstr "SMTP端口号是超出范围0-65535。" -#: src/src/i2p/susi/webmail/WebMail.java:760 +#: src/src/i2p/susi/webmail/WebMail.java:847 msgid "SMTP port number is invalid." msgstr "SMTP端口号无效。" -#: src/src/i2p/susi/webmail/WebMail.java:837 -#: src/src/i2p/susi/webmail/WebMail.java:1389 +#: src/src/i2p/susi/webmail/WebMail.java:924 +#: src/src/i2p/susi/webmail/WebMail.java:1480 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:446 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:644 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:657 @@ -151,241 +173,247 @@ msgid "Cannot connect" msgstr "不能连接" -#: src/src/i2p/susi/webmail/WebMail.java:933 +#: src/src/i2p/susi/webmail/WebMail.java:1020 #: src/src/i2p/susi/webmail/pop3/POP3MailBox.java:744 msgid "Error connecting to server" msgstr "連接服務器錯誤" #. _t("Internal error, lost connection.") + '\n' + -#: src/src/i2p/susi/webmail/WebMail.java:977 -#: src/src/i2p/susi/webmail/WebMail.java:991 +#: src/src/i2p/susi/webmail/WebMail.java:1064 +#: src/src/i2p/susi/webmail/WebMail.java:1078 msgid "User logged out." msgstr "用户已登出。" -#: src/src/i2p/susi/webmail/WebMail.java:1042 +#: src/src/i2p/susi/webmail/WebMail.java:1129 msgid "Draft saved." msgstr "草稿已保存。" -#: src/src/i2p/susi/webmail/WebMail.java:1052 -#: src/src/i2p/susi/webmail/WebMail.java:1293 -#: src/src/i2p/susi/webmail/WebMail.java:2729 -#: src/src/i2p/susi/webmail/WebMail.java:2910 +#: src/src/i2p/susi/webmail/WebMail.java:1139 +#: src/src/i2p/susi/webmail/WebMail.java:1384 +#: src/src/i2p/susi/webmail/WebMail.java:2985 +#: src/src/i2p/susi/webmail/WebMail.java:3166 msgid "Unable to save mail." msgstr "无法保存邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:1182 +#: src/src/i2p/susi/webmail/WebMail.java:1273 #, java-format msgid "On {0} {1} wrote:" msgstr "在 {0} {1} 写到:" -#: src/src/i2p/susi/webmail/WebMail.java:1245 -#: src/src/i2p/susi/webmail/WebMail.java:1472 +#: src/src/i2p/susi/webmail/WebMail.java:1336 +#: src/src/i2p/susi/webmail/WebMail.java:1563 #, java-format msgid "Error reading uploaded file: {0}" msgstr "读取上传文件错误:{0}" -#: src/src/i2p/susi/webmail/WebMail.java:1271 +#: src/src/i2p/susi/webmail/WebMail.java:1362 msgid "begin forwarded mail" msgstr "转信开始" -#: src/src/i2p/susi/webmail/WebMail.java:1281 +#: src/src/i2p/susi/webmail/WebMail.java:1372 msgid "end forwarded mail" msgstr "转信结束" -#: src/src/i2p/susi/webmail/WebMail.java:1299 -#: src/src/i2p/susi/webmail/WebMail.java:3492 +#: src/src/i2p/susi/webmail/WebMail.java:1390 +#: src/src/i2p/susi/webmail/WebMail.java:3788 msgid "Could not fetch mail body." msgstr "无法获取邮件正文。" -#: src/src/i2p/susi/webmail/WebMail.java:1331 +#: src/src/i2p/susi/webmail/WebMail.java:1422 msgid "Message id not valid." msgstr "消息ID无效。" -#: src/src/i2p/susi/webmail/WebMail.java:1376 +#: src/src/i2p/susi/webmail/WebMail.java:1467 msgid "Internal error, lost connection." msgstr "内部错误,连接已断开。" -#: src/src/i2p/susi/webmail/WebMail.java:1469 +#: src/src/i2p/susi/webmail/WebMail.java:1560 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:386 #, java-format msgid "No Encoding found for {0}" msgstr "{0}的编码检测失败。" -#: src/src/i2p/susi/webmail/WebMail.java:1599 +#: src/src/i2p/susi/webmail/WebMail.java:1707 +#: src/src/i2p/susi/webmail/WebMail.java:1754 msgid "Attachment not found." msgstr "找不到附件." #. error if we get here -#: src/src/i2p/susi/webmail/WebMail.java:1628 -#: src/src/i2p/susi/webmail/WebMail.java:1630 -#: src/src/i2p/susi/webmail/WebMail.java:2321 -#: src/src/i2p/susi/webmail/WebMail.java:3496 +#: src/src/i2p/susi/webmail/WebMail.java:1780 +#: src/src/i2p/susi/webmail/WebMail.java:1782 +#: src/src/i2p/susi/webmail/WebMail.java:2523 +#: src/src/i2p/susi/webmail/WebMail.java:3792 msgid "Message not found." msgstr "未找到消息。" -#: src/src/i2p/susi/webmail/WebMail.java:1733 +#: src/src/i2p/susi/webmail/WebMail.java:1914 #, java-format msgid "1 message deleted." msgid_plural "{0} messages deleted." msgstr[0] "已删除{0}封邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:1735 -#: src/src/i2p/susi/webmail/WebMail.java:1744 +#: src/src/i2p/susi/webmail/WebMail.java:1916 +#: src/src/i2p/susi/webmail/WebMail.java:1925 msgid "No messages marked for deletion." msgstr "没有邮件被标记来删除。" -#: src/src/i2p/susi/webmail/WebMail.java:1809 +#: src/src/i2p/susi/webmail/WebMail.java:1990 #, java-format msgid "Host unchanged. Edit configuration file {0} to change host." msgstr "主机未变更。编辑配置文件{0}来变更主机。" -#: src/src/i2p/susi/webmail/WebMail.java:1829 +#: src/src/i2p/susi/webmail/WebMail.java:2010 msgid "Configuration saved" msgstr "配置已保存" -#: src/src/i2p/susi/webmail/WebMail.java:1851 +#: src/src/i2p/susi/webmail/WebMail.java:2032 msgid "Invalid pagesize number, resetting to default value." msgstr "无效的每页数,重置为默认值。" -#: src/src/i2p/susi/webmail/WebMail.java:2299 -#: src/src/i2p/susi/webmail/WebMail.java:3108 +#: src/src/i2p/susi/webmail/WebMail.java:2501 +#: src/src/i2p/susi/webmail/WebMail.java:3398 msgid "Login" msgstr "登入" -#: src/src/i2p/susi/webmail/WebMail.java:2301 -#: src/src/i2p/susi/webmail/WebMail.java:2428 -#: src/src/i2p/susi/webmail/WebMail.java:3125 +#: src/src/i2p/susi/webmail/WebMail.java:2503 +#: src/src/i2p/susi/webmail/WebMail.java:2644 +#: src/src/i2p/susi/webmail/WebMail.java:3415 msgid "Loading emails, please wait..." msgstr "加载邮件中,请稍后..." -#: src/src/i2p/susi/webmail/WebMail.java:2309 +#: src/src/i2p/susi/webmail/WebMail.java:2511 #, java-format msgid "1 Message" msgid_plural "{0} Messages" msgstr[0] "{0} 封邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2311 -#: src/src/i2p/susi/webmail/WebMail.java:3268 +#: src/src/i2p/susi/webmail/WebMail.java:2513 +#: src/src/i2p/susi/webmail/WebMail.java:3558 msgid "No messages" msgstr "沒有訊息" -#: src/src/i2p/susi/webmail/WebMail.java:2319 +#: src/src/i2p/susi/webmail/WebMail.java:2521 msgid "Show Message" msgstr "显示消息" -#: src/src/i2p/susi/webmail/WebMail.java:2324 +#: src/src/i2p/susi/webmail/WebMail.java:2526 msgid "New Message" msgstr "新消息" -#: src/src/i2p/susi/webmail/WebMail.java:2326 +#: src/src/i2p/susi/webmail/WebMail.java:2528 msgid "Configuration" msgstr "設定" -#: src/src/i2p/susi/webmail/WebMail.java:2417 +#: src/src/i2p/susi/webmail/WebMail.java:2629 msgid "No new messages" msgstr "没有新消息" -#: src/src/i2p/susi/webmail/WebMail.java:2430 +#: src/src/i2p/susi/webmail/WebMail.java:2646 msgid "Checking for new emails on server" msgstr "正在检查服务器上的新邮件" -#: src/src/i2p/susi/webmail/WebMail.java:2432 -#: src/src/i2p/susi/webmail/WebMail.java:3127 +#: src/src/i2p/susi/webmail/WebMail.java:2648 +#: src/src/i2p/susi/webmail/WebMail.java:3417 msgid "Refresh the page for updates" msgstr "刷新该页面来更新" -#: src/src/i2p/susi/webmail/WebMail.java:2637 -#: src/src/i2p/susi/webmail/WebMail.java:3227 -#: src/src/i2p/susi/webmail/WebMail.java:3468 +#: src/src/i2p/susi/webmail/WebMail.java:2659 +#: src/src/i2p/susi/webmail/WebMail.java:3379 +msgid "Add a new user" +msgstr "添加使用者" + +#: src/src/i2p/susi/webmail/WebMail.java:2893 +#: src/src/i2p/susi/webmail/WebMail.java:3517 +#: src/src/i2p/susi/webmail/WebMail.java:3764 msgid "no subject" msgstr "没有主题" -#: src/src/i2p/susi/webmail/WebMail.java:2765 +#: src/src/i2p/susi/webmail/WebMail.java:3021 msgid "Found no valid sender address." msgstr "没有找到有效的发件人地址。" -#: src/src/i2p/susi/webmail/WebMail.java:2771 +#: src/src/i2p/susi/webmail/WebMail.java:3027 #, java-format msgid "Found no valid address in \\''{0}\\''." msgstr "\\ '' {0} \\ ''中没有找到有效的地址。" -#: src/src/i2p/susi/webmail/WebMail.java:2785 +#: src/src/i2p/susi/webmail/WebMail.java:3041 msgid "No recipients found." msgstr "没有找到收件人。" -#: src/src/i2p/susi/webmail/WebMail.java:2799 +#: src/src/i2p/susi/webmail/WebMail.java:3055 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:302 #, java-format msgid "Email is too large, max is {0}" msgstr "邮件过大,最大为{0}" -#: src/src/i2p/susi/webmail/WebMail.java:2842 -#: src/src/i2p/susi/webmail/WebMail.java:2923 +#: src/src/i2p/susi/webmail/WebMail.java:3098 +#: src/src/i2p/susi/webmail/WebMail.java:3179 msgid "Sending mail." msgstr "正在发送邮件。" -#: src/src/i2p/susi/webmail/WebMail.java:2847 +#: src/src/i2p/susi/webmail/WebMail.java:3103 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:254 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:346 #: src/src/i2p/susi/webmail/smtp/SMTPClient.java:351 msgid "Error sending mail" msgstr "发送邮件错误" -#: src/src/i2p/susi/webmail/WebMail.java:2881 +#: src/src/i2p/susi/webmail/WebMail.java:3137 msgid "Mail sent." msgstr "邮件已发送。" -#: src/src/i2p/susi/webmail/WebMail.java:2973 +#: src/src/i2p/susi/webmail/WebMail.java:3229 msgid "Send" msgstr "傳送" -#: src/src/i2p/susi/webmail/WebMail.java:2974 +#: src/src/i2p/susi/webmail/WebMail.java:3230 msgid "Save as Draft" msgstr "作为草稿保存" -#: src/src/i2p/susi/webmail/WebMail.java:2975 -#: src/src/i2p/susi/webmail/WebMail.java:3283 -#: src/src/i2p/susi/webmail/WebMail.java:3386 -#: src/src/i2p/susi/webmail/WebMail.java:3548 +#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3567 +#: src/src/i2p/susi/webmail/WebMail.java:3682 +#: src/src/i2p/susi/webmail/WebMail.java:3844 msgid "Cancel" msgstr "取消" -#: src/src/i2p/susi/webmail/WebMail.java:3062 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3318 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3767 msgid "From" msgstr "從" -#: src/src/i2p/susi/webmail/WebMail.java:3063 -#: src/src/i2p/susi/webmail/WebMail.java:3180 -#: src/src/i2p/susi/webmail/WebMail.java:3476 +#: src/src/i2p/susi/webmail/WebMail.java:3319 +#: src/src/i2p/susi/webmail/WebMail.java:3470 +#: src/src/i2p/susi/webmail/WebMail.java:3772 msgid "To" msgstr "至" -#: src/src/i2p/susi/webmail/WebMail.java:3064 -#: src/src/i2p/susi/webmail/WebMail.java:3480 +#: src/src/i2p/susi/webmail/WebMail.java:3320 +#: src/src/i2p/susi/webmail/WebMail.java:3776 msgid "Cc" msgstr "副本" -#: src/src/i2p/susi/webmail/WebMail.java:3065 +#: src/src/i2p/susi/webmail/WebMail.java:3321 msgid "Bcc" msgstr "密件副本" -#: src/src/i2p/susi/webmail/WebMail.java:3066 -#: src/src/i2p/susi/webmail/WebMail.java:3181 -#: src/src/i2p/susi/webmail/WebMail.java:3473 +#: src/src/i2p/susi/webmail/WebMail.java:3322 +#: src/src/i2p/susi/webmail/WebMail.java:3471 +#: src/src/i2p/susi/webmail/WebMail.java:3769 msgid "Subject" msgstr "主旨" -#: src/src/i2p/susi/webmail/WebMail.java:3069 +#: src/src/i2p/susi/webmail/WebMail.java:3325 msgid "Add Attachment" msgstr "添加附件" -#: src/src/i2p/susi/webmail/WebMail.java:3075 +#: src/src/i2p/susi/webmail/WebMail.java:3331 msgid "Attachments" msgstr "附件" -#: src/src/i2p/susi/webmail/WebMail.java:3084 +#: src/src/i2p/susi/webmail/WebMail.java:3346 msgid "Delete selected attachments" msgstr "删除所选的附件" @@ -396,183 +424,183 @@ #. Integer.toString(DEFAULT_POP3PORT)); #. String smtp = Config.getProperty(CONFIG_PORTS_SMTP, #. Integer.toString(DEFAULT_SMTPPORT)); -#: src/src/i2p/susi/webmail/WebMail.java:3101 +#: src/src/i2p/susi/webmail/WebMail.java:3363 msgid "Email Login" msgstr "电子邮件登入" #. current postman hq length limits 16/12, new postman version 32/32 -#: src/src/i2p/susi/webmail/WebMail.java:3103 +#: src/src/i2p/susi/webmail/WebMail.java:3365 msgid "User" msgstr "用戶" -#: src/src/i2p/susi/webmail/WebMail.java:3104 +#: src/src/i2p/susi/webmail/WebMail.java:3394 msgid "Password" msgstr "密碼" -#: src/src/i2p/susi/webmail/WebMail.java:3109 +#: src/src/i2p/susi/webmail/WebMail.java:3399 msgid "Read Mail Offline" msgstr "脱机阅读邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3113 -#: src/src/i2p/susi/webmail/WebMail.java:3302 +#: src/src/i2p/susi/webmail/WebMail.java:3403 +#: src/src/i2p/susi/webmail/WebMail.java:3586 msgid "Settings" msgstr "設定" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Create Account" msgstr "創建帳戶" -#: src/src/i2p/susi/webmail/WebMail.java:3115 +#: src/src/i2p/susi/webmail/WebMail.java:3405 msgid "Learn about I2P mail" msgstr "了解 I2P 邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3140 -#: src/src/i2p/susi/webmail/WebMail.java:3410 +#: src/src/i2p/susi/webmail/WebMail.java:3430 +#: src/src/i2p/susi/webmail/WebMail.java:3706 msgid "New" msgstr "新增" -#: src/src/i2p/susi/webmail/WebMail.java:3150 +#: src/src/i2p/susi/webmail/WebMail.java:3440 msgid "Check Mail" msgstr "检查邮件" #. if (Config.hasConfigFile()) #. out.println(button( RELOAD, _t("Reload Config") ) + spacer); -#: src/src/i2p/susi/webmail/WebMail.java:3161 -#: src/src/i2p/susi/webmail/WebMail.java:3422 -#: src/src/i2p/susi/webmail/WebMail.java:3550 +#: src/src/i2p/susi/webmail/WebMail.java:3451 +#: src/src/i2p/susi/webmail/WebMail.java:3718 +#: src/src/i2p/susi/webmail/WebMail.java:3846 msgid "Logout" msgstr "登出" -#: src/src/i2p/susi/webmail/WebMail.java:3179 +#: src/src/i2p/susi/webmail/WebMail.java:3469 msgid "Mark for deletion" msgstr "標記為刪除" -#: src/src/i2p/susi/webmail/WebMail.java:3182 -#: src/src/i2p/susi/webmail/WebMail.java:3483 +#: src/src/i2p/susi/webmail/WebMail.java:3472 +#: src/src/i2p/susi/webmail/WebMail.java:3779 msgid "Date" msgstr "日期" -#: src/src/i2p/susi/webmail/WebMail.java:3184 +#: src/src/i2p/susi/webmail/WebMail.java:3474 msgid "Size" msgstr "大小" -#: src/src/i2p/susi/webmail/WebMail.java:3231 +#: src/src/i2p/susi/webmail/WebMail.java:3521 msgid "Message is new" msgstr "是新邮件" -#: src/src/i2p/susi/webmail/WebMail.java:3258 +#: src/src/i2p/susi/webmail/WebMail.java:3548 msgid "Message has an attachment" msgstr "邮件带有附件" -#: src/src/i2p/susi/webmail/WebMail.java:3260 +#: src/src/i2p/susi/webmail/WebMail.java:3550 msgid "Message is spam" msgstr "邮件是垃圾邮件" #. TODO ngettext -#: src/src/i2p/susi/webmail/WebMail.java:3281 +#: src/src/i2p/susi/webmail/WebMail.java:3565 msgid "Really delete the marked messages?" msgstr "真要删除标记的邮件?" -#: src/src/i2p/susi/webmail/WebMail.java:3282 +#: src/src/i2p/susi/webmail/WebMail.java:3566 msgid "Yes, really delete them!" msgstr "是的,立刻删除!" -#: src/src/i2p/susi/webmail/WebMail.java:3285 +#: src/src/i2p/susi/webmail/WebMail.java:3569 msgid "Delete Selected" msgstr "刪除所選" -#: src/src/i2p/susi/webmail/WebMail.java:3287 +#: src/src/i2p/susi/webmail/WebMail.java:3571 msgid "Mark All" msgstr "全部标记" -#: src/src/i2p/susi/webmail/WebMail.java:3289 +#: src/src/i2p/susi/webmail/WebMail.java:3573 msgid "Clear All" msgstr "全部清除" -#: src/src/i2p/susi/webmail/WebMail.java:3314 +#: src/src/i2p/susi/webmail/WebMail.java:3609 msgid "Folder" msgstr "文件夹" #. TODO css to center it -#: src/src/i2p/susi/webmail/WebMail.java:3315 +#: src/src/i2p/susi/webmail/WebMail.java:3610 msgid "Change to Folder" msgstr "变更到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3321 +#: src/src/i2p/susi/webmail/WebMail.java:3616 msgid "First" msgstr "第一" -#: src/src/i2p/susi/webmail/WebMail.java:3322 -#: src/src/i2p/susi/webmail/WebMail.java:3434 +#: src/src/i2p/susi/webmail/WebMail.java:3617 +#: src/src/i2p/susi/webmail/WebMail.java:3730 msgid "Previous" msgstr "前一個" -#: src/src/i2p/susi/webmail/WebMail.java:3331 +#: src/src/i2p/susi/webmail/WebMail.java:3626 #, java-format msgid "Page {0} of {1}" msgstr "第{0}页 共{1}页" -#: src/src/i2p/susi/webmail/WebMail.java:3333 -#: src/src/i2p/susi/webmail/WebMail.java:3449 +#: src/src/i2p/susi/webmail/WebMail.java:3628 +#: src/src/i2p/susi/webmail/WebMail.java:3745 msgid "Next" msgstr "下一個" -#: src/src/i2p/susi/webmail/WebMail.java:3334 +#: src/src/i2p/susi/webmail/WebMail.java:3629 msgid "Last" msgstr "最後" -#: src/src/i2p/susi/webmail/WebMail.java:3384 +#: src/src/i2p/susi/webmail/WebMail.java:3680 msgid "Really delete this message?" msgstr "真的要删除此邮件?" -#: src/src/i2p/susi/webmail/WebMail.java:3385 +#: src/src/i2p/susi/webmail/WebMail.java:3681 msgid "Yes, really delete it!" msgstr "是的,立刻删除!" -#: src/src/i2p/susi/webmail/WebMail.java:3413 +#: src/src/i2p/susi/webmail/WebMail.java:3709 msgid "Reply" msgstr "回覆" -#: src/src/i2p/susi/webmail/WebMail.java:3414 +#: src/src/i2p/susi/webmail/WebMail.java:3710 msgid "Reply All" msgstr "回复所有人" -#: src/src/i2p/susi/webmail/WebMail.java:3415 +#: src/src/i2p/susi/webmail/WebMail.java:3711 msgid "Forward" msgstr "下一頁" -#: src/src/i2p/susi/webmail/WebMail.java:3416 +#: src/src/i2p/susi/webmail/WebMail.java:3712 msgid "Save As" msgstr "另存新檔" -#: src/src/i2p/susi/webmail/WebMail.java:3418 -#: src/src/i2p/susi/webmail/WebMail.java:3420 +#: src/src/i2p/susi/webmail/WebMail.java:3714 +#: src/src/i2p/susi/webmail/WebMail.java:3716 msgid "Delete" msgstr "刪除" #. can't move unless has body #. can't move from drafts -#: src/src/i2p/susi/webmail/WebMail.java:3426 +#: src/src/i2p/susi/webmail/WebMail.java:3722 msgid "Move to Folder" msgstr "移动到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3446 +#: src/src/i2p/susi/webmail/WebMail.java:3742 msgid "Back to Folder" msgstr "返回到文件夹" -#: src/src/i2p/susi/webmail/WebMail.java:3531 +#: src/src/i2p/susi/webmail/WebMail.java:3827 msgid "Folder Page Size" msgstr "文件夹页面大小" -#: src/src/i2p/susi/webmail/WebMail.java:3534 +#: src/src/i2p/susi/webmail/WebMail.java:3830 msgid "Set" msgstr "設置" -#: src/src/i2p/susi/webmail/WebMail.java:3537 +#: src/src/i2p/susi/webmail/WebMail.java:3833 msgid "Advanced Configuration" msgstr "進階設定" -#: src/src/i2p/susi/webmail/WebMail.java:3547 +#: src/src/i2p/susi/webmail/WebMail.java:3843 msgid "Save Configuration" msgstr "保存配置" diff -Nru i2p-2.4.0/apps/susimail/src/js/Markdown.Converter.js i2p-2.5.0/apps/susimail/src/js/Markdown.Converter.js --- i2p-2.4.0/apps/susimail/src/js/Markdown.Converter.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/js/Markdown.Converter.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,1623 @@ +"use strict"; +var Markdown; + +if (typeof exports === "object" && typeof require === "function") // we're in a CommonJS (e.g. Node.js) module + Markdown = exports; +else + Markdown = {}; + +// The following text is included for historical reasons, but should +// be taken with a pinch of salt; it's not all true anymore. + +// +// Wherever possible, Showdown is a straight, line-by-line port +// of the Perl version of Markdown. +// +// This is not a normal parser design; it's basically just a +// series of string substitutions. It's hard to read and +// maintain this way, but keeping Showdown close to the original +// design makes it easier to port new features. +// +// More importantly, Showdown behaves like markdown.pl in most +// edge cases. So web applications can do client-side preview +// in Javascript, and then build identical HTML on the server. +// +// This port needs the new RegExp functionality of ECMA 262, +// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers +// should do fine. Even with the new regular expression features, +// We do a lot of work to emulate Perl's regex functionality. +// The tricky changes in this file mostly have the "attacklab:" +// label. Major or self-explanatory changes don't. +// +// Smart diff tools like Araxis Merge will be able to match up +// this file with markdown.pl in a useful way. A little tweaking +// helps: in a copy of markdown.pl, replace "#" with "//" and +// replace "$text" with "text". Be sure to ignore whitespace +// and line endings. +// + + +// +// Usage: +// +// var text = "Markdown *rocks*."; +// +// var converter = new Markdown.Converter(); +// var html = converter.makeHtml(text); +// +// alert(html); +// +// Note: move the sample code to the bottom of this +// file before uncommenting it. +// + +(function () { + + function identity(x) { return x; } + function returnFalse(x) { return false; } + + function HookCollection() { } + + HookCollection.prototype = { + + chain: function (hookname, func) { + var original = this[hookname]; + if (!original) + throw new Error("unknown hook " + hookname); + + if (original === identity) + this[hookname] = func; + else + this[hookname] = function (text) { + var args = Array.prototype.slice.call(arguments, 0); + args[0] = original.apply(null, args); + return func.apply(null, args); + }; + }, + set: function (hookname, func) { + if (!this[hookname]) + throw new Error("unknown hook " + hookname); + this[hookname] = func; + }, + addNoop: function (hookname) { + this[hookname] = identity; + }, + addFalse: function (hookname) { + this[hookname] = returnFalse; + } + }; + + Markdown.HookCollection = HookCollection; + + // g_urls and g_titles allow arbitrary user-entered strings as keys. This + // caused an exception (and hence stopped the rendering) when the user entered + // e.g. [push] or [__proto__]. Adding a prefix to the actual key prevents this + // (since no builtin property starts with "s_"). See + // http://meta.stackexchange.com/questions/64655/strange-wmd-bug + // (granted, switching from Array() to Object() alone would have left only __proto__ + // to be a problem) + function SaveHash() { } + SaveHash.prototype = { + set: function (key, value) { + this["s_" + key] = value; + }, + get: function (key) { + return this["s_" + key]; + } + }; + + Markdown.Converter = function (OPTIONS) { + var pluginHooks = this.hooks = new HookCollection(); + + // given a URL that was encountered by itself (without markup), should return the link text that's to be given to this link + pluginHooks.addNoop("plainLinkText"); + + // called with the orignal text as given to makeHtml. The result of this plugin hook is the actual markdown source that will be cooked + pluginHooks.addNoop("preConversion"); + + // called with the text once all normalizations have been completed (tabs to spaces, line endings, etc.), but before any conversions have + pluginHooks.addNoop("postNormalization"); + + // Called with the text before / after creating block elements like code blocks and lists. Note that this is called recursively + // with inner content, e.g. it's called with the full text, and then only with the content of a blockquote. The inner + // call will receive outdented text. + pluginHooks.addNoop("preBlockGamut"); + pluginHooks.addNoop("postBlockGamut"); + + // called with the text of a single block element before / after the span-level conversions (bold, code spans, etc.) have been made + pluginHooks.addNoop("preSpanGamut"); + pluginHooks.addNoop("postSpanGamut"); + + // called with the final cooked HTML code. The result of this plugin hook is the actual output of makeHtml + pluginHooks.addNoop("postConversion"); + + // + // Private state of the converter instance: + // + + // Global hashes, used by various utility routines + var g_urls; + var g_titles; + var g_html_blocks; + + // Used to track when we're inside an ordered or unordered list + // (see _ProcessListItems() for details): + var g_list_level; + + OPTIONS = OPTIONS || {}; + var asciify = identity, deasciify = identity; + if (OPTIONS.nonAsciiLetters) { + + /* In JavaScript regular expressions, \w only denotes [a-zA-Z0-9_]. + * That's why there's inconsistent handling e.g. with intra-word bolding + * of Japanese words. That's why we do the following if OPTIONS.nonAsciiLetters + * is true: + * + * Before doing bold and italics, we find every instance + * of a unicode word character in the Markdown source that is not + * matched by \w, and the letter "Q". We take the character's code point + * and encode it in base 51, using the "digits" + * + * A, B, ..., P, R, ..., Y, Z, a, b, ..., y, z + * + * delimiting it with "Q" on both sides. For example, the source + * + * > In Chinese, the smurfs are called 藍精靈, meaning "blue spirits". + * + * turns into + * + * > In Chinese, the smurfs are called QNIhQQMOIQQOuUQ, meaning "blue spirits". + * + * Since everything that is a letter in Unicode is now a letter (or + * several letters) in ASCII, \w and \b should always do the right thing. + * + * After the bold/italic conversion, we decode again; since "Q" was encoded + * alongside all non-ascii characters (as "QBfQ"), and the conversion + * will not generate "Q", the only instances of that letter should be our + * encoded characters. And since the conversion will not break words, the + * "Q...Q" should all still be in one piece. + * + * We're using "Q" as the delimiter because it's probably one of the + * rarest characters, and also because I can't think of any special behavior + * that would ever be triggered by this letter (to use a silly example, if we + * delimited with "H" on the left and "P" on the right, then "Ψ" would be + * encoded as "HTTP", which may cause special behavior). The latter would not + * actually be a huge issue for bold/italic, but may be if we later use it + * in other places as well. + * */ + (function () { + var lettersThatJavaScriptDoesNotKnowAndQ = /[Q\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376-\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0523\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0621-\u064a\u0660-\u0669\u066e-\u066f\u0671-\u06d3\u06d5\u06e5-\u06e6\u06ee-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07c0-\u07ea\u07f4-\u07f5\u07fa\u0904-\u0939\u093d\u0950\u0958-\u0961\u0966-\u096f\u0971-\u0972\u097b-\u097f\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc-\u09dd\u09df-\u09e1\u09e6-\u09f1\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e\u0a66-\u0a6f\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0-\u0ae1\u0ae6-\u0aef\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b66-\u0b6f\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0be6-\u0bef\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58-\u0c59\u0c60-\u0c61\u0c66-\u0c6f\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0-\u0ce1\u0ce6-\u0cef\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d28\u0d2a-\u0d39\u0d3d\u0d60-\u0d61\u0d66-\u0d6f\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e46\u0e50-\u0e59\u0e81-\u0e82\u0e84\u0e87-\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2-\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0ed0-\u0ed9\u0edc-\u0edd\u0f00\u0f20-\u0f29\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8b\u1000-\u102a\u103f-\u1049\u1050-\u1055\u105a-\u105d\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e\u1090-\u1099\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1159\u115f-\u11a2\u11a8-\u11f9\u1200-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u1676\u1681-\u169a\u16a0-\u16ea\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u17e0-\u17e9\u1810-\u1819\u1820-\u1877\u1880-\u18a8\u18aa\u1900-\u191c\u1946-\u196d\u1970-\u1974\u1980-\u19a9\u19c1-\u19c7\u19d0-\u19d9\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b50-\u1b59\u1b83-\u1ba0\u1bae-\u1bb9\u1c00-\u1c23\u1c40-\u1c49\u1c4d-\u1c7d\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u203f-\u2040\u2054\u2071\u207f\u2090-\u2094\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2183-\u2184\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2c6f\u2c71-\u2c7d\u2c80-\u2ce4\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3006\u3031-\u3035\u303b-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31b7\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fc3\ua000-\ua48c\ua500-\ua60c\ua610-\ua62b\ua640-\ua65f\ua662-\ua66e\ua67f-\ua697\ua717-\ua71f\ua722-\ua788\ua78b-\ua78c\ua7fb-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8d0-\ua8d9\ua900-\ua925\ua930-\ua946\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa50-\uaa59\uac00-\ud7a3\uf900-\ufa2d\ufa30-\ufa6a\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe33-\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]/g; + var cp_Q = "Q".charCodeAt(0); + var cp_A = "A".charCodeAt(0); + var cp_Z = "Z".charCodeAt(0); + var dist_Za = "a".charCodeAt(0) - cp_Z - 1; + + asciify = function(text) { + return text.replace(lettersThatJavaScriptDoesNotKnowAndQ, function (m) { + var c = m.charCodeAt(0); + var s = ""; + var v; + while (c > 0) { + v = (c % 51) + cp_A; + if (v >= cp_Q) + v++; + if (v > cp_Z) + v += dist_Za; + s = String.fromCharCode(v) + s; + c = c / 51 | 0; + } + return "Q" + s + "Q"; + }) + }; + + deasciify = function(text) { + return text.replace(/Q([A-PR-Za-z]{1,3})Q/g, function (m, s) { + var c = 0; + var v; + for (var i = 0; i < s.length; i++) { + v = s.charCodeAt(i); + if (v > cp_Z) + v -= dist_Za; + if (v > cp_Q) + v--; + v -= cp_A; + c = (c * 51) + v; + } + return String.fromCharCode(c); + }) + } + })(); + } + + var _DoItalicsAndBold = OPTIONS.asteriskIntraWordEmphasis ? _DoItalicsAndBold_AllowIntrawordWithAsterisk : _DoItalicsAndBoldStrict; + + this.makeHtml = function (text) { + + // + // Main function. The order in which other subs are called here is + // essential. Link and image substitutions need to happen before + // _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the + // and tags get encoded. + // + + // This will only happen if makeHtml on the same converter instance is called from a plugin hook. + // Don't do that. + if (g_urls) + throw new Error("Recursive call to converter.makeHtml"); + + // Create the private state objects. + g_urls = new SaveHash(); + g_titles = new SaveHash(); + g_html_blocks = []; + g_list_level = 0; + + text = pluginHooks.preConversion(text); + + // attacklab: Replace ~ with ~T + // This lets us use tilde as an escape char to avoid md5 hashes + // The choice of character is arbitray; anything that isn't + // magic in Markdown will work. + text = text.replace(/~/g, "~T"); + + // attacklab: Replace $ with ~D + // RegExp interprets $ as a special character + // when it's in a replacement string + text = text.replace(/\$/g, "~D"); + + // Standardize line endings + text = text.replace(/\r\n/g, "\n"); // DOS to Unix + text = text.replace(/\r/g, "\n"); // Mac to Unix + + // Make sure text begins and ends with a couple of newlines: + text = "\n\n" + text + "\n\n"; + + // Convert all tabs to spaces. + text = _Detab(text); + + // Strip any lines consisting only of spaces and tabs. + // This makes subsequent regexen easier to write, because we can + // match consecutive blank lines with /\n+/ instead of something + // contorted like /[ \t]*\n+/ . + text = text.replace(/^[ \t]+$/mg, ""); + + text = pluginHooks.postNormalization(text); + + // Turn block-level HTML blocks into hash entries + text = _HashHTMLBlocks(text); + + // Strip link definitions, store in hashes. + text = _StripLinkDefinitions(text); + + text = _RunBlockGamut(text); + + text = _UnescapeSpecialChars(text); + + // attacklab: Restore dollar signs + text = text.replace(/~D/g, "$$"); + + // attacklab: Restore tildes + text = text.replace(/~T/g, "~"); + + text = pluginHooks.postConversion(text); + + g_html_blocks = g_titles = g_urls = null; + + return text; + }; + + function _StripLinkDefinitions(text) { + // + // Strips link definitions from text, stores the URLs and titles in + // hash references. + // + + // Link defs are in the form: ^[id]: url "optional title" + + /* + text = text.replace(/ + ^[ ]{0,3}\[([^\[\]]+)\]: // id = $1 attacklab: g_tab_width - 1 + [ \t]* + \n? // maybe *one* newline + [ \t]* + ? // url = $2 + (?=\s|$) // lookahead for whitespace instead of the lookbehind removed below + [ \t]* + \n? // maybe one newline + [ \t]* + ( // (potential) title = $3 + (\n*) // any lines skipped = $4 attacklab: lookbehind removed + [ \t]+ + ["(] + (.+?) // title = $5 + [")] + [ \t]* + )? // title is optional + (\n+) // subsequent newlines = $6, capturing because they must be put back if the potential title isn't an actual title + /gm, function(){...}); + */ + + text = text.replace(/^[ ]{0,3}\[([^\[\]]+)\]:[ \t]*\n?[ \t]*?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(\n+)/gm, + function (wholeMatch, m1, m2, m3, m4, m5, m6) { + m1 = m1.toLowerCase(); + g_urls.set(m1, _EncodeAmpsAndAngles(m2)); // Link IDs are case-insensitive + if (m4) { + // Oops, found blank lines, so it's not a title. + // Put back the parenthetical statement we stole. + return m3 + m6; + } else if (m5) { + g_titles.set(m1, m5.replace(/"/g, """)); + } + + // Completely remove the definition from the text + return ""; + } + ); + + return text; + } + + function _HashHTMLBlocks(text) { + + // Hashify HTML blocks: + // We only want to do this for block-level HTML tags, such as headers, + // lists, and tables. That's because we still want to wrap

    s around + // "paragraphs" that are wrapped in non-block-level tags, such as anchors, + // phrase emphasis, and spans. The list of tags we're looking for is + // hard-coded: + var block_tags_a = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del" + var block_tags_b = "p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math" + + // First, look for nested blocks, e.g.: + //

    + // + // The outermost tags must start at the left margin for this to match, and + // the inner nested divs must be indented. + // We need to do this before the next, more liberal match, because the next + // match will start at the first `
    ` and stop at the first `
    `. + + // attacklab: This regex can be expensive when it fails. + + /* + text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_a) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*?\n // any number of lines, minimally matching + // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm, hashMatch); + + // + // Now match more liberally, simply from `\n` to `\n` + // + + /* + text = text.replace(/ + ( // save in $1 + ^ // start of line (with /m) + <($block_tags_b) // start tag = $2 + \b // word break + // attacklab: hack around khtml/pcre bug... + [^\r]*? // any number of lines, minimally matching + .* // the matching end tag + [ \t]* // trailing spaces/tabs + (?=\n+) // followed by a newline + ) // attacklab: there are sentinel newlines at end of document + /gm,function(){...}}; + */ + text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm, hashMatch); + + // Special case just for
    . It was easier to make a special case than + // to make the other regex more complicated. + + /* + text = text.replace(/ + \n // Starting after a blank line + [ ]{0,3} + ( // save in $1 + (<(hr) // start tag = $2 + \b // word break + ([^<>])*? + \/?>) // the matching end tag + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashMatch); + */ + text = text.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, hashMatch); + + // Special case for standalone HTML comments: + + /* + text = text.replace(/ + \n\n // Starting after a blank line + [ ]{0,3} // attacklab: g_tab_width - 1 + ( // save in $1 + -]|-[^>])(?:[^-]|-[^-])*)--) // see http://www.w3.org/TR/html-markup/syntax.html#comments and http://meta.stackexchange.com/q/95256 + > + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashMatch); + */ + text = text.replace(/\n\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g, hashMatch); + + // PHP and ASP-style processor instructions ( and <%...%>) + + /* + text = text.replace(/ + (?: + \n\n // Starting after a blank line + ) + ( // save in $1 + [ ]{0,3} // attacklab: g_tab_width - 1 + (?: + <([?%]) // $2 + [^\r]*? + \2> + ) + [ \t]* + (?=\n{2,}) // followed by a blank line + ) + /g,hashMatch); + */ + text = text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, hashMatch); + + return text; + } + + function hashBlock(text) { + text = text.replace(/(^\n+|\n+$)/g, ""); + // Replace the element text with a marker ("~KxK" where x is its key) + return "\n\n~K" + (g_html_blocks.push(text) - 1) + "K\n\n"; + } + + function hashMatch(wholeMatch, m1) { + return hashBlock(m1); + } + + var blockGamutHookCallback = function (t) { return _RunBlockGamut(t); } + + function _RunBlockGamut(text, doNotUnhash, doNotCreateParagraphs) { + // + // These are all the transformations that form block-level + // tags like paragraphs, headers, and list items. + // + + text = pluginHooks.preBlockGamut(text, blockGamutHookCallback); + + text = _DoHeaders(text); + + // Do Horizontal Rules: + var replacement = "
    \n"; + text = text.replace(/^[ ]{0,2}( ?\*){3,}[ \t]*$/gm, replacement); + text = text.replace(/^[ ]{0,2}( ?-){3,}[ \t]*$/gm, replacement); + text = text.replace(/^[ ]{0,2}( ?_){3,}[ \t]*$/gm, replacement); + + text = _DoLists(text); + text = _DoCodeBlocks(text); + text = _DoBlockQuotes(text); + + text = pluginHooks.postBlockGamut(text, blockGamutHookCallback); + + // We already ran _HashHTMLBlocks() before, in Markdown(), but that + // was to escape raw HTML in the original Markdown source. This time, + // we're escaping the markup we've just created, so that we don't wrap + //

    tags around block-level tags. + text = _HashHTMLBlocks(text); + + text = _FormParagraphs(text, doNotUnhash, doNotCreateParagraphs); + + return text; + } + + function _RunSpanGamut(text) { + // + // These are all the transformations that occur *within* block-level + // tags like paragraphs, headers, and list items. + // + + text = pluginHooks.preSpanGamut(text); + + text = _DoCodeSpans(text); + text = _EscapeSpecialCharsWithinTagAttributes(text); + text = _EncodeBackslashEscapes(text); + + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + text = _DoImages(text); + text = _DoAnchors(text); + + // Make links out of things like `` + // Must come after _DoAnchors(), because you can use < and > + // delimiters in inline links like [this](). + text = _DoAutoLinks(text); + + text = text.replace(/~P/g, "://"); // put in place to prevent autolinking; reset now + + text = _EncodeAmpsAndAngles(text); + text = _DoItalicsAndBold(text); + + // Do hard breaks: + text = text.replace(/ +\n/g, "
    \n"); + + text = pluginHooks.postSpanGamut(text); + + return text; + } + + function _EscapeSpecialCharsWithinTagAttributes(text) { + // + // Within tags -- meaning between < and > -- encode [\ ` * _] so they + // don't conflict with their use in Markdown for code, italics and strong. + // + + // Build a regex to find HTML tags and comments. See Friedl's + // "Mastering Regular Expressions", 2nd Ed., pp. 200-201. + + // SE: changed the comment part of the regex + + var regex = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi; + + text = text.replace(regex, function (wholeMatch) { + var tag = wholeMatch.replace(/(.)<\/?code>(?=.)/g, "$1`"); + tag = escapeCharacters(tag, wholeMatch.charAt(1) == "!" ? "\\`*_/" : "\\`*_"); // also escape slashes in comments to prevent autolinking there -- http://meta.stackexchange.com/questions/95987 + return tag; + }); + + return text; + } + + function _DoAnchors(text) { + + if (text.indexOf("[") === -1) + return text; + + // + // Turn Markdown link shortcuts into XHTML
    tags. + // + // + // First, handle reference-style links: [link text] [id] + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[] // or anything else + )* + ) + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + ) + ()()()() // pad remaining backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeAnchorTag); + + // + // Next, inline-style links: [link text](url "optional title") + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ( + (?: + \[[^\]]*\] // allow brackets nested one level + | + [^\[\]] // or anything else + )* + ) + \] + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // Title = $7 + \6 // matching quote + [ \t]* // ignore any spaces/tabs between closing quote and ) + )? // title is optional + \) + ) + /g, writeAnchorTag); + */ + + text = text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeAnchorTag); + + // + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link test][1] + // or [link test](/foo) + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + \[ + ([^\[\]]+) // link text = $2; can't contain '[' or ']' + \] + ) + ()()()()() // pad rest of backreferences + /g, writeAnchorTag); + */ + text = text.replace(/(\[([^\[\]]+)\])()()()()()/g, writeAnchorTag); + + return text; + } + + function writeAnchorTag(wholeMatch, m1, m2, m3, m4, m5, m6, m7) { + if (m7 == undefined) m7 = ""; + var whole_match = m1; + var link_text = m2.replace(/:\/\//g, "~P"); // to prevent auto-linking within the link. will be converted back after the auto-linker runs + var link_id = m3.toLowerCase(); + var url = m4; + var title = m7; + + if (url == "") { + if (link_id == "") { + // lower-case and turn embedded newlines into spaces + link_id = link_text.toLowerCase().replace(/ ?\n/g, " "); + } + url = "#" + link_id; + + if (g_urls.get(link_id) != undefined) { + url = g_urls.get(link_id); + if (g_titles.get(link_id) != undefined) { + title = g_titles.get(link_id); + } + } + else { + if (whole_match.search(/\(\s*\)$/m) > -1) { + // Special case for explicit empty url + url = ""; + } else { + return whole_match; + } + } + } + url = attributeSafeUrl(url); + + var result = ""; + + return result; + } + + function _DoImages(text) { + + if (text.indexOf("![") === -1) + return text; + + // + // Turn Markdown image shortcuts into tags. + // + + // + // First, handle reference-style labeled images: ![alt text][id] + // + + /* + text = text.replace(/ + ( // wrap whole match in $1 + !\[ + (.*?) // alt text = $2 + \] + + [ ]? // one optional space + (?:\n[ ]*)? // one optional newline followed by spaces + + \[ + (.*?) // id = $3 + \] + ) + ()()()() // pad rest of backreferences + /g, writeImageTag); + */ + text = text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g, writeImageTag); + + // + // Next, handle inline images: ![alt text](url "optional title") + // Don't forget: encode * and _ + + /* + text = text.replace(/ + ( // wrap whole match in $1 + !\[ + (.*?) // alt text = $2 + \] + \s? // One optional whitespace character + \( // literal paren + [ \t]* + () // no id, so leave $3 empty + ? // src url = $4 + [ \t]* + ( // $5 + (['"]) // quote char = $6 + (.*?) // title = $7 + \6 // matching quote + [ \t]* + )? // title is optional + \) + ) + /g, writeImageTag); + */ + text = text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, writeImageTag); + + return text; + } + + function attributeEncode(text) { + // unconditionally replace angle brackets here -- what ends up in an attribute (e.g. alt or title) + // never makes sense to have verbatim HTML in it (and the sanitizer would totally break it) + return text.replace(/>/g, ">").replace(/" + _RunSpanGamut(m1) + "\n\n"; } + ); + + text = text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm, + function (matchFound, m1) { return "

    " + _RunSpanGamut(m1) + "

    \n\n"; } + ); + + // atx-style headers: + // # Header 1 + // ## Header 2 + // ## Header 2 with closing hashes ## + // ... + // ###### Header 6 + // + + /* + text = text.replace(/ + ^(\#{1,6}) // $1 = string of #'s + [ \t]* + (.+?) // $2 = Header text + [ \t]* + \#* // optional closing #'s (not counted) + \n+ + /gm, function() {...}); + */ + + text = text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm, + function (wholeMatch, m1, m2) { + var h_level = m1.length; + return "" + _RunSpanGamut(m2) + "\n\n"; + } + ); + + return text; + } + + function _DoLists(text, isInsideParagraphlessListItem) { + // + // Form HTML ordered (numbered) and unordered (bulleted) lists. + // + + // attacklab: add sentinel to hack around khtml/safari bug: + // http://bugs.webkit.org/show_bug.cgi?id=11231 + text += "~0"; + + // Re-usable pattern to match any entirel ul or ol list: + + /* + var whole_list = / + ( // $1 = whole list + ( // $2 + [ ]{0,3} // attacklab: g_tab_width - 1 + ([*+-]|\d+[.]) // $3 = first list item marker + [ \t]+ + ) + [^\r]+? + ( // $4 + ~0 // sentinel for workaround; should be $ + | + \n{2,} + (?=\S) + (?! // Negative lookahead for another list item marker + [ \t]* + (?:[*+-]|\d+[.])[ \t]+ + ) + ) + ) + /g + */ + var whole_list = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + if (g_list_level) { + text = text.replace(whole_list, function (wholeMatch, m1, m2) { + var list = m1; + var list_type = (m2.search(/[*+-]/g) > -1) ? "ul" : "ol"; + var first_number; + if (list_type === "ol") + first_number = parseInt(m2, 10) + + var result = _ProcessListItems(list, list_type, isInsideParagraphlessListItem); + + // Trim any trailing whitespace, to put the closing `` + // up on the preceding line, to get it past the current stupid + // HTML block parser. This is a hack to work around the terrible + // hack that is the HTML block parser. + result = result.replace(/\s+$/, ""); + var opening = "<" + list_type; + if (first_number && first_number !== 1) + opening += " start=\"" + first_number + "\""; + result = opening + ">" + result + "\n"; + return result; + }); + } else { + whole_list = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g; + text = text.replace(whole_list, function (wholeMatch, m1, m2, m3) { + var runup = m1; + var list = m2; + + var list_type = (m3.search(/[*+-]/g) > -1) ? "ul" : "ol"; + + var first_number; + if (list_type === "ol") + first_number = parseInt(m3, 10) + + var result = _ProcessListItems(list, list_type); + var opening = "<" + list_type; + if (first_number && first_number !== 1) + opening += " start=\"" + first_number + "\""; + + result = runup + opening + ">\n" + result + "\n"; + return result; + }); + } + + // attacklab: strip sentinel + text = text.replace(/~0/, ""); + + return text; + } + + var _listItemMarkers = { ol: "\\d+[.]", ul: "[*+-]" }; + + function _ProcessListItems(list_str, list_type, isInsideParagraphlessListItem) { + // + // Process the contents of a single ordered or unordered list, splitting it + // into individual list items. + // + // list_type is either "ul" or "ol". + + // The $g_list_level global keeps track of when we're inside a list. + // Each time we enter a list, we increment it; when we leave a list, + // we decrement. If it's zero, we're not in a list anymore. + // + // We do this because when we're not inside a list, we want to treat + // something like this: + // + // I recommend upgrading to version + // 8. Oops, now this line is treated + // as a sub-list. + // + // As a single paragraph, despite the fact that the second line starts + // with a digit-period-space sequence. + // + // Whereas when we're inside a list (or sub-list), that line will be + // treated as the start of a sub-list. What a kludge, huh? This is + // an aspect of Markdown's syntax that's hard to parse perfectly + // without resorting to mind-reading. Perhaps the solution is to + // change the syntax rules such that sub-lists must start with a + // starting cardinal number; e.g. "1." or "a.". + + g_list_level++; + + // trim trailing blank lines: + list_str = list_str.replace(/\n{2,}$/, "\n"); + + // attacklab: add sentinel to emulate \z + list_str += "~0"; + + // In the original attacklab showdown, list_type was not given to this function, and anything + // that matched /[*+-]|\d+[.]/ would just create the next
  • , causing this mismatch: + // + // Markdown rendered by WMD rendered by MarkdownSharp + // ------------------------------------------------------------------ + // 1. first 1. first 1. first + // 2. second 2. second 2. second + // - third 3. third * third + // + // We changed this to behave identical to MarkdownSharp. This is the constructed RegEx, + // with {MARKER} being one of \d+[.] or [*+-], depending on list_type: + + /* + list_str = list_str.replace(/ + (^[ \t]*) // leading whitespace = $1 + ({MARKER}) [ \t]+ // list marker = $2 + ([^\r]+? // list item text = $3 + (\n+) + ) + (?= + (~0 | \2 ({MARKER}) [ \t]+) + ) + /gm, function(){...}); + */ + + var marker = _listItemMarkers[list_type]; + var re = new RegExp("(^[ \\t]*)(" + marker + ")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1(" + marker + ")[ \\t]+))", "gm"); + var last_item_had_a_double_newline = false; + list_str = list_str.replace(re, + function (wholeMatch, m1, m2, m3) { + var item = m3; + var leading_space = m1; + var ends_with_double_newline = /\n\n$/.test(item); + var contains_double_newline = ends_with_double_newline || item.search(/\n{2,}/) > -1; + + var loose = contains_double_newline || last_item_had_a_double_newline; + item = _RunBlockGamut(_Outdent(item), /* doNotUnhash = */true, /* doNotCreateParagraphs = */ !loose); + + last_item_had_a_double_newline = ends_with_double_newline; + return "
  • " + item + "
  • \n"; + } + ); + + // attacklab: strip sentinel + list_str = list_str.replace(/~0/g, ""); + + g_list_level--; + return list_str; + } + + function _DoCodeBlocks(text) { + // + // Process Markdown `
    ` blocks.
    +            //  
    +
    +            /*
    +            text = text.replace(/
    +                (?:\n\n|^)
    +                (                               // $1 = the code block -- one or more lines, starting with a space/tab
    +                    (?:
    +                        (?:[ ]{4}|\t)           // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width
    +                        .*\n+
    +                    )+
    +                )
    +                (\n*[ ]{0,3}[^ \t\n]|(?=~0))    // attacklab: g_tab_width
    +            /g ,function(){...});
    +            */
    +
    +            // attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
    +            text += "~0";
    +
    +            text = text.replace(/(?:\n\n|^\n?)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,
    +                function (wholeMatch, m1, m2) {
    +                    var codeblock = m1;
    +                    var nextChar = m2;
    +
    +                    codeblock = _EncodeCode(_Outdent(codeblock));
    +                    codeblock = _Detab(codeblock);
    +                    codeblock = codeblock.replace(/^\n+/g, ""); // trim leading newlines
    +                    codeblock = codeblock.replace(/\n+$/g, ""); // trim trailing whitespace
    +
    +                    codeblock = "
    " + codeblock + "\n
    "; + + return "\n\n" + codeblock + "\n\n" + nextChar; + } + ); + + // attacklab: strip sentinel + text = text.replace(/~0/, ""); + + return text; + } + + function _DoCodeSpans(text) { + // + // * Backtick quotes are used for spans. + // + // * You can use multiple backticks as the delimiters if you want to + // include literal backticks in the code span. So, this input: + // + // Just type ``foo `bar` baz`` at the prompt. + // + // Will translate to: + // + //

    Just type foo `bar` baz at the prompt.

    + // + // There's no arbitrary limit to the number of backticks you + // can use as delimters. If you need three consecutive backticks + // in your code, use four for delimiters, etc. + // + // * You can use spaces to get literal backticks at the edges: + // + // ... type `` `bar` `` ... + // + // Turns to: + // + // ... type `bar` ... + // + + /* + text = text.replace(/ + (^|[^\\`]) // Character before opening ` can't be a backslash or backtick + (`+) // $2 = Opening run of ` + (?!`) // and no more backticks -- match the full run + ( // $3 = The code block + [^\r]*? + [^`] // attacklab: work around lack of lookbehind + ) + \2 // Matching closer + (?!`) + /gm, function(){...}); + */ + + text = text.replace(/(^|[^\\`])(`+)(?!`)([^\r]*?[^`])\2(?!`)/gm, + function (wholeMatch, m1, m2, m3, m4) { + var c = m3; + c = c.replace(/^([ \t]*)/g, ""); // leading whitespace + c = c.replace(/[ \t]*$/g, ""); // trailing whitespace + c = _EncodeCode(c); + c = c.replace(/:\/\//g, "~P"); // to prevent auto-linking. Not necessary in code *blocks*, but in code spans. Will be converted back after the auto-linker runs. + return m1 + "" + c + ""; + } + ); + + return text; + } + + function _EncodeCode(text) { + // + // Encode/escape certain characters inside Markdown code runs. + // The point is that in code, these characters are literals, + // and lose their special Markdown meanings. + // + // Encode all ampersands; HTML entities are not + // entities within a Markdown code span. + text = text.replace(/&/g, "&"); + + // Do the angle bracket song and dance: + text = text.replace(//g, ">"); + + // Now, escape characters that are magic in Markdown: + text = escapeCharacters(text, "\*_{}[]\\", false); + + // jj the line above breaks this: + //--- + + //* Item + + // 1. Subitem + + // special char: * + //--- + + return text; + } + + function _DoItalicsAndBoldStrict(text) { + + if (text.indexOf("*") === -1 && text.indexOf("_") === - 1) + return text; + + text = asciify(text); + + // must go first: + + // (^|[\W_]) Start with a non-letter or beginning of string. Store in \1. + // (?:(?!\1)|(?=^)) Either the next character is *not* the same as the previous, + // or we started at the end of the string (in which case the previous + // group had zero width, so we're still there). Because the next + // character is the marker, this means that if there are e.g. multiple + // underscores in a row, we can only match the left-most ones (which + // prevents foo___bar__ from getting bolded) + // (\*|_) The marker character itself, asterisk or underscore. Store in \2. + // \2 The marker again, since bold needs two. + // (?=\S) The first bolded character cannot be a space. + // ([^\r]*?\S) The actual bolded string. At least one character, and it cannot *end* + // with a space either. Note that like in many other places, [^\r] is + // just a workaround for JS' lack of single-line regexes; it's equivalent + // to a . in an /s regex, because the string cannot contain any \r (they + // are removed in the normalizing step). + // \2\2 The marker character, twice -- end of bold. + // (?!\2) Not followed by another marker character (ensuring that we match the + // rightmost two in a longer row)... + // (?=[\W_]|$) ...but by any other non-word character or the end of string. + text = text.replace(/(^|[\W_])(?:(?!\1)|(?=^))(\*|_)\2(?=\S)([^\r]*?\S)\2\2(?!\2)(?=[\W_]|$)/g, + "$1$3"); + + // This is almost identical to the regex, except 1) there's obviously just one marker + // character, and 2) the italicized string cannot contain the marker character. + text = text.replace(/(^|[\W_])(?:(?!\1)|(?=^))(\*|_)(?=\S)((?:(?!\2)[^\r])*?\S)\2(?!\2)(?=[\W_]|$)/g, + "$1$3"); + + return deasciify(text); + } + + function _DoItalicsAndBold_AllowIntrawordWithAsterisk(text) { + + if (text.indexOf("*") === -1 && text.indexOf("_") === - 1) + return text; + + text = asciify(text); + + // must go first: + // (?=[^\r][*_]|[*_]) Optimization only, to find potentially relevant text portions faster. Minimally slower in Chrome, but much faster in IE. + // ( Store in \1. This is the last character before the delimiter + // ^ Either we're at the start of the string (i.e. there is no last character)... + // | ... or we allow one of the following: + // (?= (lookahead; we're not capturing this, just listing legal possibilities) + // \W__ If the delimiter is __, then this last character must be non-word non-underscore (extra-word emphasis only) + // | + // (?!\*)[\W_]\*\* If the delimiter is **, then this last character can be non-word non-asterisk (extra-word emphasis)... + // | + // \w\*\*\w ...or it can be word/underscore, but only if the first bolded character is such a character as well (intra-word emphasis) + // ) + // [^\r] actually capture the character (can't use `.` since it could be \n) + // ) + // (\*\*|__) Store in \2: the actual delimiter + // (?!\2) not followed by the delimiter again (at most one more asterisk/underscore is allowed) + // (?=\S) the first bolded character can't be a space + // ( Store in \3: the bolded string + // + // (?:| Look at all bolded characters except for the last one. Either that's empty, meaning only a single character was bolded... + // [^\r]*? ... otherwise take arbitrary characters, minimally matching; that's all bolded characters except for the last *two* + // (?!\2) the last two characters cannot be the delimiter itself (because that would mean four underscores/asterisks in a row) + // [^\r] capture the next-to-last bolded character + // ) + // (?= lookahead at the very last bolded char and what comes after + // \S_ for underscore-bolding, it can be any non-space + // | + // \w for asterisk-bolding (otherwise the previous alternative would've matched, since \w implies \S), either the last char is word/underscore... + // | + // \S\*\*(?:[\W_]|$) ... or it's any other non-space, but in that case the character *after* the delimiter may not be a word character + // ) + // . actually capture the last character (can use `.` this time because the lookahead ensures \S in all cases) + // ) + // (?= lookahead; list the legal possibilities for the closing delimiter and its following character + // __(?:\W|$) for underscore-bolding, the following character (if any) must be non-word non-underscore + // | + // \*\*(?:[^*]|$) for asterisk-bolding, any non-asterisk is allowed (note we already ensured above that it's not a word character if the last bolded character wasn't one) + // ) + // \2 actually capture the closing delimiter (and make sure that it matches the opening one) + + text = text.replace(/(?=[^\r][*_]|[*_])(^|(?=\W__|(?!\*)[\W_]\*\*|\w\*\*\w)[^\r])(\*\*|__)(?!\2)(?=\S)((?:|[^\r]*?(?!\2)[^\r])(?=\S_|\w|\S\*\*(?:[\W_]|$)).)(?=__(?:\W|$)|\*\*(?:[^*]|$))\2/g, + "$1$3"); + + // now : + // (?=[^\r][*_]|[*_]) Optimization, see above. + // ( Store in \1. This is the last character before the delimiter + // ^ Either we're at the start of the string (i.e. there is no last character)... + // | ... or we allow one of the following: + // (?= (lookahead; we're not capturing this, just listing legal possibilities) + // \W_ If the delimiter is _, then this last character must be non-word non-underscore (extra-word emphasis only) + // | + // (?!\*) otherwise, we list two possibilities for * as the delimiter; in either case, the last characters cannot be an asterisk itself + // (?: + // [\W_]\* this last character can be non-word (extra-word emphasis)... + // | + // \D\*(?=\w)\D ...or it can be word (otherwise the first alternative would've matched), but only if + // a) the first italicized character is such a character as well (intra-word emphasis), and + // b) neither character on either side of the asterisk is a digit + // ) + // ) + // [^\r] actually capture the character (can't use `.` since it could be \n) + // ) + // (\*|_) Store in \2: the actual delimiter + // (?!\2\2\2) not followed by more than two more instances of the delimiter + // (?=\S) the first italicized character can't be a space + // ( Store in \3: the italicized string + // (?:(?!\2)[^\r])*? arbitrary characters except for the delimiter itself, minimally matching + // (?= lookahead at the very last italicized char and what comes after + // [^\s_]_ for underscore-italicizing, it can be any non-space non-underscore + // | + // (?=\w)\D\*\D for asterisk-italicizing, either the last char is word/underscore *and* neither character on either side of the asterisk is a digit... + // | + // [^\s*]\*(?:[\W_]|$) ... or that last char is any other non-space non-asterisk, but then the character after the delimiter (if any) must be non-word + // ) + // . actually capture the last character (can use `.` this time because the lookahead ensures \S in all cases) + // ) + // (?= lookahead; list the legal possibilities for the closing delimiter and its following character + // _(?:\W|$) for underscore-italicizing, the following character (if any) must be non-word non-underscore + // | + // \*(?:[^*]|$) for asterisk-italicizing, any non-asterisk is allowed; all other restrictions have already been ensured in the previous lookahead + // ) + // \2 actually capture the closing delimiter (and make sure that it matches the opening one) + + text = text.replace(/(?=[^\r][*_]|[*_])(^|(?=\W_|(?!\*)(?:[\W_]\*|\D\*(?=\w)\D))[^\r])(\*|_)(?!\2\2\2)(?=\S)((?:(?!\2)[^\r])*?(?=[^\s_]_|(?=\w)\D\*\D|[^\s*]\*(?:[\W_]|$)).)(?=_(?:\W|$)|\*(?:[^*]|$))\2/g, + "$1$3"); + + return deasciify(text); + } + + + function _DoBlockQuotes(text) { + + /* + text = text.replace(/ + ( // Wrap whole match in $1 + ( + ^[ \t]*>[ \t]? // '>' at the start of a line + .+\n // rest of the first line + (.+\n)* // subsequent consecutive lines + \n* // blanks + )+ + ) + /gm, function(){...}); + */ + + text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm, + function (wholeMatch, m1) { + var bq = m1; + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + + bq = bq.replace(/^[ \t]*>[ \t]?/gm, "~0"); // trim one level of quoting + + // attacklab: clean up hack + bq = bq.replace(/~0/g, ""); + + bq = bq.replace(/^[ \t]+$/gm, ""); // trim whitespace-only lines + bq = _RunBlockGamut(bq); // recurse + + bq = bq.replace(/(^|\n)/g, "$1 "); + // These leading spaces screw with
     content, so we need to fix that:
    +                    bq = bq.replace(
    +                            /(\s*
    [^\r]+?<\/pre>)/gm,
    +                        function (wholeMatch, m1) {
    +                            var pre = m1;
    +                            // attacklab: hack around Konqueror 3.5.4 bug:
    +                            pre = pre.replace(/^  /mg, "~0");
    +                            pre = pre.replace(/~0/g, "");
    +                            return pre;
    +                        });
    +
    +                    return hashBlock("
    \n" + bq + "\n
    "); + } + ); + return text; + } + + function _FormParagraphs(text, doNotUnhash, doNotCreateParagraphs) { + // + // Params: + // $text - string to process with html

    tags + // + + // Strip leading and trailing lines: + text = text.replace(/^\n+/g, ""); + text = text.replace(/\n+$/g, ""); + + var grafs = text.split(/\n{2,}/g); + var grafsOut = []; + + var markerRe = /~K(\d+)K/; + + // + // Wrap

    tags. + // + var end = grafs.length; + for (var i = 0; i < end; i++) { + var str = grafs[i]; + + // if this is an HTML marker, copy it + if (markerRe.test(str)) { + grafsOut.push(str); + } + else if (/\S/.test(str)) { + str = _RunSpanGamut(str); + str = str.replace(/^([ \t]*)/g, doNotCreateParagraphs ? "" : "

    "); + if (!doNotCreateParagraphs) + str += "

    " + grafsOut.push(str); + } + + } + // + // Unhashify HTML blocks + // + if (!doNotUnhash) { + end = grafsOut.length; + for (var i = 0; i < end; i++) { + var foundAny = true; + while (foundAny) { // we may need several runs, since the data may be nested + foundAny = false; + grafsOut[i] = grafsOut[i].replace(/~K(\d+)K/g, function (wholeMatch, id) { + foundAny = true; + return g_html_blocks[id]; + }); + } + } + } + return grafsOut.join("\n\n"); + } + + function _EncodeAmpsAndAngles(text) { + // Smart processing for ampersands and angle brackets that need to be encoded. + + // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: + // http://bumppo.net/projects/amputator/ + text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"); + + // Encode naked <'s + text = text.replace(/<(?![a-z\/?!]|~D)/gi, "<"); + + return text; + } + + function _EncodeBackslashEscapes(text) { + // + // Parameter: String. + // Returns: The string, with after processing the following backslash + // escape sequences. + // + + // attacklab: The polite way to do this is with the new + // escapeCharacters() function: + // + // text = escapeCharacters(text,"\\",true); + // text = escapeCharacters(text,"`*_{}[]()>#+-.!",true); + // + // ...but we're sidestepping its use of the (slow) RegExp constructor + // as an optimization for Firefox. This function gets called a LOT. + + text = text.replace(/\\(\\)/g, escapeCharacters_callback); + text = text.replace(/\\([`*_{}\[\]()>#+-.!])/g, escapeCharacters_callback); + return text; + } + + var charInsideUrl = "[-A-Z0-9+&@#/%?=~_|[\\]()!:,.;]", + charEndingUrl = "[-A-Z0-9+&@#/%=~_|[\\])]", + autoLinkRegex = new RegExp("(=\"|<)?\\b(https?|ftp)(://" + charInsideUrl + "*" + charEndingUrl + ")(?=$|\\W)", "gi"), + endCharRegex = new RegExp(charEndingUrl, "i"); + + function handleTrailingParens(wholeMatch, lookbehind, protocol, link) { + if (lookbehind) + return wholeMatch; + if (link.charAt(link.length - 1) !== ")") + return "<" + protocol + link + ">"; + var parens = link.match(/[()]/g); + var level = 0; + for (var i = 0; i < parens.length; i++) { + if (parens[i] === "(") { + if (level <= 0) + level = 1; + else + level++; + } + else { + level--; + } + } + var tail = ""; + if (level < 0) { + var re = new RegExp("\\){1," + (-level) + "}$"); + link = link.replace(re, function (trailingParens) { + tail = trailingParens; + return ""; + }); + } + if (tail) { + var lastChar = link.charAt(link.length - 1); + if (!endCharRegex.test(lastChar)) { + tail = lastChar + tail; + link = link.substr(0, link.length - 1); + } + } + return "<" + protocol + link + ">" + tail; + } + + function _DoAutoLinks(text) { + + // note that at this point, all other URL in the text are already hyperlinked as
    + // *except* for the case + + // automatically add < and > around unadorned raw hyperlinks + // must be preceded by a non-word character (and not by =" or <) and followed by non-word/EOF character + // simulating the lookbehind in a consuming way is okay here, since a URL can neither and with a " nor + // with a <, so there is no risk of overlapping matches. + text = asciify(text) + text = text.replace(autoLinkRegex, handleTrailingParens); + text = deasciify(text) + // autolink anything like + + + var replacer = function (wholematch, m1) { + var url = attributeSafeUrl(m1); + + return "" + pluginHooks.plainLinkText(m1) + ""; + }; + text = text.replace(/<((https?|ftp):[^'">\s]+)>/gi, replacer); + + // Email addresses: + /* + text = text.replace(/ + < + (?:mailto:)? + ( + [-.\w]+ + \@ + [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ + ) + > + /gi, _DoAutoLinks_callback()); + */ + + /* disabling email autolinking, since we don't do that on the server, either + text = text.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi, + function(wholeMatch,m1) { + return _EncodeEmailAddress( _UnescapeSpecialChars(m1) ); + } + ); + */ + return text; + } + + function _UnescapeSpecialChars(text) { + // + // Swap back in all the special characters we've hidden. + // + text = text.replace(/~E(\d+)E/g, + function (wholeMatch, m1) { + var charCodeToReplace = parseInt(m1); + return String.fromCharCode(charCodeToReplace); + } + ); + return text; + } + + function _Outdent(text) { + // + // Remove one level of line-leading tabs or spaces + // + + // attacklab: hack around Konqueror 3.5.4 bug: + // "----------bug".replace(/^-/g,"") == "bug" + + text = text.replace(/^(\t|[ ]{1,4})/gm, "~0"); // attacklab: g_tab_width + + // attacklab: clean up hack + text = text.replace(/~0/g, "") + + return text; + } + + function _Detab(text) { + if (!/\t/.test(text)) + return text; + + var spaces = [" ", " ", " ", " "], + skew = 0, + v; + + return text.replace(/[\n\t]/g, function (match, offset) { + if (match === "\n") { + skew = offset + 1; + return match; + } + v = (offset - skew) % 4; + skew = offset + 1; + return spaces[v]; + }); + } + + // + // attacklab: Utility functions + // + + function attributeSafeUrl(url) { + url = attributeEncode(url); + url = escapeCharacters(url, "*_:()[]") + return url; + } + + function escapeCharacters(text, charsToEscape, afterBackslash) { + // First we have to escape the escape characters so that + // we can build a character class out of them + var regexString = "([" + charsToEscape.replace(/([\[\]\\])/g, "\\$1") + "])"; + + if (afterBackslash) { + regexString = "\\\\" + regexString; + } + + var regex = new RegExp(regexString, "g"); + text = text.replace(regex, escapeCharacters_callback); + + return text; + } + + + function escapeCharacters_callback(wholeMatch, m1) { + var charCodeToEscape = m1.charCodeAt(0); + return "~E" + charCodeToEscape + "E"; + } + + }; // end of the Markdown.Converter constructor + +})(); \ No newline at end of file diff -Nru i2p-2.4.0/apps/susimail/src/js/dnd.js i2p-2.5.0/apps/susimail/src/js/dnd.js --- i2p-2.4.0/apps/susimail/src/js/dnd.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/js/dnd.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,147 @@ +/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */ +/* see also licenses/LICENSE-GPLv2.txt */ + +/** + * Drop a link anywhere on the page and we will reject it. + * + * Drop a file anywhere on the page and we will + * hopefully convince you to drop it on the newFile input. + * + * ref: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop + * + * @since 0.9.62 + */ +function initDND() +{ + var form2 = document.getElementById("new_filename"); + if (form2 != null) { + var div = document.getElementById("page"); + var addbutton = document.getElementById("new_upload"); + + div.addEventListener("drop", function(event) { + var name = ""; + var isURL = false; + var isDir = false; + // chrome returning 0-length arrays for files? + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + // Use DataTransferItemList interface to access the file + var item = event.dataTransfer.items[0]; + // Chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + // sometimes undefined for directories, throws uncaught TypeError + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + var file = item.getAsFile(); + if (file.size == 0) + isDir = true; + name = file.name; + } else { + // If dropped items aren't files, maybe they are URLs + // we're going here in chrome for files usually + name = event.dataTransfer.getData("URL"); + if (name.length > 0) { + isURL = true; + } + // else chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + } + } else if (event.dataTransfer.files && event.dataTransfer.files.length > 0) { + // Use DataTransfer interface to access the file(s) + var file = event.dataTransfer.files[0]; + if (file.size == 0) + isDir = true; + name = file.name; + } else { + // else chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + } + if (name.length > 0) { + if (isURL) { + form2.classList.remove("highlight"); + event.preventDefault(); + event.dataTransfer.dropEffect = "none"; + } else { + // handle name in form 2 + if (event.target.id === "new_filename") { + if (isDir) { + event.preventDefault(); + addbutton.classList.remove("highlight"); + event.dataTransfer.dropEffect = "none"; + alert("Must be a file"); + } else { + addbutton.classList.add("highlight"); + } + } else { + event.preventDefault(); + addbutton.classList.remove("highlight"); + event.dataTransfer.dropEffect = "none"; + alert("Drop a file in the add attachment box"); + } + } + } else { + // Chrome bug + // https://bugs.chromium.org/p/chromium/issues/detail?id=1363757 + event.dataTransfer.dropEffect = "none"; + alert("File drag and drop not supported on this browser"); + } + }); + + div.addEventListener("dragover", function(event) { + event.preventDefault(); + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + var item = event.dataTransfer.items[0]; + // needed for Chrome + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + event.dataTransfer.dropEffect = "copy"; + } else { + event.dataTransfer.dropEffect = "link"; + } + } else { + event.dataTransfer.dropEffect = "copy"; + } + }); + + div.addEventListener("dragenter", function(event) { + event.preventDefault(); + // expand the add section, scroll to view, and highlight the correct input + if (event.dataTransfer.items && event.dataTransfer.items.length > 0) { + var item = event.dataTransfer.items[0]; + if (((typeof item.kind) !== "undefined") && (item.kind === "file")) { + form2.classList.add("highlight"); + form2.focus(); + } else { + form2.classList.remove("highlight"); + form2.blur(); + } + } else { + form2.classList.add("highlight"); + form2.focus(); + } + form2.scrollIntoView(true); + }); + + form2.addEventListener("change", function(event) { + if (form2.value.length > 0) { + addbutton.classList.add("highlight"); + } else { + addbutton.classList.remove("highlight"); + } + form2.classList.remove("highlight"); + }); + + form2.addEventListener("blur", function(event) { + if (form2.value.length > 0) { + addbutton.classList.add("highlight"); + } else { + addbutton.classList.remove("highlight"); + } + form2.classList.remove("highlight"); + }); + + } +} + +document.addEventListener("DOMContentLoaded", function() { + initDND(); +}, true); + +/* @license-end */ diff -Nru i2p-2.4.0/apps/susimail/src/js/iframer.js i2p-2.5.0/apps/susimail/src/js/iframer.js --- i2p-2.4.0/apps/susimail/src/js/iframer.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/js/iframer.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,29 @@ +/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */ +/* see also licenses/LICENSE-GPLv2.txt */ + +// called from iframed.js + +function setupFrame() { + var frames = document.getElementsByClassName("iframedsusi"); + for(index = 0; index < frames.length; index++) + { + var frame = frames[index]; + frame.addEventListener("load", function() { + // old way, iframed.js. we use this as a backup in case + // the js injection didn't work + + resizeFrame(frame); + + // new way, iframe-resizer + + // By default the height of the iFrame is calculated by converting the margin of the body to px and then adding the top and bottom figures to the offsetHeight of the body tag. + // In cases where CSS styles causes the content to flow outside the body you may need to change this setting to one of the following options. + // If the default option doesn't work then the best solutions is to use either taggedElement, or lowestElement. + // The **lowestElement** option is the most reliable way of determining the page height. + // However, it does have a performance impact, as it requires checking the position of every element on the page. + iFrameResize({ log: false, heightCalculationMethod: 'lowestElement' }, frame) + }, true); + } +} + +/* @license-end */ diff -Nru i2p-2.4.0/apps/susimail/src/js/markdown.js i2p-2.5.0/apps/susimail/src/js/markdown.js --- i2p-2.4.0/apps/susimail/src/js/markdown.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/js/markdown.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,20 @@ +/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */ +/* see also licenses/LICENSE-GPLv2.txt */ + +function initMarkdown() { + var mailbodies = document.getElementsByClassName("mailbody"); + for(index = 0; index < mailbodies.length; index++) + { + var mailbody = mailbodies[index]; + if (mailbody.nodeName === "P") { + var converter = new Markdown.Converter(); + mailbody.innerHTML = converter.makeHtml(mailbody.innerHTML); + } + } +} + +document.addEventListener("DOMContentLoaded", function() { + initMarkdown(); +}, true); + +/* @license-end */ diff -Nru i2p-2.4.0/apps/susimail/src/js/textarea.js i2p-2.5.0/apps/susimail/src/js/textarea.js --- i2p-2.4.0/apps/susimail/src/js/textarea.js 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/js/textarea.js 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,26 @@ +/* @license http://www.gnu.org/licenses/gpl-2.0.html GPL-2.0 */ +/* see also licenses/LICENSE-GPLv2.txt */ + +/* + * Adapted from: + * https://stackoverflow.com/questions/454202/creating-a-textarea-with-auto-resize + */ +function initTextarea() { + const tx = document.getElementById("new_text"); + tx.removeAttribute("rows"); + tx.style.height = 0; + tx.setAttribute("style", "height:" + Math.max(225, tx.scrollHeight) + "px;overflow-y:hidden;"); + tx.style.height = Math.max(225, tx.scrollHeight) + "px"; + tx.addEventListener("input", onTextareaInput, false); +} + +function onTextareaInput() { + this.style.height = 0; + this.style.height = Math.max(225, this.scrollHeight) + "px"; +} + +document.addEventListener("DOMContentLoaded", function() { + initTextarea(); +}, true); + +/* @license-end */ diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/FileBuffer.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/FileBuffer.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/FileBuffer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/FileBuffer.java 2024-04-10 02:29:57.000000000 +0000 @@ -60,9 +60,10 @@ * @return new FileOutputStream */ public synchronized OutputStream getOutputStream() throws IOException { - if (_os != null) - throw new IllegalStateException(); - _os = new SecureFileOutputStream(_file); + //if (_os != null) + // throw new IllegalStateException(); + if (_os == null) + _os = new SecureFileOutputStream(_file); return _os; } diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/OutputStreamBuffer.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/OutputStreamBuffer.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/OutputStreamBuffer.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/OutputStreamBuffer.java 2024-04-10 02:29:57.000000000 +0000 @@ -25,7 +25,7 @@ } /** - * @return new OutputStreamOutputStream + * @return the OutputStream */ public OutputStream getOutputStream() { return _out; diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/RegexOutputStream.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/RegexOutputStream.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/util/RegexOutputStream.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/util/RegexOutputStream.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,145 @@ +package i2p.susi.util; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Locale; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.util.Log; + +/** + * Replace patterns with a simple regex on the fly. + * Case insensitive. + * + * @since 0.9.62 + */ +public class RegexOutputStream extends FilterOutputStream { + + private final String match, repl; + /** parse in progress */ + private final StringBuilder buf; + private final String noMatch; + private final Log _log; + private boolean found; + int idx; + + /** + * @param out MUST be buffered because this writes one byte at a time + * @param pattern the only special char recognized is '*' and cannot be at the beginning or end + * or have two in a row. ASCII-only, no UTF-8. + * @param replace ASCII-only, no UTF-8. + * @param onNoMatch force output of this at the end if no replacement made, or null + */ + public RegexOutputStream(OutputStream out, String pattern, String replace, String onNoMatch) { + super(out); + if (pattern.length() == 0 || pattern.startsWith("*") || pattern.endsWith("*") || pattern.contains("**")) + throw new IllegalArgumentException(); + match = pattern.toLowerCase(Locale.US); + repl = replace; + noMatch = onNoMatch; + buf = new StringBuilder(64); + _log = I2PAppContext.getGlobalContext().logManager().getLog(RegexOutputStream.class); + if (_log.shouldDebug()) + _log.debug("New regex replace '" + match + "' with '" + repl + "'"); + } + + @Override + public void write(int val) throws IOException { + char c = (char) val; + char m = match.charAt(idx); + if (c == '\r' || c == '\n') { + flushit(); + out.write(val); + } else if (m == '*') { + pushit(c); + char d = match.charAt(idx + 1); + if (c == d) { + idx += 2; + if (idx == match.length()) { + replaceit(); + found = true; + } + } + } else if (m == Character.toLowerCase(c)) { + pushit(c); + idx++; + if (idx == match.length()) { + replaceit(); + found = true; + } + } else { + flushit(); + out.write(val); + } + } + + + /** + * put in the pending parse buf + */ + private void pushit(char c) { + buf.append(c); + //if (_log.shouldDebug()) + // _log.debug("Push, buf now '" + buf + "'"); + } + + /** + * flush buf to out, start over + */ + private void flushit() throws IOException { + int len = buf.length(); + if (len > 0) { + for (int i = 0; i < len; i++) { + out.write(buf.charAt(i)); + } + clearit(); + } + //if (_log.shouldDebug()) + // _log.debug("Flush"); + } + /** + * Throw out inbuf, output replacement, start over + */ + private void replaceit() throws IOException { + int len = repl.length(); + if (len > 0) { + for (int i = 0; i < len; i++) { + out.write(repl.charAt(i)); + } + } + if (_log.shouldInfo()) + _log.info("Replaced '" + match + "' with '" + repl + "' buf: '" + buf + "'"); + clearit(); + } + + /** + * Start over + */ + private void clearit() { + buf.setLength(0); + idx = 0; + } + + @Override + public void close() throws IOException { + flushit(); + if (!found && noMatch != null) { + if (_log.shouldInfo()) + _log.info("No match, appending '" + noMatch + "'"); + out.write(DataHelper.getASCII(noMatch)); + } + super.close(); + } + +/**** +*/ + public static void main(String[] args) throws Exception { + OutputStream out = new RegexOutputStream(System.out, args[0], args[1], null); + net.i2p.data.DataHelper.copy(System.in, out); + out.flush(); + } +/* +****/ +} diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/CSPDetector.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/CSPDetector.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/CSPDetector.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/CSPDetector.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,78 @@ +package i2p.susi.webmail; + +import java.util.Locale; + +/** + * Check user-agent for support of CSP + * @since 0.9.62 + */ +class CSPDetector { + /** + * ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + */ + public static boolean supportsCSP(String ua) { + if (ua == null) + return false; + ua = ua.toLowerCase(Locale.US); + // mobile anything: assume no + if (ua.contains("mobile")) + return false; + + // ref: https://www.useragents.me/ + // min versions + // chrome: 25 + // covers edge, opera + int idx = ua.indexOf("chrome/"); + if (idx >= 0) { + idx += 7; + return getVersion(ua, idx) >= 25; + } + // safari: 7 + idx = ua.indexOf("safari/"); + if (idx >= 0) { + idx = ua.indexOf("version/"); + if (idx >= 0) { + idx += 8; + return getVersion(ua, idx) >= 7; + } + } + // firefox: 23 + idx = ua.indexOf("firefox/"); + if (idx >= 0) { + idx += 8; + return getVersion(ua, idx) >= 23; + } + return false; + } + + private static int getVersion(String ua, int idx) { + int rv = 0; + for (int i = idx; i < ua.length(); i++) { + char c = ua.charAt(i); + if (c < '0' || c > '9') + break; + if (i > idx) + rv *= 10; + rv += c - '0'; + } + //System.out.println("Found version " + rv + " in " + ua); + return rv; + } + +/**** + public static void main(String[] args) { + String s = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"; + System.out.println(supportsCSP(s) + " " + s); + s = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"; + System.out.println(supportsCSP(s) + " " + s); + s = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.1"; + System.out.println(supportsCSP(s) + " " + s); + s = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0"; + System.out.println(supportsCSP(s) + " " + s); + s = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/11.0"; + System.out.println(supportsCSP(s) + " " + s); + s = "xxx"; + System.out.println(supportsCSP(s) + " " + s); + } +****/ +} diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Draft.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Draft.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Draft.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Draft.java 2024-04-10 02:29:57.000000000 +0000 @@ -26,6 +26,7 @@ private final List attachments; private String[] bcc; // addresses only, enclosed by <> + private long size; private static final String HDR_ATTACH = "X-I2P-Attachment: "; public static final String HDR_BCC = "Bcc: "; @@ -40,6 +41,7 @@ @Override public synchronized void setBody(Buffer rb) { super.setBody(rb); + size = rb.getLength(); MailPart part = getPart(); if (part != null) { String[] hdrs = part.headerLines; @@ -75,11 +77,29 @@ if (b == null) continue; String path = DataHelper.getUTF8(b); - attachments.add(new Attachment(name, type, enc, new File(path))); + Attachment a = new Attachment(name, type, enc, new File(path)); + size += a.getSize(); + attachments.add(a); } } } + /** + * Includes size of attachments + * + * @since 0.9.62 + */ + @Override + public synchronized long getSize() { + return size; + } + + /** + * @since 0.9.62 + */ + @Override + public synchronized void setSize(long size) {} + @Override public synchronized boolean hasAttachment() { return !attachments.isEmpty(); @@ -101,12 +121,14 @@ return rv; rv = attachments.size(); attachments.add(a); + size += a.getSize(); return rv; } public synchronized void removeAttachment(int index) { if (index >= 0 && index < attachments.size()) { Attachment a = attachments.get(index); + size -= a.getSize(); a.deleteData(); attachments.remove(index); } @@ -114,6 +136,7 @@ public synchronized void clearAttachments() { for (Attachment a : attachments) { + size -= a.getSize(); a.deleteData(); } attachments.clear(); diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Mail.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Mail.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Mail.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Mail.java 2024-04-10 02:29:57.000000000 +0000 @@ -49,6 +49,7 @@ import java.util.regex.Pattern; import net.i2p.I2PAppContext; +import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.servlet.util.ServletUtil; import net.i2p.util.Log; @@ -91,7 +92,7 @@ private MailPart part; /** May be null. Non-empty if non-null. Not HTML escaped. */ String[] to, cc; // addresses only, enclosed by <> - private boolean isNew, isSpam; + private boolean isNew, isSpam, headersParsed; public String contentType; public String messageID; // as received, trimmed only, probably enclosed with <>, not HTML escaped @@ -127,6 +128,8 @@ setHeader(rb, rb.getInputStream(), true); } catch (IOException ioe) { // TODO... + if (_log.shouldWarn()) + _log.warn("Header read error", ioe); } } @@ -172,7 +175,6 @@ // In the common case where we have the body, we only parse the headers once. // we always re-set the header, even if it was non-null before, // as we have to parse them to find the start of the body - // and who knows, the headers could have changed. //if (header == null) // setHeader(rb); body = rb; @@ -441,6 +443,9 @@ if (_log.shouldDebug()) _log.debug("EOF hit before \\r\\n\\r\\n in Mail"); // Fixme UTF-8 to bytes to UTF-8 headerLines = DataHelper.split(new String(decoded.getContent(), decoded.getOffset(), decoded.getLength()), "\r\n"); + // only do this once + if (headersParsed) + return headerLines; for (int j = 0; j < headerLines.length; j++) { String line = headerLines[j]; if( line.length() == 0 ) @@ -524,8 +529,16 @@ contentType = line.substring(13).trim(); } else if (hlc.startsWith("message-id:")) { messageID = line.substring(11).trim(); + } else if (hlc.startsWith("x-uidl:")) { + // shouldn't happen unless you imported or + // copied external emails to the cache + if (!uidl.equals(line.substring(7).trim()) && _log.shouldWarn()) + _log.warn("UIDL mismatch, may be unable to load body later. Original: " + uidl + + " b64: " + Base64.encode(uidl) + + " header: " + line.substring(7).trim()); } } + headersParsed = true; } catch( Exception e ) { error += "Error parsing mail header: " + e.getClass().getName() + '\n'; diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/MailCache.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/MailCache.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/MailCache.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/MailCache.java 2024-04-10 02:29:57.000000000 +0000 @@ -48,6 +48,7 @@ import net.i2p.I2PAppContext; import net.i2p.app.ClientAppManager; import net.i2p.app.NotificationService; +import net.i2p.data.Base64; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; import net.i2p.util.Log; @@ -61,7 +62,7 @@ class MailCache { public enum FetchMode { - HEADER, ALL, CACHE_ONLY + HEADER, ALL, CACHE_ONLY, HEADER_CACHE_ONLY } private final POP3MailBox mailbox; @@ -326,12 +327,12 @@ } /** - * Fetch any needed data from pop3 server, unless mode is CACHE_ONLY, + * Fetch any needed data from pop3 server, unless mode is CACHE_ONLY or HEADER_CACHE_ONLY, * or this isn't the Inbox. - * Blocking unless mode is CACHE_ONLY. + * Blocking for a long time unless mode is CACHE_ONLY or HEADER_CACHE_ONLY. * * @param uidl message id to get - * @param mode CACHE_ONLY to not pull from pop server + * @param mode CACHE_ONLY or HEADER_CACHE_ONLY to not pull from pop server * @return An e-mail or null */ @SuppressWarnings({"unchecked", "rawtypes"}) @@ -358,22 +359,42 @@ } if (mail.markForDeletion) return null; - // if not in inbox, we can't fetch, this is what we have - if (mailbox == null) - return mail; long sz = mail.getSize(); if (mode == FetchMode.HEADER && sz > 0 && sz <= FETCH_ALL_SIZE) mode = FetchMode.ALL; if (mode == FetchMode.HEADER) { - if (!mail.hasHeader()) { + if (!mail.hasHeader() && mailbox != null) { + if (_log.shouldInfo()) _log.info("Fetching mail header from server for b64: " + Base64.encode(uidl)); Buffer buf = mailbox.getHeader(uidl); if (buf != null) mail.setHeader(buf); } - } else if (mode == FetchMode.ALL) { - if(!mail.hasBody()) { + } else if (mode == FetchMode.HEADER_CACHE_ONLY) { + if (!mail.hasHeader()) { + // shouldn't happen + if (disk.getMail(mail, true)) { + if (_log.shouldWarn()) _log.warn("Loaded deferred header from disk cache for b64: " + Base64.encode(uidl)); + return mail; + } else { + if (_log.shouldWarn()) _log.warn("Failed to load deferred header from disk cache for b64: " + Base64.encode(uidl)); + } + } + } else if (!mail.hasBody()) { + // CACHE_ONLY or ALL + if (disk.getFullFile(uidl).exists()) { + // body was not loaded at startup but we have it, load it now + if (disk.getMail(mail, false)) { + if (_log.shouldDebug()) _log.debug("Loaded deferred body from disk cache for b64: " + Base64.encode(uidl)); + return mail; + } + if (_log.shouldWarn()) _log.warn("Failed to load deferred body from disk cache for b64: " + Base64.encode(uidl)); + } else { + if (_log.shouldWarn()) _log.warn("We do not have body in disk cache for b64: " + Base64.encode(uidl)); + } + if (mode == FetchMode.ALL && mailbox != null) { + if (_log.shouldInfo()) _log.info("Fetching mail body from server for b64: " + Base64.encode(uidl)); File file = new File(_context.getTempDir(), "susimail-new-" + _context.random().nextLong()); Buffer rb = mailbox.getBody(uidl, new FileBuffer(file)); if (rb != null) { @@ -384,8 +405,6 @@ } } } - } else { - // else if it wasn't in cache, too bad } return mail; } @@ -405,7 +424,7 @@ */ @SuppressWarnings({"unchecked", "rawtypes"}) public boolean getMail(FetchMode mode) { - if (mode == FetchMode.CACHE_ONLY) + if (mode == FetchMode.CACHE_ONLY || mode == FetchMode.HEADER_CACHE_ONLY) throw new IllegalArgumentException(); if (mailbox == null) { if (_log.shouldDebug()) _log.debug("getMail() mode " + mode + " called on wrong folder " + getFolderName(), new Exception()); diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/MailPart.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/MailPart.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/MailPart.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/MailPart.java 2024-04-10 02:29:57.000000000 +0000 @@ -56,8 +56,9 @@ private static final OutputStream DUMMY_OUTPUT = new DummyOutputStream(); public final String[] headerLines; + /** encoding non-null */ public final String type, encoding, name, - description, disposition, charset, version; + description, disposition, charset, version, multipart_type, cid; /** begin, end, and beginBody are relative to readBuffer.getOffset(). * begin is before the headers * beginBody is after the headers @@ -125,6 +126,8 @@ String x_encoding = null; String x_disposition = null; String x_type = null; + String x_multipart_type = null; + String x_cid = null; boolean x_multipart = false; boolean x_message = false; String x_name = null; @@ -159,10 +162,14 @@ str = getHeaderLineAttribute( headerLines[i], "boundary" ); if( str != null ) boundary = str; - if (x_type.startsWith( "multipart" ) && boundary != null ) + if (x_type.startsWith( "multipart" ) && boundary != null ) { x_multipart = true; - else if (x_type.startsWith( "message" ) ) + str = getHeaderLineAttribute( headerLines[i], "type" ); + if (str != null) + x_multipart_type = str; + } else if (x_type.startsWith("message")) { x_message = true; + } str = getHeaderLineAttribute( headerLines[i], "name" ); if( str != null ) x_name = str; @@ -176,12 +183,24 @@ else if( hlc.startsWith( "mime-version: " ) ) { x_version = getFirstAttribute( headerLines[i] ); } + else if (hlc.startsWith( "content-id: ")) { + x_cid = getFirstAttribute( headerLines[i] ); + if (x_cid.startsWith("<")) + x_cid = x_cid.substring(1); + if (x_cid.endsWith(">")) + x_cid = x_cid.substring(0, x_cid.length() - 1); + } } + // RFC 2045 Sec. 6.1: 7bit is the default + if (x_encoding == null) + x_encoding = "7bit"; encoding = x_encoding; disposition = x_disposition; type = x_type; multipart = x_multipart; + multipart_type = x_multipart_type; + cid = x_cid; message = x_message; name = x_name; charset = x_charset; @@ -250,7 +269,7 @@ tmpEnd = (int) counter.getRead(); } end = tmpEnd; - if (encoding == null || encoding.equals("7bit") || encoding.equals("8bit") || encoding.equals("binary")) { + if (encoding.equals("7bit") || encoding.equals("8bit") || encoding.equals("binary")) { decodedLength = end - beginBody; } //if (Debug.getLevel() >= Debug.DEBUG) @@ -310,15 +329,9 @@ * @since 0.9.13 */ public synchronized void decode(int offset, Buffer out) throws IOException { - String encg = encoding; - if (encg == null) { - //throw new DecodingException("No encoding specified"); - if (_log.shouldDebug()) _log.debug("Warning: no transfer encoding found, fallback to 7bit."); - encg = "7bit"; - } - Encoding enc = EncodingFactory.getEncoding(encg); + Encoding enc = EncodingFactory.getEncoding(encoding); if(enc == null) - throw new DecodingException(_t("No encoder found for encoding \\''{0}\\''.", WebMail.quoteHTML(encg))); + throw new DecodingException(_t("No encoder found for encoding \\''{0}\\''.", WebMail.quoteHTML(encoding))); InputStream in = null; LimitInputStream lin = null; CountingOutputStream cos = null; @@ -504,6 +517,8 @@ "\tmultipart?\t" + multipart + "\n\tmessage?\t" + message + "\n\ttype:\t" + type + + "\n\tmultipart type:\t" + multipart_type + + "\n\tcid:\t" + cid + "\n\tencoding:\t" + encoding + "\n\tname:\t" + name + "\n\tdescription:\t" + description + diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/PersistentMailCache.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/PersistentMailCache.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/PersistentMailCache.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/PersistentMailCache.java 2024-04-10 02:29:57.000000000 +0000 @@ -205,22 +205,33 @@ } private boolean locked_getMail(Mail mail, boolean headerOnly) { + boolean found = false; File f = getFullFile(mail.uidl); if (f.exists()) { + found = true; Buffer rb = read(f); if (rb != null) { mail.setBody(rb); return true; + } else { + if (_log.shouldWarn()) + _log.warn("Unable to read file " + f); } } f = getHeaderFile(mail.uidl); if (f.exists()) { + found = true; Buffer rb = read(f); if (rb != null) { mail.setHeader(rb); return true; + } else { + if (_log.shouldWarn()) + _log.warn("Unable to read file " + f); } } + if (!found && _log.shouldWarn()) + _log.warn("Unable to find file " + f + " for mail " + Base64.encode(mail.uidl)); return false; } @@ -307,6 +318,41 @@ return base; } + /** + * @return non-null, sorted, possibly empty + * @since 0.9.62 + */ + public static List getAllUsers(String host, int port) { + File f = new SecureDirectory(I2PAppContext.getGlobalContext().getConfigDir(), DIR_SUSI); + if (!f.exists()) + return Collections.emptyList(); + f = new SecureDirectory(f, DIR_CACHE); + if (!f.exists()) + return Collections.emptyList(); + File[] files = f.listFiles(); + if (files == null || files.length == 0) + return Collections.emptyList(); + List rv = new ArrayList(files.length); + String suff = host + port; + for (File d : files) { + if (!d.isDirectory()) + continue; + String name = d.getName(); + if (!name.startsWith(CACHE_PREFIX)) + continue; + name = name.substring(CACHE_PREFIX.length()); + String dec = Base64.decodeToString(name); + if (dec == null) + continue; + if (dec.endsWith(suff)) + dec = dec.substring(0, dec.length() - suff.length()); + rv.add(dec); + } + if (rv.size() > 1) + Collections.sort(rv); + return rv; + } + public File getHeaderFile(String uidl) { return getFile(uidl, HDR_SUFFIX); } @@ -374,6 +420,8 @@ * @return null on failure */ private static Buffer read(File f) { + if (!f.canRead()) + return null; return new GzipFileBuffer(f); } @@ -396,20 +444,44 @@ } else { return null; } - if (uidl == null) + if (uidl == null) { + Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistentMailCache.class); + if (log.shouldWarn()) + log.warn("Unable to extract UIDL from file " + f); return null; + } Buffer rb = read(f); - if (rb == null) + if (rb == null) { + Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistentMailCache.class); + if (log.shouldWarn()) + log.warn("Unable to read file " + f); return null; + } Mail mail; if (isDrafts) mail = new Draft(uidl); else mail = new Mail(uidl); - if (headerOnly) + if (headerOnly) { mail.setHeader(rb); - else + } else if (isDrafts) { + // drafts always have FULL_SUFFIX but + // may not actually have a real body or part. + // If we don't call setBody(), it has + // a null part and we NPE on the compose page. + // Attachments are stored in separate files so + // these are all small. mail.setBody(rb); + } else { + // Deferred loading, body will be loaded + // on-demand in MailCache.getMail() + // We set the size of the gzipped file to be the + // size so the UI doesn't have ?? in it. + // The size will be corrected if and when the body is read. + //mail.setBody(rb); + mail.setHeader(rb); + mail.setSize(f.length()); + } return mail; } diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Sorters.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Sorters.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/Sorters.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/Sorters.java 2024-04-10 02:29:57.000000000 +0000 @@ -33,8 +33,8 @@ * Gets mail from the cache, checks for null, then compares */ public int compare(String arg0, String arg1) { - Mail a = mailCache.getMail( arg0, MailCache.FetchMode.CACHE_ONLY ); - Mail b = mailCache.getMail( arg1, MailCache.FetchMode.CACHE_ONLY ); + Mail a = mailCache.getMail(arg0, MailCache.FetchMode.HEADER_CACHE_ONLY); + Mail b = mailCache.getMail(arg1, MailCache.FetchMode.HEADER_CACHE_ONLY); if (a == null) return (b == null) ? 0 : 1; if (b == null) diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/WebMail.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/WebMail.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/WebMail.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/WebMail.java 2024-04-10 02:29:57.000000000 +0000 @@ -33,6 +33,7 @@ import i2p.susi.util.Folder; import i2p.susi.util.Folder.SortOrder; import i2p.susi.util.OutputStreamBuffer; +import i2p.susi.util.RegexOutputStream; import i2p.susi.util.StringBuilderWriter; import i2p.susi.webmail.Messages; import static i2p.susi.webmail.Sorters.*; @@ -57,6 +58,8 @@ import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.io.Writer; +import java.net.URI; +import java.net.URISyntaxException; import java.text.Collator; import java.util.ArrayList; import java.util.Arrays; @@ -108,6 +111,8 @@ private static final int DEFAULT_SMTPPORT = 7659; private enum State { AUTH, LOADING, LIST, SHOW, NEW, CONFIG } + /** @since 0.9.62 */ + private enum HtmlMode { NONE, LINK, ALLOW, PREFER } // TODO generate from servlet name to allow for renaming or multiple instances private static final String myself = "/susimail/"; @@ -166,6 +171,9 @@ private static final String SHOW = "show"; private static final String DOWNLOAD = "download"; private static final String RAW_ATTACHMENT = "att"; + private static final String CID_ATTACHMENT = "cid"; + private static final String DRAFT_ATTACHMENT = "datt"; + private static final String HTML = "html"; private static final String MARKALL = "markall"; private static final String CLEAR = "clearselection"; @@ -241,6 +249,9 @@ private static final String CONFIG_COMPOSER_COLS = "composer.cols"; private static final String CONFIG_COMPOSER_ROWS = "composer.rows"; + private static final String CONFIG_HTML_ALLOWED = "view.html.allowed"; + private static final String CONFIG_HTML_PREFERRED = "view.html.preferred"; + private static final String CONFIG_COPY_TO_SENT = "composer.copy.to.sent"; static final String CONFIG_LEAVE_ON_SERVER = "pop3.leave.on.server"; public static final String CONFIG_BACKGROUND_CHECK = "pop3.check.enable"; @@ -441,7 +452,7 @@ } else { buf.append(""); - buf.append("\"^\""); + buf.append("\"^\""); buf.append("\n"); } if (name.equals(currentName) && currentOrder == SortOrder.DOWN) { @@ -449,7 +460,7 @@ } else { buf.append(""); - buf.append("\"v\""); + buf.append("\"v\""); buf.append(""); } return buf.toString(); @@ -470,7 +481,7 @@ /** * recursively render all mail body parts * - * 1. if type is multipart/alternative, look for text/plain section and ignore others + * 1. if type is multipart/alternative, look for preferred section and ignore others * 2. if type is multipart/*, recursively call all these parts * 3. if type is text/plain (or mail is not mime), print out * 4. in all other cases print out message, that part is not displayed @@ -478,14 +489,17 @@ * @param out * @param mailPart * @param level is increased by recursively calling sub parts + * @param html use html styling + * @param allowHtml allow display of text/html parts */ - private static void showPart( PrintWriter out, MailPart mailPart, int level, boolean html ) + private static void showPart(PrintWriter out, MailPart mailPart, int level, boolean html, HtmlMode allowHtml) { String br = html ? "
    \r\n" : "\r\n"; if( html ) { out.println( "" ); + if (allowHtml != HtmlMode.NONE) { + out.println( "" ); + out.println("

    "); + out.println("" ); + out.println("

    " + _t("To protect your privacy, SusiMail has blocked remote content in this message.") + ""); + out.println("

    "); + // TODO scrolling=no if js is on + } else if (showBody) { if( html ) out.println( "


    " ); String charset = mailPart.charset; @@ -714,14 +789,24 @@ if( user == null || user.length() == 0 ) { sessionObject.error += _t("Need username for authentication.") + '\n'; doContinue = false; + } else { + user = user.trim(); + if (user.endsWith("@mail.i2p")) { + sessionObject.error += _t("Do not include @mail.i2p in the username") + '\n'; + doContinue = false; + } } if( pass == null || pass.length() == 0 ) { sessionObject.error += _t("Need password for authentication.") + '\n'; doContinue = false; + } else { + pass = pass.trim(); } if( host == null || host.length() == 0 ) { sessionObject.error += _t("Need hostname for connect.") + '\n'; doContinue = false; + } else { + host = host.trim(); } int pop3PortNo = 0; if( pop3Port == null || pop3Port.length() == 0 ) { @@ -729,6 +814,7 @@ doContinue = false; } else { + pop3Port = pop3Port.trim(); try { pop3PortNo = Integer.parseInt( pop3Port ); if( pop3PortNo < 0 || pop3PortNo > 65535 ) { @@ -748,6 +834,7 @@ doContinue = false; } else { + smtpPort = smtpPort.trim(); try { smtpPortNo = Integer.parseInt( smtpPort ); if( smtpPortNo < 0 || smtpPortNo > 65535 ) { @@ -1111,9 +1198,13 @@ sessionObject.reallyDelete = false; } } else if (buttonPressed(request, DOWNLOAD) || - buttonPressed(request, RAW_ATTACHMENT)) { + buttonPressed(request, RAW_ATTACHMENT) || + buttonPressed(request, CID_ATTACHMENT)) { // GET params state = State.SHOW; + } else if (buttonPressed(request, DRAFT_ATTACHMENT)) { + // GET params + state = State.NEW; } /* @@ -1182,7 +1273,7 @@ pw.println( _t("On {0} {1} wrote:", mail.formattedDate + " UTC", to)); StringBuilderWriter text2 = new StringBuilderWriter(); PrintWriter pw2 = new PrintWriter( text2 ); - showPart( pw2, part, 0, TEXT_ONLY ); + showPart(pw2, part, 0, TEXT_ONLY, HtmlMode.NONE); pw2.flush(); String[] lines = DataHelper.split(text2.toString(), "\r\n"); for( int i = 0; i < lines.length; i++ ) @@ -1223,7 +1314,7 @@ attachments = new ArrayList(parts.size()); MailCache drafts = sessionObject.caches.get(DIR_DRAFTS); for (MailPart mp : parts) { - if (mp.name == null || mp.type == null || mp.encoding == null) { + if (mp.name == null || mp.type == null) { if (log.shouldDebug()) log.debug("skipping fwd att: " + mp); continue; @@ -1247,6 +1338,28 @@ out.writeComplete(ok); } } + } else if ("text/html".equals(part.type)) { + // HTML-only email, add as attachment + attachments = new ArrayList(1); + MailCache drafts = sessionObject.caches.get(DIR_DRAFTS); + String temp = "susimail-attachment-" + ctx.random().nextLong(); + File f; + if (drafts != null) { + f = new File(drafts.getAttachmentDir(), temp); + } else { + f = new File(ctx.getTempDir(), temp); + } + Buffer out = new FileBuffer(f); + boolean ok = false; + try { + part.decode(0, out); + ok = true; + attachments.add(new Attachment("email.html", part.type, part.encoding, f)); + } catch (IOException e) { + sessionObject.error += _t("Error reading uploaded file: {0}", e.getMessage()) + '\n'; + } finally { + out.writeComplete(ok); + } } subject = mail.subject; if (!(subject.startsWith("Fwd:") || @@ -1277,7 +1390,7 @@ if( mail.dateString != null ) pw.print( "Date: " + mail.dateString ); pw.println(); - showPart( pw, part, 0, TEXT_ONLY ); + showPart(pw, part, 0, TEXT_ONLY, HtmlMode.NONE); pw.println( "---- " + _t("end forwarded mail") + " ----" ); pw.flush(); } @@ -1579,16 +1692,33 @@ { String str = request.getParameter(DOWNLOAD); boolean isRaw = false; + boolean isCID = false; if (str == null) { str = request.getParameter(RAW_ATTACHMENT); + if (str == null) { + str = request.getParameter(CID_ATTACHMENT); + isCID = true; + } isRaw = true; } if( str != null ) { try { - int id = Integer.parseInt( str ); MailCache mc = getCurrentMailCache(sessionObject, request); Mail mail = (mc != null) ? mc.getMail(showUIDL, MailCache.FetchMode.ALL) : null; - MailPart part = mail != null ? getMailPartFromID(mail.getPart(), id) : null; + MailPart part = null; + if (mail != null) { + if (isCID) { + // strip @ part, see RFC 2045 + // https://stackoverflow.com/questions/39577386/the-precise-format-of-content-id-header + int idx = str.indexOf('@'); + if (idx > 0) + str = str.substring(0, idx); + part = getMailPartFromID(mail.getPart(), str); + } else { + int id = Integer.parseInt( str ); + part = getMailPartFromID(mail.getPart(), id); + } + } if( part != null ) { if (sendAttachment(sessionObject, part, response, isRaw)) return true; @@ -1605,6 +1735,50 @@ /** + * Process thumbnail link in compose view + * Draft attachments are stored in the SessionObject and identified by hashcode only. + * + * @since 0.9.62 + */ + private static void processDraftAttachmentLink(SessionObject sessionObject, + RequestWrapper request, HttpServletResponse response) + { + String str = request.getParameter(DRAFT_ATTACHMENT); + if (str != null) { + InputStream in = null; + OutputStream out = null; + try { + if (sessionObject.attachments != null) { + int hc = Integer.parseInt(str); + for (Attachment att : sessionObject.attachments) { + if (hc == att.hashCode()) { + String ct = att.getContentType(); + if (ct != null) + response.setContentType(ct); + response.setContentLength((int) att.getSize()); + response.setHeader("Cache-Control", "public, max-age=3600"); + in = att.getData(); + out = response.getOutputStream(); + DataHelper.copy(in, out); + return; + } + } + } + } catch (NumberFormatException nfe ) { + } catch (IOException ioe ) { + } finally { + if (in != null) try { in.close(); } catch (IOException ioe) {} + if (out != null) try { out.close(); } catch (IOException ioe) {} + } + } + // error if we get here + try { + response.sendError(404, _t("Attachment not found.")); + } catch (IOException ioe) {} + } + + + /** * Process save-as link in message view * * @param sessionObject @@ -1656,6 +1830,35 @@ } /** + * Recursive. + * @param id a content-id, without the surrounding <> or trailing @ part + * @return the part or null + * @since 0.9.62 + */ + private static MailPart getMailPartFromID(MailPart part, String id) { + if( part == null ) + return null; + if (id.equals(part.cid)) + return part; + if (part.cid != null) { + // strip @ and try again, + int idx = part.cid.indexOf('@'); + if (idx > 0) { + if (id.equals(part.cid.substring(0, idx))) + return part; + } + } + if( part.multipart || part.message ) { + for( MailPart p : part.parts ) { + MailPart subPart = getMailPartFromID(p, id); + if( subPart != null ) + return subPart; + } + } + return null; + } + + /** * process buttons of folder view * @param sessionObject * @param page the current page @@ -2010,10 +2213,27 @@ boolean isMobile = (forceMobileConsole || isMobile(httpRequest.getHeader("User-Agent"))); httpRequest.setCharacterEncoding("UTF-8"); - response.setCharacterEncoding("UTF-8"); - response.setHeader("X-Frame-Options", "SAMEORIGIN"); - response.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; form-action 'self'; frame-ancestors 'self'; object-src 'none'; media-src 'none'"); - response.setHeader("X-XSS-Protection", "1; mode=block"); + response.setHeader("X-Frame-Options", "SAMEORIGIN"); + // very strict CSP for HTML emails in iframes + if (httpRequest.getParameter(RAW_ATTACHMENT) != null || + httpRequest.getParameter(CID_ATTACHMENT) != null || + httpRequest.getParameter(DRAFT_ATTACHMENT) != null) { + // we don't even let the iframe get to the console, it must be within /susimail/ + String me = "127.0.0.1:7657"; + String requrl = httpRequest.getRequestURL().toString(); + try { + URI uri = new URI(requrl); + me = uri.getHost() + ':' + uri.getPort(); + } catch(URISyntaxException use) {} + // img-src allows for cid: urls that were fixed up by RegexOutputStream + response.setHeader("Content-Security-Policy", "default-src 'none'; style-src 'unsafe-inline'; script-src " + me + "/js/iframeResizer.contentWindow.js; form-action 'none'; frame-ancestors " + me + myself + "; object-src 'none'; media-src 'none'; img-src " + me + myself + "; font-src 'none'; frame-src 'none'; worker-src 'none'"); + // character encoding will be set in sendAttachment() + } else { + response.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self'; script-src 'self'; form-action 'self'; frame-ancestors 'self'; object-src 'none'; media-src 'none'; img-src 'self'"); + response.setCharacterEncoding("UTF-8"); + } + response.setHeader("Permissions-Policy", "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture(), fullscreen=(self), geolocation=(), gyroscope=(), interest-cohort=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=(), vibrate=(), vr=()"); + response.setHeader("X-XSS-Protection", "1; mode=block"); response.setHeader("X-Content-Type-Options", "nosniff"); response.setHeader("Referrer-Policy", "no-referrer"); response.setHeader("Accept-Ranges", "none"); @@ -2171,6 +2391,10 @@ sendRedirect(httpRequest, response, q); return; } + if (request.getParameter(DRAFT_ATTACHMENT) != null) { + processDraftAttachmentLink(sessionObject, request, response); + return; + } } // ?show= links - this forces State.SHOW @@ -2264,7 +2488,7 @@ if (state == State.LIST) { for (Iterator it = folder.currentPageIterator(); it != null && it.hasNext(); ) { String uidl = it.next(); - Mail mail = mc.getMail(uidl, MailCache.FetchMode.HEADER); + Mail mail = mc.getMail(uidl, MailCache.FetchMode.HEADER_CACHE_ONLY); if( mail != null && mail.error.length() > 0 ) { sessionObject.error += mail.error; mail.error = ""; @@ -2340,8 +2564,13 @@ out.println( "\n" + "" ); } + out.println(""); if(state != State.AUTH) out.println(""); + if (state == State.NEW) { + out.println(""); + out.println(""); + } if (state == State.NEW || state == State.CONFIG) { // TODO cancel if to and body are empty out.println(""); @@ -2351,6 +2580,13 @@ // TODO JS? out.println(""); // TODO we don't need the form below + } else if (state == State.SHOW) { + out.println(""); + out.println(""); + out.println(""); + out.println(""); + out.println(""); + out.println(""); } out.println(""); out.print("\n"); @@ -2359,8 +2595,6 @@ sessionObject.addNonce(nonce); out.println( "

    " + - // hidden by CSS - //"
    \"Susimail\"
    \n" + "\n" + "\n" + // we use this to know if the user thought he was logged in at the time @@ -2419,7 +2653,11 @@ } } if (showRefresh || sessionObject.error.length() > 0 || sessionObject.info.length() > 0) { - out.println("
    "); + out.print("
    0) + out.print(" id=\"errornotifications\""); + out.println(">"); if (sessionObject.error.length() > 0) out.println("

    " + quoteHTML(sessionObject.error).replace("\n", "
    ") + "

    "); if (sessionObject.info.length() > 0 || showRefresh) { @@ -2440,7 +2678,7 @@ * now write body */ if( state == State.AUTH ) - showLogin( out ); + showLogin(out, _t("Add a new user").equals(request.getParameter(USER))); else if (state == State.LOADING) showLoading(out, sessionObject, request); @@ -2448,8 +2686,24 @@ else if( state == State.LIST ) showFolder( out, sessionObject, mc, request ); - else if( state == State.SHOW ) - showMessage(out, sessionObject, mc, showUIDL, buttonPressed(request, DELETE)); + else if( state == State.SHOW ) { + // Determine what HtmlMode we're going to show the mail in + boolean disable = isMobile || + !CSPDetector.supportsCSP(httpRequest.getHeader("User-Agent")); + boolean link = !disable; + String hp = httpRequest.getParameter(HTML); + boolean allow = link && + ("1".equals(hp)) || + (!"0".equals(hp) && + Boolean.parseBoolean(Config.getProperty(CONFIG_HTML_ALLOWED, "true"))); + boolean prefer = allow && + ("1".equals(hp)) || + (!"0".equals(hp) && + Boolean.parseBoolean(Config.getProperty(CONFIG_HTML_PREFERRED, "true"))); + HtmlMode allowHTML = prefer ? HtmlMode.PREFER : allow ? HtmlMode.ALLOW : + link ? HtmlMode.LINK : HtmlMode.NONE; + showMessage(out, sessionObject, mc, showUIDL, buttonPressed(request, DELETE), allowHTML); + } else if( state == State.NEW ) showCompose( out, sessionObject, request ); @@ -2457,8 +2711,12 @@ else if( state == State.CONFIG ) showConfig(out, folder); - //out.println( "
    \n"); - out.println( "

    susimail © 2004-2005 susi

    \n"); + out.println("\n"); + + out.println("

    \n" + + "\"susimail\"\n" + + "© 2004-2005 susi

    "); + out.println("
    \n"); out.flush(); } // synch sessionObject } @@ -2524,10 +2782,23 @@ response.setContentType(part.type); if (part.charset != null) response.setCharacterEncoding(part.charset); - if (part.decodedLength >= 0) - response.setContentLength(part.decodedLength); - if (log.shouldDebug()) log.debug("Sending raw attachment " + name + " length " + part.decodedLength); out = response.getOutputStream(); + if ("text/html".equals(part.type)) { + // inject the js into the iframe + // For content without , we put it at the end and hope for the best. + out = new RegexOutputStream(out, "", + "\n\n\n\n", + "\n\n\n"); + // convert cid: urls to /susimail/?cid= urls + out = new RegexOutputStream(out, " src=\"cid:", + " src=\"/susimail/?msg=" + Base64.encode(part.uidl) + "&cid=", + null); + // don't set content length, as it may change due to replacements + } else { + if (part.decodedLength >= 0) + response.setContentLength(part.decodedLength); + } + if (log.shouldDebug()) log.debug("Sending raw attachment " + name + " length " + part.decodedLength); part.decode(0, new OutputStreamBuffer(out)); shown = true; } catch (IOException e) { @@ -3071,9 +3342,9 @@ "" + _t("Cc") + ":\n" + "" + _t("Bcc") + ":\n" + "" + _t("Subject") + ":\n" + - "" + + "" + "
    \n" + - "" + _t("Add Attachment") + ": " + button(NEW_UPLOAD, _t("Add Attachment")) + ""); + "" + _t("Add Attachment") + ": " + button(NEW_UPLOAD, _t("Add Attachment")) + ""); if( sessionObject.attachments != null && !sessionObject.attachments.isEmpty() ) { boolean wroteHeader = false; @@ -3084,7 +3355,13 @@ } else { out.println(" "); } - out.println(""); + out.println(""); + out.println(DataHelper.formatSize2(attachment.getSize()) + 'B'); + String type = attachment.getContentType(); + if (type != null && type.startsWith("image/")) { + out.println("\"\"" + _t("Really delete this message?") + ' ' + @@ -3493,7 +3804,7 @@ "\n" ); if( mail.hasPart()) { mail.setNew(false); - showPart( out, mail.getPart(), 0, SHOW_HTML ); + showPart(out, mail.getPart(), 0, SHOW_HTML, allowHTML); } else { out.println( "

    " + _t("Could not fetch mail body.") + "

    \n" ); diff -Nru i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/encoding/QuotedPrintable.java i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/encoding/QuotedPrintable.java --- i2p-2.4.0/apps/susimail/src/src/i2p/susi/webmail/encoding/QuotedPrintable.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/src/i2p/susi/webmail/encoding/QuotedPrintable.java 2024-04-10 02:29:57.000000000 +0000 @@ -196,6 +196,5 @@ */ out.write(c); } - bout.writeComplete(true); } } diff -Nru i2p-2.4.0/apps/susimail/src/susimail.properties i2p-2.5.0/apps/susimail/src/susimail.properties --- i2p-2.4.0/apps/susimail/src/susimail.properties 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/susimail.properties 2024-04-10 02:29:57.000000000 +0000 @@ -9,6 +9,9 @@ susimail.pager.pagesize=30 +susimail.view.html.allowed=true +susimail.view.html.preferred=true + susimail.composer.cols=80 susimail.composer.rows=15 susimail.composer.copy.to.sent=true diff -Nru i2p-2.4.0/apps/susimail/src/themes/dark/markdown.css i2p-2.5.0/apps/susimail/src/themes/dark/markdown.css --- i2p-2.4.0/apps/susimail/src/themes/dark/markdown.css 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/themes/dark/markdown.css 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,5 @@ +blockquote { + border-left: 2px dotted #888; + padding-left: 5px; + background: #d0f0ff; +} diff -Nru i2p-2.4.0/apps/susimail/src/themes/dark/susimail.css i2p-2.5.0/apps/susimail/src/themes/dark/susimail.css --- i2p-2.4.0/apps/susimail/src/themes/dark/susimail.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/themes/dark/susimail.css 2024-04-10 02:29:57.000000000 +0000 @@ -50,10 +50,6 @@ outline: none; } -div.header { - padding: 8px 5px 12px 5px; -} - hr { color: #494; background: #494; @@ -133,8 +129,10 @@ color: #495057 !important; } -.iframed .footer { - display: none; +img.footer { + max-height: 32px; + max-width: 64px; + margin: 0 1px -4px 0; } p.mailbody, textarea { @@ -143,14 +141,6 @@ text-align: left; } -.header { - display: none; -} - -.iframed .header { - display: none; -} - div.topbuttons { padding: 8px 0 !important; font-weight: bold; @@ -286,6 +276,10 @@ padding: 0 10px !important; } +iframe { + background: #ccc; +} + table#mailbox { margin-bottom: 0; } @@ -657,6 +651,15 @@ float: right; } +#new_upload.highlight { + background: #f60 url(images/attach.png); +} + +#new_filename.highlight { + background: #f60; + color: #fff; +} + * { outline: none; } @@ -815,6 +818,10 @@ /* login + misc mods */ +#errornotifications { + position: static; +} + .notifications { text-align: center; padding: 0 0 20px; @@ -1005,6 +1012,12 @@ background: none; } +img.thumb { + margin: 0px 8px -10px 8px; + max-height: 64px; + max-width: 128px; +} + div#emptymailbox { padding: 20px 10px; } diff -Nru i2p-2.4.0/apps/susimail/src/themes/light/markdown.css i2p-2.5.0/apps/susimail/src/themes/light/markdown.css --- i2p-2.4.0/apps/susimail/src/themes/light/markdown.css 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/themes/light/markdown.css 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,5 @@ +blockquote { + border-left: 2px dotted #888; + padding-left: 5px; + background: #d0f0ff; +} diff -Nru i2p-2.4.0/apps/susimail/src/themes/light/susimail.css i2p-2.5.0/apps/susimail/src/themes/light/susimail.css --- i2p-2.4.0/apps/susimail/src/themes/light/susimail.css 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/apps/susimail/src/themes/light/susimail.css 2024-04-10 02:29:57.000000000 +0000 @@ -124,7 +124,7 @@ } .mailbody p.info { - margin: -32px 0 0; + margin: 20px 20px 0 !important; display: block; border: 1px solid #447; border-radius: 2px; @@ -141,10 +141,6 @@ color: #327BBF; } -div.header, .iframed .header { - display: none; -} - div.footer { border-top: none; margin: 14px 0 10px; @@ -161,8 +157,10 @@ color: #495057 !important; } -.iframed .footer { - display: none; +img.footer { + max-height: 32px; + max-width: 64px; + margin: 0 1px -4px 0; } p.mailbody { @@ -410,18 +408,6 @@ line-height: 160% } -.header + form { - border: 1px solid #7778bf; - border-radius: 2px 2px 0 0; - background: #f4f4ff; - background: linear-gradient(to bottom, #f8f8ff, #f2f2ff); - box-shadow: 0 0 0 1px #fff; -} - -.iframed .header + form { - margin-bottom: 0; -} - #message_full { border: 1px solid #7778bf; border-left: none; @@ -849,6 +835,15 @@ float: right; } +#new_upload.highlight { + background: #f60 url(images/attach.png); +} + +#new_filename.highlight { + background: #f60; + color: #fff; +} + a.sort { vertical-align: middle; display: inline-block; @@ -1338,11 +1333,19 @@ display: none; } +iframe { + background: #eee; +} + #composemail .bottombuttons { background: none !important; box-shadow: none !important; } +#errornotifications { + position: static; +} + .notifications { bottom: 0; left: 0; @@ -1427,6 +1430,12 @@ margin: 8px 3px 0 0; } +img.thumb { + margin: 0px 8px -10px 8px; + max-height: 64px; + max-width: 128px; +} + #prefsave { margin-top: 4px; padding-top: 10px; diff -Nru i2p-2.4.0/build.xml i2p-2.5.0/build.xml --- i2p-2.4.0/build.xml 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/build.xml 2024-04-10 02:29:57.000000000 +0000 @@ -1203,6 +1203,7 @@ + + @@ -2078,7 +2080,7 @@ - + @@ -2091,6 +2093,9 @@ + + + diff -Nru i2p-2.4.0/core/java/src/com/southernstorm/noise/crypto/x25519/Curve25519.java i2p-2.5.0/core/java/src/com/southernstorm/noise/crypto/x25519/Curve25519.java --- i2p-2.4.0/core/java/src/com/southernstorm/noise/crypto/x25519/Curve25519.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/com/southernstorm/noise/crypto/x25519/Curve25519.java 2024-04-10 02:29:57.000000000 +0000 @@ -469,6 +469,7 @@ * @param offset Offset into the result buffer. * @param privateKey The private key to use in the evaluation. * @param publicKey The public key to use in the evaluation, or null + * MUST have MSB high bit cleared, i.e. publicKey[31] & 0x80 == 0 * if the base point of the curve should be used. */ public static void eval(byte[] result, int offset, byte[] privateKey, byte[] publicKey) diff -Nru i2p-2.4.0/core/java/src/net/i2p/CoreVersion.java i2p-2.5.0/core/java/src/net/i2p/CoreVersion.java --- i2p-2.4.0/core/java/src/net/i2p/CoreVersion.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/CoreVersion.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,9 +2,9 @@ /* * free (adj.): unencumbered; not under the control of others - * Written by jrandom in 2003 and released into the public domain - * with no warranty of any kind, either expressed or implied. - * It probably won't make your computer catch on fire, or eat + * Written by jrandom in 2003 and released into the public domain + * with no warranty of any kind, either expressed or implied. + * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ @@ -31,7 +31,7 @@ * Otherwise, the same as PUBLISHED_VERSION. * RouterVersion.FULL_VERSION is suggested for display to the user. */ - public final static String VERSION = "2.4.0"; + public final static String VERSION = "2.5.0"; /** * The version published in the netdb via StatisticsManager. @@ -48,7 +48,7 @@ * * @since 0.9.46 */ - public final static String PUBLISHED_VERSION = "0.9.61"; + public final static String PUBLISHED_VERSION = "0.9.62"; /** * For Vuze. diff -Nru i2p-2.4.0/core/java/src/net/i2p/client/impl/I2PSessionImpl.java i2p-2.5.0/core/java/src/net/i2p/client/impl/I2PSessionImpl.java --- i2p-2.4.0/core/java/src/net/i2p/client/impl/I2PSessionImpl.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/client/impl/I2PSessionImpl.java 2024-04-10 02:29:57.000000000 +0000 @@ -11,7 +11,6 @@ import java.io.BufferedInputStream; import java.io.EOFException; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; diff -Nru i2p-2.4.0/core/java/src/net/i2p/client/impl/MessageState.java i2p-2.5.0/core/java/src/net/i2p/client/impl/MessageState.java --- i2p-2.4.0/core/java/src/net/i2p/client/impl/MessageState.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/client/impl/MessageState.java 2024-04-10 02:29:57.000000000 +0000 @@ -157,6 +157,7 @@ case MessageStatusMessage.STATUS_SEND_FAILURE_EXPIRED_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_NO_LEASESET: case MessageStatusMessage.STATUS_SEND_FAILURE_META_LEASESET: + case MessageStatusMessage.STATUS_SEND_FAILURE_LOOPBACK: case SendMessageStatusListener.STATUS_CANCELLED: // does not trump success if (_state != State.SUCCESS) diff -Nru i2p-2.4.0/core/java/src/net/i2p/client/naming/DummyNamingService.java i2p-2.5.0/core/java/src/net/i2p/client/naming/DummyNamingService.java --- i2p-2.4.0/core/java/src/net/i2p/client/naming/DummyNamingService.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/client/naming/DummyNamingService.java 2024-04-10 02:29:57.000000000 +0000 @@ -55,6 +55,10 @@ */ @Override public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) { + if (hostname.endsWith(".i2p.alt")) { + // RFC 9476 + hostname = hostname.substring(0, hostname.length() - 4); + } Destination d = getCache(hostname); if (d != null) return d; diff -Nru i2p-2.4.0/core/java/src/net/i2p/client/naming/SingleFileNamingService.java i2p-2.5.0/core/java/src/net/i2p/client/naming/SingleFileNamingService.java --- i2p-2.4.0/core/java/src/net/i2p/client/naming/SingleFileNamingService.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/client/naming/SingleFileNamingService.java 2024-04-10 02:29:57.000000000 +0000 @@ -85,6 +85,10 @@ */ @Override public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) { + if (hostname.endsWith(".i2p.alt")) { + // RFC 9476 + hostname = hostname.substring(0, hostname.length() - 4); + } try { String key = getKey(hostname); if (key == null && hostname.startsWith("www.") && hostname.length() > 7) diff -Nru i2p-2.4.0/core/java/src/net/i2p/crypto/DSAEngine.java i2p-2.5.0/core/java/src/net/i2p/crypto/DSAEngine.java --- i2p-2.4.0/core/java/src/net/i2p/crypto/DSAEngine.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/crypto/DSAEngine.java 2024-04-10 02:29:57.000000000 +0000 @@ -633,6 +633,17 @@ jsig.initSign(privKey, _context.random()); jsig.update(data, offset, len); sigbytes = jsig.sign(); + if (type.getBaseAlgorithm() == SigAlgo.RSA) { + // verify to prevent corrupted sig key factoring + // (RSA fault attack) https://eprint.iacr.org/2023/1711.pdf + SigningPrivateKey priv = SigUtil.fromJavaKey(privKey, type); + SigningPublicKey pub = priv.toPublic(); + PublicKey pubKey = SigUtil.toJavaKey(pub); + jsig.initVerify(pubKey); + jsig.update(data, offset, len); + if (!jsig.verify(sigbytes)) + throw new GeneralSecurityException("Verify of RSA Signature failed"); + } } return SigUtil.fromJavaSig(sigbytes, type); } @@ -681,6 +692,17 @@ jsig.initSign(privKey, _context.random()); jsig.update(hash.getData()); sigbytes = jsig.sign(); + if (type.getBaseAlgorithm() == SigAlgo.RSA) { + // verify to prevent corrupted sig key factoring + // (RSA fault attack) https://eprint.iacr.org/2023/1711.pdf + SigningPrivateKey priv = SigUtil.fromJavaKey(privKey, type); + SigningPublicKey pub = priv.toPublic(); + PublicKey pubKey = SigUtil.toJavaKey(pub); + jsig.initVerify(pubKey); + jsig.update(hash.getData()); + if (!jsig.verify(sigbytes)) + throw new GeneralSecurityException("Verify of RSA Signature failed"); + } } return SigUtil.fromJavaSig(sigbytes, type); } diff -Nru i2p-2.4.0/core/java/src/net/i2p/crypto/EncType.java i2p-2.5.0/core/java/src/net/i2p/crypto/EncType.java --- i2p-2.4.0/core/java/src/net/i2p/crypto/EncType.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/crypto/EncType.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,9 +2,7 @@ import java.security.spec.AlgorithmParameterSpec; import java.security.spec.InvalidParameterSpecException; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import static net.i2p.crypto.x25519.spec.X25519Spec.X25519_SPEC; import net.i2p.data.Hash; @@ -156,18 +154,25 @@ return type.isAvailable(); } - private static final Map BY_CODE = new HashMap(); + private static final EncType[] BY_CODE; static { - for (EncType type : EncType.values()) { - if (BY_CODE.put(Integer.valueOf(type.getCode()), type) != null) + EncType[] values = values(); + int max = values[values.length - 1].getCode(); + BY_CODE = new EncType[max + 1]; + for (EncType type : values) { + int i = type.getCode(); + if (BY_CODE[i] != null) throw new IllegalStateException("Duplicate EncType code"); + BY_CODE[i] = type; } } /** @return null if not supported */ public static EncType getByCode(int code) { - return BY_CODE.get(Integer.valueOf(code)); + if (code < 0 || code >= BY_CODE.length) + return null; + return BY_CODE[code]; } /** diff -Nru i2p-2.4.0/core/java/src/net/i2p/crypto/SelfSignedGenerator.java i2p-2.5.0/core/java/src/net/i2p/crypto/SelfSignedGenerator.java --- i2p-2.4.0/core/java/src/net/i2p/crypto/SelfSignedGenerator.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/crypto/SelfSignedGenerator.java 2024-04-10 02:29:57.000000000 +0000 @@ -676,6 +676,9 @@ altNames.add("localhost"); altNames.add("127.0.0.1"); altNames.add("::1"); + // RFC 9476 + if (cname.endsWith(".i2p")) + altNames.add(cname + ".alt"); } for (String n : altNames) { int len; diff -Nru i2p-2.4.0/core/java/src/net/i2p/crypto/SigType.java i2p-2.5.0/core/java/src/net/i2p/crypto/SigType.java --- i2p-2.4.0/core/java/src/net/i2p/crypto/SigType.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/crypto/SigType.java 2024-04-10 02:29:57.000000000 +0000 @@ -6,9 +6,7 @@ import java.security.Signature; import java.security.spec.AlgorithmParameterSpec; import java.security.spec.InvalidParameterSpecException; -import java.util.HashMap; import java.util.Locale; -import java.util.Map; import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable; import net.i2p.data.Hash; @@ -277,18 +275,25 @@ return type.isAvailable(); } - private static final Map BY_CODE = new HashMap(); + private static final SigType[] BY_CODE; static { - for (SigType type : SigType.values()) { - if (BY_CODE.put(Integer.valueOf(type.getCode()), type) != null) + SigType[] values = values(); + int max = values[values.length - 1].getCode(); + BY_CODE = new SigType[max + 1]; + for (SigType type : values) { + int i = type.getCode(); + if (BY_CODE[i] != null) throw new IllegalStateException("Duplicate SigType code"); + BY_CODE[i] = type; } } /** @return null if not supported */ public static SigType getByCode(int code) { - return BY_CODE.get(Integer.valueOf(code)); + if (code < 0 || code >= BY_CODE.length) + return null; + return BY_CODE[code]; } /** diff -Nru i2p-2.4.0/core/java/src/net/i2p/crypto/x25519/X25519DH.java i2p-2.5.0/core/java/src/net/i2p/crypto/x25519/X25519DH.java --- i2p-2.4.0/core/java/src/net/i2p/crypto/x25519/X25519DH.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/crypto/x25519/X25519DH.java 2024-04-10 02:29:57.000000000 +0000 @@ -3,6 +3,7 @@ import com.southernstorm.noise.crypto.x25519.Curve25519; import net.i2p.crypto.EncType; +import net.i2p.data.DataHelper; import net.i2p.data.PrivateKey; import net.i2p.data.PublicKey; import net.i2p.data.SessionKey; @@ -21,6 +22,7 @@ /** * DH * + * @param pub MUST have MSB high bit cleared, i.e. pub.getData()[31] & 0x80 == 0 * @return ECIES_X25519 * @throws IllegalArgumentException if not ECIES_X25519 */ @@ -31,4 +33,73 @@ Curve25519.eval(rv, 0, priv.getData(), pub.getData()); return new SessionKey(rv); } + + /** + * Test vectors from RFC 7748 + * + * @since 0.9.62 + */ +/**** + public static void main(String[] args) { + // k = scalar = private + // u = coordinate = public + byte[] apriv = DataHelper.fromHexString("a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4"); + if (apriv.length == 33) apriv = java.util.Arrays.copyOfRange(apriv, 1, 33); + PrivateKey apr = new PrivateKey(TYPE, apriv); + byte[] bpub = DataHelper.fromHexString("e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c"); + if (bpub.length == 33) bpub = java.util.Arrays.copyOfRange(bpub, 1, 33); + PublicKey bpu = new PublicKey(TYPE, bpub); + SessionKey sk = dh(apr, bpu); + // Output u-coordinate: + // c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552 + System.out.println(DataHelper.toHexString(sk.getData())); + + apriv = DataHelper.fromHexString("4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0d"); + if (apriv.length == 33) apriv = java.util.Arrays.copyOfRange(apriv, 1, 33); + apr = new PrivateKey(TYPE, apriv); + // this vector has high bit set + bpub = DataHelper.fromHexString("e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493"); + if (bpub.length == 33) bpub = java.util.Arrays.copyOfRange(bpub, 1, 33); + // When receiving such an array, implementations of X25519 + // (but not X448) MUST mask the most significant bit in the final byte. + // This is done to preserve compatibility with point formats that + // reserve the sign bit for use in other protocols and to increase + // resistance to implementation fingerprinting. + bpub[31] &= 0x7f; + bpu = new PublicKey(TYPE, bpub); + sk = dh(apr, bpu); + // Output u-coordinate: + // 95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957 + System.out.println(DataHelper.toHexString(sk.getData())); + + apriv = new byte[32]; + apriv[0] = 0x09; + apr = new PrivateKey(EncType.ECIES_X25519, apriv); + bpub = new byte[32]; + bpub[0] = 0x09; + bpu = new PublicKey(EncType.ECIES_X25519, bpub); + sk = dh(apr, bpu); + // After one iteration: + // 422c8e7a6227d7bca1350b3e2bb7279f7897b87bb6854b783c60e80311ae3079 + // After 1,000,000 iterations: + // 7c3911e0ab2586fd864497297e575e6f3bc601c0883c30df5f4dd2d24f665424 + System.out.println(DataHelper.toHexString(sk.getData())); + + // For each iteration, set k to be the result of calling the function + // and u to be the old value of k. The final result is the value left + // in k. + for (int i = 1; i < 1000; i++) { + apr.getData()[31] &= 0x7f; + bpu = new PublicKey(EncType.ECIES_X25519, apr.getData()); + apr = new PrivateKey(EncType.ECIES_X25519, sk.getData()); + sk = dh(apr, bpu); + } + // After 1,000 iterations: + // 684cf59ba83309552800ef566f2f4d3c1c3887c49360e3875f2eb94d99532c51 + System.out.println(DataHelper.toHexString(sk.getData())); + + // After 1,000,000 iterations: + // 7c3911e0ab2586fd864497297e575e6f3bc601c0883c30df5f4dd2d24f665424 + } +****/ } diff -Nru i2p-2.4.0/core/java/src/net/i2p/data/DatabaseEntry.java i2p-2.5.0/core/java/src/net/i2p/data/DatabaseEntry.java --- i2p-2.4.0/core/java/src/net/i2p/data/DatabaseEntry.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/data/DatabaseEntry.java 2024-04-10 02:29:57.000000000 +0000 @@ -74,12 +74,15 @@ * The Hash of the local client that received this LS, * null if the router or unknown. * - * @since 0.9.47 + * @since 0.9.61 */ public Hash getReceivedBy() { return _receivedBy; } + /** + * @since 0.9.61 + */ public void setReceivedBy(Hash receivedBy) { this._receivedBy = receivedBy; } diff -Nru i2p-2.4.0/core/java/src/net/i2p/data/Destination.java i2p-2.5.0/core/java/src/net/i2p/data/Destination.java --- i2p-2.4.0/core/java/src/net/i2p/data/Destination.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/data/Destination.java 2024-04-10 02:29:57.000000000 +0000 @@ -110,7 +110,7 @@ _publicKey = pk; _signingKey = sk; _certificate = c; - _padding = padding; + setPadding(padding); } /** @@ -122,10 +122,7 @@ int cur = offset; System.arraycopy(_publicKey.getData(), 0, target, cur, PublicKey.KEYSIZE_BYTES); cur += PublicKey.KEYSIZE_BYTES; - if (_padding != null) { - System.arraycopy(_padding, 0, target, cur, _padding.length); - cur += _padding.length; - } + cur = writePaddingBytes(target, cur); int spkTrunc = Math.min(SigningPublicKey.KEYSIZE_BYTES, _signingKey.length()); System.arraycopy(_signingKey.getData(), 0, target, cur, spkTrunc); cur += spkTrunc; @@ -166,8 +163,13 @@ if (_certificate.getCertificateType() == Certificate.CERTIFICATE_TYPE_KEY) { // cert data included in keys rv += 7; - if (_padding != null) - rv += _padding.length; + if (_paddingBlocks > 1) { + rv += 32 * _paddingBlocks; + } else { + byte[] padding = getPadding(); + if (padding != null) + rv += padding.length; + } } else { rv += _certificate.size(); } diff -Nru i2p-2.4.0/core/java/src/net/i2p/data/KeysAndCert.java i2p-2.5.0/core/java/src/net/i2p/data/KeysAndCert.java --- i2p-2.4.0/core/java/src/net/i2p/data/KeysAndCert.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/data/KeysAndCert.java 2024-04-10 02:29:57.000000000 +0000 @@ -38,7 +38,15 @@ protected SigningPublicKey _signingKey; protected Certificate _certificate; private Hash __calculatedHash; - protected byte[] _padding; + // if compressed, 32 bytes only + private byte[] _padding; + /** + * If compressed, the padding size / 32, else 0 + * @since 0.9.62 + */ + protected int _paddingBlocks; + + private static final int PAD_COMP_LEN = 32; public Certificate getCertificate() { return _certificate; @@ -116,10 +124,17 @@ } /** + * @return the full padding, expanded if stored compressed * @since 0.9.16 */ public byte[] getPadding() { - return _padding; + if (_paddingBlocks <= 1) + return _padding; + byte[] rv = new byte[PAD_COMP_LEN * _paddingBlocks]; + for (int i = 0; i <_paddingBlocks; i++) { + System.arraycopy(_padding, 0, _paddingBlocks, i * PAD_COMP_LEN, PAD_COMP_LEN); + } + return rv; } /** @@ -130,6 +145,7 @@ if (_padding != null) throw new IllegalStateException(); _padding = padding; + compressPadding(); } /** @@ -156,7 +172,7 @@ _certificate = cert; } } - + /** * @return null if both are null * @since 0.9.42 @@ -172,15 +188,64 @@ return rv; } + /** + * This only does the padding, does not compress the unused 256 byte LS public key. + * Savings is 288 bytes for RI and 64 bytes for LS. + * @since 0.9.62 + */ + private void compressPadding() { + _paddingBlocks = 0; + // > 32 and a mult. of 32 + if (_padding == null || (_padding.length & (2 * PAD_COMP_LEN) - 1) != PAD_COMP_LEN) + return; + int blks = _padding.length / PAD_COMP_LEN; + for (int i = 1; i < blks; i++) { + if (!DataHelper.eq(_padding, 0, _padding, i, PAD_COMP_LEN)) { + return; + } + } + byte[] comp = new byte[PAD_COMP_LEN]; + System.arraycopy(_padding, 0, comp, 0, PAD_COMP_LEN); + _padding = comp; + _paddingBlocks = blks; + } + + /** + * For Destination.writeBytes() + * @return the new offset + * @since 0.9.62 + */ + protected int writePaddingBytes(byte[] target, int off) { + if (_padding == null) + return off; + if (_paddingBlocks > 1) { + for (int i = 0; i < _paddingBlocks; i++) { + System.arraycopy(_padding, 0, target, off, _padding.length); + off += PAD_COMP_LEN; + } + } else { + System.arraycopy(_padding, 0, target, off, _padding.length); + off += _padding.length; + } + return off; + } + public void writeBytes(OutputStream out) throws DataFormatException, IOException { if ((_certificate == null) || (_publicKey == null) || (_signingKey == null)) throw new DataFormatException("Not enough data to format the router identity"); _publicKey.writeBytes(out); - if (_padding != null) - out.write(_padding); - else if (_signingKey.length() < SigningPublicKey.KEYSIZE_BYTES || - _publicKey.length() < PublicKey.KEYSIZE_BYTES) + if (_padding != null) { + if (_paddingBlocks <= 1) { + out.write(_padding); + } else { + for (int i = 0; i <_paddingBlocks; i++) { + out.write(_padding, 0, PAD_COMP_LEN); + } + } + } else if (_signingKey.length() < SigningPublicKey.KEYSIZE_BYTES || + _publicKey.length() < PublicKey.KEYSIZE_BYTES) { throw new DataFormatException("No padding set"); + } _signingKey.writeTruncatedBytes(out); _certificate.writeBytes(out); } @@ -210,17 +275,26 @@ @Override public String toString() { StringBuilder buf = new StringBuilder(256); - buf.append('[').append(getClass().getSimpleName()).append(": "); - buf.append("\n\tHash: ").append(getHash().toBase64()); + String cls = getClass().getSimpleName(); + buf.append('[').append(cls).append(": "); + buf.append("\n\tHash: "); + if (cls.equals("Destination")) + buf.append(getHash().toBase32()); + else + buf.append(getHash().toBase64()); buf.append("\n\tCertificate: ").append(_certificate); if ((_publicKey != null && _publicKey.getType() != EncType.ELGAMAL_2048) || - !(this instanceof Destination)) { + !cls.equals("Destination")) { // router identities only buf.append("\n\tPublicKey: ").append(_publicKey); } buf.append("\n\tSigningPublicKey: ").append(_signingKey); - if (_padding != null) - buf.append("\n\tPadding: ").append(_padding.length).append(" bytes"); + if (_padding != null) { + int len = _padding.length; + if (_paddingBlocks > 1) + len *= _paddingBlocks; + buf.append("\n\tPadding: ").append(len).append(" bytes"); + } buf.append(']'); return buf.toString(); } diff -Nru i2p-2.4.0/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java i2p-2.5.0/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java --- i2p-2.4.0/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/data/i2cp/BandwidthLimitsMessage.java 2024-04-10 02:29:57.000000000 +0000 @@ -46,6 +46,28 @@ data[1] = out; } + /** + * @param in Client inbound limit (KBps) + * @param out Client outbound limit (KBps) + * @param rin Router inbound limit (KBps) + * @param rinb Router inbound burst limit (KBps) + * @param rout Router outbound limit (KBps) + * @param routb Router outbound burst limit (KBps) + * @param sec Router burst time (seconds) + * + * @since 0.9.62 + */ + public BandwidthLimitsMessage(int in, int out, int rin, int rinb, int rout, int routb, int sec) { + this(); + data[0] = in; + data[1] = out; + data[2] = rin; + data[3] = rinb; + data[4] = rout; + data[5] = routb; + data[6] = sec; + } + public int[] getLimits() { return data; } diff -Nru i2p-2.4.0/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java i2p-2.5.0/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java --- i2p-2.4.0/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java 2024-04-10 02:29:57.000000000 +0000 @@ -189,6 +189,13 @@ */ public final static int STATUS_SEND_FAILURE_META_LEASESET = 22; + /** + * Message was attempted to be sent to the same Destination. + * This is a guaranteed failure. + * @since 0.9.62 + */ + public final static int STATUS_SEND_FAILURE_LOOPBACK = 23; + // NOTE: // Add any new status codes to handlers in: // net.i2p.client.impl.MessageState diff -Nru i2p-2.4.0/core/java/src/net/i2p/time/BuildTime.java i2p-2.5.0/core/java/src/net/i2p/time/BuildTime.java --- i2p-2.4.0/core/java/src/net/i2p/time/BuildTime.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/time/BuildTime.java 2024-04-10 02:29:57.000000000 +0000 @@ -34,10 +34,10 @@ private static final long _latestTime; private static final long YEARS_25 = 25L*365*24*60*60*1000; /** update this periodically */ - private static final String EARLIEST = "2023-12-10 12:00:00 UTC"; + private static final String EARLIEST = "2024-03-30 12:00:00 UTC"; // fallback if parse fails ticket #1976 // date -d 202x-xx-xx +%s - private static final long EARLIEST_LONG = 1702166400 * 1000L; + private static final long EARLIEST_LONG = 1711756800 * 1000L; static { // this is the standard format of build.timestamp as set in the top-level build.xml diff -Nru i2p-2.4.0/core/java/src/net/i2p/util/ConvertToHash.java i2p-2.5.0/core/java/src/net/i2p/util/ConvertToHash.java --- i2p-2.4.0/core/java/src/net/i2p/util/ConvertToHash.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/util/ConvertToHash.java 2024-04-10 02:29:57.000000000 +0000 @@ -33,6 +33,10 @@ if (peer == null) return null; String peerLC = peer.toLowerCase(Locale.US); + if (peerLC.endsWith(".i2p.alt")) { + peer = peer.substring(0, peer.length() - 4); + peerLC = peerLC.substring(0, peer.length() - 4); + } // b64 hash if (peer.length() == 44 && !peerLC.endsWith(".i2p")) { byte[] b = Base64.decode(peer); diff -Nru i2p-2.4.0/core/java/src/net/i2p/util/DNSOverHTTPS.java i2p-2.5.0/core/java/src/net/i2p/util/DNSOverHTTPS.java --- i2p-2.4.0/core/java/src/net/i2p/util/DNSOverHTTPS.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/util/DNSOverHTTPS.java 2024-04-10 02:29:57.000000000 +0000 @@ -2,6 +2,7 @@ import java.io.BufferedReader; import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; @@ -535,8 +536,10 @@ Type type = Type.V4_ONLY; boolean error = false; boolean testall = false; + boolean decode = false; + boolean process = false; String url = null; - Getopt g = new Getopt("dnsoverhttps", args, "46fstu:"); + Getopt g = new Getopt("dnsoverhttps", args, "46fstu:dp"); try { int c; while ((c = g.getopt()) != -1) { @@ -549,10 +552,24 @@ type = Type.V6_ONLY; break; + case 'd': + if (decode || process || testall) + error = true; + else + decode = true; + break; + case 'f': type = Type.V4_PREFERRED; break; + case 'p': + if (decode || process || testall) + error = true; + else + process = true; + break; + case 's': type = Type.V6_PREFERRED; break; @@ -613,6 +630,14 @@ clearCaches(); } System.out.println("Test complete: " + pass + " pass, " + fail + " fail"); + } else if (decode) { + decodeStamp(hostname, true); + } else if (process) { + try { + decodeStamps(hostname); + } catch (IOException ioe) { + ioe.printStackTrace(); + } } else { String result = (new DNSOverHTTPS(I2PAppContext.getGlobalContext())).lookup(hostname, type, url); if (result != null) @@ -629,6 +654,124 @@ " [-t] (test all servers)\n" + " [-u 'https://host/dns-query?...&'] (request from this URL only)\n" + " [-4] (IPv4 only) (default)\n" + - " [-6] (IPv6 only)"); + " [-6] (IPv6 only)\n" + + "DNSOverHTTPS -d sdns://... (decode server stamp)\n" + + "DNSOverHTTPS -p doh-resolvers.md (decode all server stamps in file)"); + } + + /** + * Decode sdns:// stamps + * e.g. sdns://AgMAAAAAAAAADjE2My40Ny4xMTcuMTc2oMwQYNOcgym2K2-8fQ1t-TCYabmB5-Y5LVzY-kCPTYDmIEROvWe7g_iAezkh6TiskXi4gr1QqtsRIx8ETPXwjffOEGFkbC5hZGZpbHRlci5uZXQKL2Rucy1xdWVyeQ + * Ref: https://dnscrypt.info/stamps-specifications/ + * + * @return the URL, or null on error or if not a DoH (type 2) stamp + * @since 0.9.62 + */ + private static String decodeStamp(String sdns, boolean log) { + byte[] d = null; + try { + if (!sdns.startsWith("sdns://")) { + if (log) System.out.println("Must start with sdns://"); + return null; + } + sdns = sdns.substring(7); + sdns = sdns.replace("_", "~"); + d = Base64.decode(sdns); + if (d == null) { + if (log) System.out.println("Bad encoding"); + return null; + } + int type = d[0] & 0xff; + // little endian, ignore last 7 bytes + int props = d[1] & 0xff; + int len = d[9] & 0xff; + String addr = "n/a"; + if (len > 0) { + try { + addr = new String(d, 10, len, "ISO-8859-1"); + } catch (IOException ioe) {} + } + String host = ""; + String path = "/"; + if (type == 0x02) { + int off = 10 + len; + int vlen = d[off++] & 0xff; + // skip VLP of hashes + while ((vlen & 0x80) != 0) { + off += vlen & 0x7f; + vlen = d[off++] & 0xff; + } + off += vlen; + len = d[off++] & 0xff; + if (len > 0) { + try { + host = new String(d, off, len, "ISO-8859-1"); + } catch (IOException ioe) {} + off += len; + } + len = d[off++] & 0xff; + if (len > 0) { + try { + path = new String(d, off, len, "ISO-8859-1"); + } catch (IOException ioe) {} + off += len; + } + } + String url = (type == 2 && host.length() > 0) ? "https://" + host + path : null; + if (log) { + if (url != null) + System.out.print(url + ' '); + if (type == 1) + System.out.print("DNSCrypt"); + else if (type == 2) + System.out.print("DoH"); + else if (type == 3) + System.out.print("DNSoverTLS"); + else if (type == 4) + System.out.print("DNSoverQUIC"); + else if (type == 5) + System.out.print("oDoH"); + else if (type == 0x81) + System.out.print("DNSCrypt-relay"); + else if (type == 0x85) + System.out.print("oDoH-relay"); + else + System.out.print("unknown-" + type); + System.out.println(" logs? " + ((props & 0x01) == 0) + + " filters? " + ((props & 0x02) == 0) + + " IP: " + addr); + } + return url; + } catch (IndexOutOfBoundsException ioobe) { + if (log) { + System.out.println("Failed: " + ioobe); + //ioobe.printStackTrace(); + System.out.println(HexDump.dump(d)); + } + return null; + } + } + + /** + * Decode sdns:// stamps found in file + * + * @return the URL, or null on error or if not a DoH (type 2) stamp + * @since 0.9.62 + */ + private static void decodeStamps(String file) throws IOException { + BufferedReader in = null; + try { + FileInputStream fis = new FileInputStream(file); + in = new BufferedReader(new InputStreamReader(fis, "UTF-8")); + String line = null; + while ( (line = in.readLine()) != null) { + line = line.trim(); + if (!line.startsWith("sdns://")) + continue; + decodeStamp(line, true); + } + } finally { + if (in != null) try { in.close(); } catch (IOException ioe) {} + } } } diff -Nru i2p-2.4.0/core/java/src/net/i2p/util/ObjectCounterUnsafe.java i2p-2.5.0/core/java/src/net/i2p/util/ObjectCounterUnsafe.java --- i2p-2.4.0/core/java/src/net/i2p/util/ObjectCounterUnsafe.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/util/ObjectCounterUnsafe.java 2024-04-10 02:29:57.000000000 +0000 @@ -100,7 +100,10 @@ */ private class ObjComparator implements Comparator { public int compare(K l, K r) { - return (map.get(r).c - map.get(l).c); + int rv = map.get(r).c - map.get(l).c; + if (rv != 0) + return rv; + return l.toString().compareTo(r.toString()); } } } diff -Nru i2p-2.4.0/core/java/src/net/i2p/util/SimpleTimer2.java i2p-2.5.0/core/java/src/net/i2p/util/SimpleTimer2.java --- i2p-2.4.0/core/java/src/net/i2p/util/SimpleTimer2.java 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/util/SimpleTimer2.java 2024-04-10 02:29:57.000000000 +0000 @@ -432,6 +432,9 @@ } catch (RuntimeException re) { _log.error("timer error", re); throw re; + } catch (OutOfMemoryError oome) { + _log.error("timer error", oome); + throw new RuntimeException("timer error", oome); } } diff -Nru i2p-2.4.0/core/java/src/net/i2p/util/SyntheticREDQueue.java i2p-2.5.0/core/java/src/net/i2p/util/SyntheticREDQueue.java --- i2p-2.4.0/core/java/src/net/i2p/util/SyntheticREDQueue.java 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/core/java/src/net/i2p/util/SyntheticREDQueue.java 2024-04-10 02:29:57.000000000 +0000 @@ -0,0 +1,374 @@ +package net.i2p.util; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; + +/** + * A "synthetic" queue in that it doesn't actually queue anything. + * Actual queueing is assumed to be "dowstream" of this. + * + * Maintains an average estimated "queue size" assuming a constant output rate + * declared in the constructor. The queue size is measured in bytes. + * + * With offer(), will return true for "accepted" or false for "dropped", + * based on the RED algorithm which uses the current average queue size + * and the offered data size to calculate a drop probability. + * Bandwidth is not directly used in the RED algorithm, except to + * synthetically calculate an average queue size assuming the + * queue is being drained precisely at that rate, byte-by-byte + * (not per-packet). + * + * addSample() unconditionally accepts the packet. + * + * Also maintains a Westwood+ bandwidth estimator. + * The bandwidth and queue size estimates are only updated if the + * packet is "accepted". + * + * The average queue size is calculated in the same manner as the + * bandwidth, with an update every WESTWOOD_RTT_MIN ms. + * Both estimators use + * a first stage anti-aliasing low pass filter based on RTT, + * and the time-varying Westwood filter based on inter-arrival time. + * + * Ref: Random Early Detection Gateways for Congestion Avoidance + * Sally Floyd and Van Jacobson + * + * Ref: TCP Westwood: End-to-End Congestion Control for Wired/Wireless Networks + * Casetti et al + * (Westwood) + * + * Ref: End-to-End Bandwidth Estimation for Congestion Control in Packet Networks + * Grieco and Mascolo + * (Westwood+) + * + * Adapted from: Linux kernel tcp_westwood.c (GPLv2) + * + * @since 0.9.50 adapted from streaming; moved from transport in 0.9.62 + */ +public class SyntheticREDQueue implements BandwidthEstimator { + + private final I2PAppContext _context; + private final Log _log; + + private long _tAck; + // bw_est, bw_ns_est + private float _bKFiltered, _bK_ns_est; + // bk + private int _acked; + + // RED vars + // pkts since last dropped pkt + private int _count = -1; + // smoothed average queue size in bytes + private float _avgQSize; + // last sample queue size in bytes + private float _qSize; + // current interval newly queued in bytes, since the last updateQSize() + private int _newDataSize; + // last time _avgQSize calculated + private long _tQSize; + // min queue size threshold, in bytes, to start dropping + private final int _minth; + // max queue size, in bytes, before dropping everything + private final int _maxth; + // bandwidth in bytes per second, as passed to the constructor. + private final int _bwBps; + // bandwidth in bytes per ms. The queue is drained at this rate. + private final float _bwBpms; + // As in RED paper + private static final float MAXP = 0.02f; + + // As in kernel tcp_westwood.c + private static final int DECAY_FACTOR = 8; + private static final int WESTWOOD_RTT_MIN = 500; + // denominator of time, 1/x seconds of traffic in the queue + private static final int DEFAULT_LOW_THRESHOLD = 13; + // denominator of time, 1/x seconds of traffic in the queue + private static final int DEFAULT_HIGH_THRESHOLD = 3; + + /** + * Default thresholds. + * Min: 100 ms of traffic; max: 500 ms. + * + * @param bwBps the output rate of the queue in Bps + */ + public SyntheticREDQueue(I2PAppContext ctx, int bwBps) { + // the goal is to drop here rather than let the traffic + // get through to UDP-Sender CoDel and get dropped there, + // when we're at the default 80% share or below. + // That CoDel starts dropping when above 100 ms latency for 500 ms. + // let's try the same 100 ms of traffic here. + this(ctx, bwBps, bwBps / DEFAULT_LOW_THRESHOLD, bwBps / DEFAULT_HIGH_THRESHOLD); + } + + /** + * Specified queue size thresholds. + * offer() drops a 1024 byte packet at 2% probability just lower than maxThKB, + * and at 100% probability higher than maxThKB. + * + * @param bwBps the output rate of the queue in Bps + * @param minThB the minimum queue size to start dropping in Bytes + * @param maxThB the queue size to drop everything in Bytes + */ + SyntheticREDQueue(I2PAppContext ctx, int bwBps, int minThB, int maxThB) { + _log = ctx.logManager().getLog(SyntheticREDQueue.class); + _context = ctx; + // assume we're about to send something + _tAck = ctx.clock().now(); + _acked = -1; + _minth = minThB; + _maxth = maxThB; + _bwBps = bwBps; + _bwBpms = bwBps / 1000f; + _tQSize = _tAck; + if (_log.shouldDebug()) + _log.debug("Configured " + bwBps + " BPS, min: " + minThB + " B, max: " + maxThB + " B"); + } + + /** + * + * Nominal bandwidth limit in bytes per second, as passed to the constructor. + * + */ + public int getMaxBandwidth() { + return _bwBps; + } + + /** + * Unconditional, never drop. + * The queue size and bandwidth estimates will be updated. + */ + public void addSample(int size) { + offer(size, 0); + } + + /** + * Should we drop this packet? + * If accepted, the queue size and bandwidth estimates will be updated. + * + * @param size how many bytes to be offered + * @param factor how to adjust the size for the drop probability calculation, + * or 1.0 for standard probability. 0 to prevent dropping. + * Does not affect bandwidth calculations. + * @return true for accepted, false for drop + */ + public boolean offer(int size, float factor) { + long now = _context.clock().now(); + return addSample(size, factor, now); + } + + private synchronized boolean addSample(int acked, float factor, long now) { + if (_acked < 0) { + // first sample + // use time since constructed as the RTT + long deltaT = Math.max(now - _tAck, WESTWOOD_RTT_MIN); + float bkdt = ((float) acked) / deltaT; + _bKFiltered = bkdt; + _bK_ns_est = bkdt; + _acked = 0; + _tAck = now; + _tQSize = now; + _newDataSize = acked; + if (_log.shouldDebug()) + _log.debug("first sample bytes: " + acked + " deltaT: " + deltaT + ' ' + this); + return true; + } else { + // update queue size average if necessary + // the current sample is not included in the calculation + long deltaT = now - _tQSize; + if (deltaT > WESTWOOD_RTT_MIN) + updateQSize(now, deltaT); + if (factor > 0) { + // drop calculation + if (_avgQSize > _maxth) { + if (_log.shouldWarn()) + _log.warn("drop bytes (qsize): " + acked + ' ' + this); + _count = 0; + return false; + } + if (_avgQSize > _minth) { + _count++; + float pb = (acked / 1024f) * factor * MAXP * (_avgQSize - _minth) / (_maxth - _minth); + float pa = pb / (1 - (_count * pb)); + float rand = _context.random().nextFloat(); + if (rand < pa) { + if (_log.shouldWarn()) + _log.warn("drop bytes (prob): " + acked + " factor " + factor + " prob: " + pa + " deltaT: " + deltaT + ' ' + this); + _count = 0; + return false; + } + _count = -1; + } + } + // accepted + _newDataSize += acked; + _acked += acked; + // update bandwidth estimate if necessary + deltaT = now - _tAck; + if (deltaT >= WESTWOOD_RTT_MIN) + computeBWE(now, (int) deltaT); + if (_log.shouldDebug()) + _log.debug("accept bytes: " + acked + " factor " + factor + ' ' + this); + return true; + } + } + + /** + * @return the current bandwidth estimate in bytes/ms. + */ + public float getBandwidthEstimate() { + long now = _context.clock().now(); + // anti-aliasing filter + // As in kernel tcp_westwood.c + // and the Westwood+ paper + synchronized(this) { + long deltaT = now - _tAck; + if (deltaT >= WESTWOOD_RTT_MIN) + return computeBWE(now, (int) deltaT); + return _bKFiltered; + } + } + + /** + * @return the current queue size estimate in bytes. + */ + public float getQueueSizeEstimate() { + long now = _context.clock().now(); + // anti-aliasing filter + // As in kernel tcp_westwood.c + // and the Westwood+ paper + synchronized(this) { + long deltaT = now - _tQSize; + if (deltaT >= WESTWOOD_RTT_MIN) + updateQSize(now, deltaT); + return _avgQSize; + } + } + + private synchronized float computeBWE(final long now, final int rtt) { + if (_acked < 0) + return 0.0f; // nothing ever sampled + updateBK(now, _acked, rtt); + _acked = 0; + return _bKFiltered; + } + + /** + * Optimized version of updateBK with packets == 0 + */ + private void decay() { + _bK_ns_est *= (DECAY_FACTOR - 1) / (float) DECAY_FACTOR; + _bKFiltered = westwood_do_filter(_bKFiltered, _bK_ns_est); + } + + private void decayQueue(int rtt) { + _qSize -= rtt * _bwBpms; + if (_qSize < 1) + _qSize = 0; + _avgQSize = westwood_do_filter(_avgQSize, _qSize); + } + + /** + * Here we insert virtual null samples if necessary as in Westwood, + * And use a very simple EWMA (exponential weighted moving average) + * time-varying filter, as in kernel tcp_westwood.c + * + * @param time the time of the measurement + * @param packets number of bytes acked + * @param rtt current rtt + */ + private void updateBK(long time, int packets, int rtt) { + long deltaT = time - _tAck; + if (rtt < WESTWOOD_RTT_MIN) + rtt = WESTWOOD_RTT_MIN; + if (deltaT > 2 * rtt) { + // Decay with virtual null samples as in the Westwood paper + int numrtts = Math.min((int) ((deltaT / rtt) - 1), 2 * DECAY_FACTOR); + for (int i = 0; i < numrtts; i++) { + if (_bKFiltered <= 0) + break; + decay(); + } + deltaT -= numrtts * rtt; + //if (_log.shouldDebug()) + // _log.debug("decayed " + numrtts + " times, new _bK_ns_est: " + _bK_ns_est + ' ' + this); + } + float bkdt; + if (packets > 0) { + // As in kernel tcp_westwood.c + bkdt = ((float) packets) / deltaT; + _bK_ns_est = westwood_do_filter(_bK_ns_est, bkdt); + _bKFiltered = westwood_do_filter(_bKFiltered, _bK_ns_est); + } else { + bkdt = 0; + decay(); + } + _tAck = time; + //if (_log.shouldDebug()) + // _log.debug("computeBWE bytes: " + packets + " deltaT: " + deltaT + + // " bk/deltaT: " + bkdt + " _bK_ns_est: " + _bK_ns_est + ' ' + this); + } + + + /** + * Here we insert virtual null samples if necessary as in Westwood, + * And use a very simple EWMA (exponential weighted moving average) + * time-varying filter, as in kernel tcp_westwood.c + * + * @param time the time of the measurement + * @param deltaT at least WESTWOOD_RTT_MIN + */ + private void updateQSize(long time, long deltaT) { + long origDT = deltaT; + if (deltaT > 2 * WESTWOOD_RTT_MIN) { + // Decay with virtual null samples as in the Westwood paper + int numrtts = Math.min((int) ((deltaT / WESTWOOD_RTT_MIN) - 1), 2 * DECAY_FACTOR); + for (int i = 0; i < numrtts; i++) { + if (_avgQSize <= 0) + break; + decayQueue(WESTWOOD_RTT_MIN); + } + deltaT -= numrtts * WESTWOOD_RTT_MIN; + //if (_log.shouldDebug()) + // _log.debug("decayed " + numrtts + " times, new _bK_ns_est: " + _bK_ns_est + ' ' + this); + } + int origNDS = _newDataSize; + float newQSize = _newDataSize; + if (_newDataSize > 0) { + newQSize -= deltaT * _bwBpms; + if (newQSize < 1) + newQSize = 0; + _qSize = westwood_do_filter(_qSize, newQSize); + _avgQSize = westwood_do_filter(_avgQSize, _qSize); + _newDataSize = 0; + } else { + decayQueue((int) deltaT); + } + _tQSize = time; + if (_log.shouldDebug()) + _log.debug("computeQS deltaT: " + origDT + + " newData: " + origNDS + + " newQsize: " + newQSize + " qSize: " + _qSize + ' ' + this); + } + + /** + * As in kernel tcp_westwood.c + */ + private static float westwood_do_filter(float a, float b) { + return (((DECAY_FACTOR - 1) * a) + b) / DECAY_FACTOR; + } + + @Override + public synchronized String toString() { + return "SREDQ[" + + //" _bKFiltered " + _bKFiltered + + //" _tAck " + _tAck + "; " + + //" _tQSize " + _tQSize + + ' ' + DataHelper.formatSize2Decimal((long) (_bKFiltered * 1000), false) + + "Bps, avg_qsize " + + DataHelper.formatSize2((long) _avgQSize, false) + + "B, limit " + + DataHelper.formatSize2Decimal((long) _bwBps, false) + + "Bps]"; + } +} diff -Nru i2p-2.4.0/core/locale/messages_cs.po i2p-2.5.0/core/locale/messages_cs.po --- i2p-2.4.0/core/locale/messages_cs.po 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/locale/messages_cs.po 2024-04-10 02:29:57.000000000 +0000 @@ -8,6 +8,7 @@ # Waseihou Watashi , 2019 # zzzi2p, 2019 # Fourdee Foureight, 2021 +# slrslr, 2024 # msgid "" msgstr "" @@ -15,8 +16,8 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-17 18:42+0000\n" "PO-Revision-Date: 2019-12-17 17:16+0000\n" -"Last-Translator: Fourdee Foureight, 2021\n" -"Language-Team: Czech (https://www.transifex.com/otf/teams/12694/cs/)\n" +"Last-Translator: slrslr, 2024\n" +"Language-Team: Czech (https://app.transifex.com/otf/teams/12694/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -131,7 +132,7 @@ #: ../java/src/net/i2p/util/LogRecordFormatter.java:106 msgid "DEBUG" -msgstr "DEBUG" +msgstr "LADĚNÍ" #: ../java/src/net/i2p/util/LogRecordFormatter.java:106 msgid "ERROR" diff -Nru i2p-2.4.0/core/resources/dohservers.txt i2p-2.5.0/core/resources/dohservers.txt --- i2p-2.4.0/core/resources/dohservers.txt 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/core/resources/dohservers.txt 2024-04-10 02:29:57.000000000 +0000 @@ -24,6 +24,8 @@ # # Grouped as in the link above. # +https://unfiltered.adguard-dns.com/dns-query +# https://blitz.ahadns.com/ # https://dns.aa.net.uk/dns-query @@ -32,12 +34,18 @@ #https://dnses.alekberg.net/dns-query # # SSL cert issues -#https://dnsnl.alekberg.net/dns-query +https://dnsnl.alekberg.net/dns-query # SSL cert issues -#https://dnsse.alekberg.net/dns-query +https://dnsse.alekberg.net/dns-query # down, see https://www.armadillodns.net/ for status #https://doh.armadillodns.net/dns-query # +https://dns.artikel10.org/dns-query +# +https://secure.avastdns.com/dns-query +# +https://awan.ftp.sh/unblocked +# https://doh.42l.fr/dns-query # https://doh-ch.blahdns.com/dns-query @@ -60,8 +68,55 @@ # https://freedns.controld.com/p0 # +https://ns.data.haus/dns-query +# https://dns.digitale-gesellschaft.ch/dns-query # +https://dns.digitalsize.net/dns-query +# +https://open.dns0.eu/ +# +https://doh.dns4all.eu/dns-query +# +# dnscry.pt +# commented out ones have SNI issues +https://abe01.dnscry.pt/dns-query +#https://ams01.dnscry.pt/dns-query +https://ams02.dnscry.pt/dns-query +https://atl01.dnscry.pt/dns-query +https://ord01.dnscry.pt/dns-query +https://coe01.dnscry.pt/dns-query +https://cvt01.dnscry.pt/dns-query +https://dfw01.dnscry.pt/dns-query +https://dtw01.dnscry.pt/dns-query +https://rdu01.dnscry.pt/dns-query +https://dus01.dnscry.pt/dns-query +https://fra01.dnscry.pt/dns-query +#https://hkg01.dnscry.pt/dns-query +https://jnb01.dnscry.pt/dns-query +https://las01.dnscry.pt/dns-query +https://llk01.dnscry.pt/dns-query +https://lon01.dnscry.pt/dns-query +https://lax01.dnscry.pt/dns-query +#https://lax02.dnscry.pt/dns-query +https://mia01.dnscry.pt/dns-query +https://muc01.dnscry.pt/dns-query +https://naw01.dnscry.pt/dns-query +https://nyc01.dnscry.pt/dns-query +https://phl01.dnscry.pt/dns-query +https://phx01.dnscry.pt/dns-query +https://pdx01.dnscry.pt/dns-query +https://slc01.dnscry.pt/dns-query +https://trf01.dnscry.pt/dns-query +#https://sin01.dnscry.pt/dns-query +https://sof01.dnscry.pt/dns-query +https://geg01.dnscry.pt/dns-query +https://sto01.dnscry.pt/dns-query +https://tll01.dnscry.pt/dns-query +https://tpa01.dnscry.pt/dns-query +https://zal01.dnscry.pt/dns-query +https://waw02.dnscry.pt/dns-query +# https://dnsforge.de/dns-query # # SSL issues @@ -69,16 +124,17 @@ # https://doh.li/dns-query # -https://doh.asia.dnswarden.com/uncensored -https://doh.eu.dnswarden.com/uncensored -https://doh.us.dnswarden.com/uncensored +https://dns.dnswarden.com/uncensored +# +# SSL issues +#https://rdns.faelix.net/ # -https://rdns.faelix.net/ +https://ns0.fdn.fr/dns-query +https://ns1.fdn.fr/dns-query # https://doh.ffmuc.net/dns-query # -# SSL issues -#https://doh.applied-privacy.net/query +https://doh.applied-privacy.net/query # https://dns.hostux.net/dns-query # @@ -87,14 +143,19 @@ # not found #https://jcdns.fun/dns-query # +https://dns.kescher.at/dns-query +# https://doh.tiar.app/dns-query https://doh.tiarap.org/dns-query # +https://doh.lacontrevoie.fr/dns-query +# # down -https://us1.dns.lavate.ch/dns-query +#https://us1.dns.lavate.ch/dns-query https://eu1.dns.lavate.ch/dns-query # -https://resolver-eu.lelux.fi/dns-query +# down +#https://resolver-eu.lelux.fi/dns-query # https://doh.libredns.gr/dns-query # @@ -106,11 +167,13 @@ # https://basic.rethinkdns.com/dns-query # -https://fi.doh.dns.snopyta.org/dns-query +# not found +#https://fi.doh.dns.snopyta.org/dns-query # https://dns.twnic.tw/dns-query # -https://dns.wevpn.com/dns-query +# not found +#https://dns.wevpn.com/dns-query # # not found #https://dns.wugui.zone/dns-query @@ -121,14 +184,17 @@ # https://ibksturm.synology.me/dns-query # -# not found -#https://ibuki.cgnat.net/dns-query +https://ibuki.cgnat.net/dns-query # https://doh-2.seby.io/dns-query -https://doh.seby.io:8443/dns-query +#https://doh.seby.io:8443/dns-query # https://freedom.mydns.network/dns-query # +https://wikimedia-dns.org/dns-query +# +https://yarp.lefolgoc.net/dns-query +# # ############################################# # @@ -141,8 +207,10 @@ # Excludes logging, filtering, experimental # Failures in testing are commented out below. # -# bortzmayer -https://doh.bortzmeyer.fr/ +# not found +#https://doh.bortzmeyer.fr/ +# +https://dns.brahma.world/dns-query # # cz.nic # experimental @@ -157,8 +225,8 @@ # SSL issues #https://dns1.dnscrypt.ca/dns-query #https://dns2.dnscrypt.ca/dns-query -https://doh.dnscrypt.uk/dns-query -https://v.dnscrypt.uk/dns-query +#https://doh.dnscrypt.uk/dns-query +#https://v.dnscrypt.uk/dns-query # dnshome-doh https://dns.dnshome.de/dns-query # doh-crypto-sx @@ -172,14 +240,17 @@ #https://doh.tiar.app/dns-query # # meganerd-doh -# 404 -#https://chewbacca.meganerd.nl/dns-query +https://snoke.meganerd.nl/dns-query # nextdns https://dns.nextdns.io/dns-query +# +https://dns.paesa.es/dns-query # powerdns # down #https://doh.powerdns.org/dns-query # +https://sky.rethinkdns.com/dns-query +# # rumpelsepp.org # 404 #https://rumpelsepp.org/dns-query @@ -192,6 +263,9 @@ # # # Others: +# mullvad +# no response, unknown reason, works in browser +#https://doh.mullvad.net/dns-query # njalla https://dns.njal.la/dns-query # diff -Nru i2p-2.4.0/debian/changelog i2p-2.5.0/debian/changelog --- i2p-2.4.0/debian/changelog 2023-12-20 19:28:05.000000000 +0000 +++ i2p-2.5.0/debian/changelog 2024-04-10 02:09:03.000000000 +0000 @@ -1,3 +1,9 @@ +i2p (2.5.0-1~ubuntu1) focal; urgency=medium + + * New upstream version 2.5.0 + + -- idk Tue, 09 Apr 2024 22:09:03 -0400 + i2p (2.4.0-2~ubuntu1) focal; urgency=medium * New upstream version 2.4.0 @@ -1132,7 +1138,7 @@ i2p (0.8.5-2) stable; urgency=low - * Change debconf priority to medium. + * Change debconf priority to medium. * RUN_DAEMON defaults to false. Earlier versions defaulted to true. Since the priority is changing, this should as well. * Split jbigi into its own source package @@ -1161,12 +1167,12 @@ i2p (0.8.4-2) stable; urgency=low - * Stop including /usr/share/i2p/lib/jbigi.jar. + * Stop including /usr/share/i2p/lib/jbigi.jar. * Compile a dynamic jbigi and create a new package, libjbigi-jni. Since I can't get jcpuid to compile I take this library from jbigi.jar. Unfortunately it was not compiled with -fPIC, causing lintian to complain. - Additionally it is a 32bit compile, forcing libc-i386 to be installed on - amd64 boxes. + Additionally it is a 32bit compile, forcing libc-i386 to be installed on + amd64 boxes. * Add dependency on libc-i386 because of jcpuid and a build-dep on unzip for the same reason. * Don't display errors generated from chowning files that don't exist. diff -Nru i2p-2.4.0/debian/copyright i2p-2.5.0/debian/copyright --- i2p-2.4.0/debian/copyright 2023-12-20 19:28:05.000000000 +0000 +++ i2p-2.5.0/debian/copyright 2024-04-10 02:09:03.000000000 +0000 @@ -278,7 +278,7 @@ See licenses/LICENSE-Apache2.0.txt See licenses/LICENSE-ECLIPSE-1.0.html - RRD4J 3.8 (jrobin.jar): + RRD4J 3.9 (jrobin.jar): Copyright (c) 2001-2005 Sasa Markovic and Ciaran Treanor. Copyright (c) 2011 The OpenNMS Group, Inc. Copyright 2011 The RRD4J Authors. @@ -327,6 +327,10 @@ See licenses/LICENSE-NDT.txt Notice: I2P has changed specified portions of the Software, including the package edu.internet2.ndt. + Router Console Iframe-resizer 4.3.9: + Copyright (c) 2013-2023 David J. Bradshaw + See licenses/LICENSE-Iframe-resizer.txt + SAM (sam.jar): Public domain. @@ -343,6 +347,13 @@ GPLv2 (or any later version) See licenses/LICENSE-GPLv2.txt + SusiMail Pagedown: + Original Markdown Copyright (c) 2004-2005 John Gruber + Original Showdown code copyright (c) 2007 John Fraser + Modifications and bugfixes (c) 2009 Dana Robinson + Modifications and bugfixes (c) 2009-2014 Stack Exchange Inc. + See licenses/LICENSE-pagedown.txt + Systray (systray.jar): Public domain. @@ -362,9 +373,9 @@ Admin Manager: Public domain - Gradle wrapper 5.2.1: + Gradle wrapper 8.5: (not included in most distribution packages) - Copyright (c) 2017 the original author or authors. + Copyright (c) 2023 the original author or authors. See licenses/LICENSE-Apache2.0.txt diff -Nru i2p-2.4.0/debian/patches/0001-path-substitution.patch i2p-2.5.0/debian/patches/0001-path-substitution.patch --- i2p-2.4.0/debian/patches/0001-path-substitution.patch 2023-12-20 19:28:05.000000000 +0000 +++ i2p-2.5.0/debian/patches/0001-path-substitution.patch 2024-04-10 02:09:03.000000000 +0000 @@ -531,7 +531,7 @@ =================================================================== --- a/installer/resources/locale/po/messages_ru.po +++ b/installer/resources/locale/po/messages_ru.po -@@ -193,13 +193,13 @@ msgid "Request a Java thread dump if running." +@@ -194,13 +194,13 @@ msgid "Request a Java thread dump if running." msgstr "Запросить дамп нитей Java, если запущено." #: ../i2prouter:1874 @@ -641,7 +641,7 @@ =================================================================== --- a/installer/resources/locale/po/messages_ja.po +++ b/installer/resources/locale/po/messages_ja.po -@@ -187,13 +187,13 @@ msgid "Request a Java thread dump if run +@@ -188,13 +188,13 @@ msgid "Request a Java thread dump if run msgstr "起動中の場合、 Java スレッドダンプを要求" #: ../i2prouter:1874 diff -Nru i2p-2.4.0/debian/patches/0002-jetty-compatibility.patch i2p-2.5.0/debian/patches/0002-jetty-compatibility.patch --- i2p-2.4.0/debian/patches/0002-jetty-compatibility.patch 2023-12-20 19:28:05.000000000 +0000 +++ i2p-2.5.0/debian/patches/0002-jetty-compatibility.patch 2024-04-10 02:09:03.000000000 +0000 @@ -25,7 +25,7 @@ Resource resource, --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java -@@ -48,6 +49,7 @@ +@@ -49,6 +50,7 @@ import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.security.ConstraintMapping; import org.eclipse.jetty.security.ConstraintSecurityHandler; @@ -33,7 +33,7 @@ import org.eclipse.jetty.security.authentication.DigestAuthenticator; import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.ConnectionFactory; -@@ -986,6 +988,8 @@ +@@ -987,6 +989,8 @@ } else { HashLoginService realm = new CustomHashLoginService(JETTY_REALM, context.getContextPath(), ctx.logManager().getLog(RouterConsoleRunner.class)); @@ -42,7 +42,7 @@ sec.setLoginService(realm); sec.setAuthenticator(authenticator); String[] role = new String[] {JETTY_ROLE}; -@@ -993,7 +997,7 @@ +@@ -994,7 +998,7 @@ String user = e.getKey(); String pw = e.getValue(); Credential cred = Credential.getCredential(MD5_CREDENTIAL_TYPE + pw); @@ -51,7 +51,7 @@ Constraint constraint = new Constraint(user, JETTY_ROLE); constraint.setAuthenticate(true); ConstraintMapping cm = new ConstraintMapping(); -@@ -1013,7 +1017,7 @@ +@@ -1014,7 +1018,7 @@ try { // each char truncated to 8 bytes String user2 = new String(b2, "ISO-8859-1"); @@ -60,7 +60,7 @@ constraint = new Constraint(user2, JETTY_ROLE); constraint.setAuthenticate(true); cm = new ConstraintMapping(); -@@ -1024,7 +1028,7 @@ +@@ -1025,7 +1029,7 @@ // each UTF-8 byte as a char // this is what chrome does String user3 = new String(b1, "ISO-8859-1"); diff -Nru i2p-2.4.0/debian/po/ja.po i2p-2.5.0/debian/po/ja.po --- i2p-2.4.0/debian/po/ja.po 2023-12-20 19:28:05.000000000 +0000 +++ i2p-2.5.0/debian/po/ja.po 2024-04-10 02:09:03.000000000 +0000 @@ -4,7 +4,7 @@ # # Translators: # kami , 2015 -# daingewuvzeevisiddfddd, 2022 +# daingewuvzeevisiddfddd, 2022,2024 # タカハシ, 2014 # Masayuki Hatta , 2018 msgid "" @@ -13,8 +13,8 @@ "Report-Msgid-Bugs-To: i2p@packages.debian.org\n" "POT-Creation-Date: 2017-11-12 14:01+0000\n" "PO-Revision-Date: 2011-10-03 21:48+0000\n" -"Last-Translator: daingewuvzeevisiddfddd, 2022\n" -"Language-Team: Japanese (http://www.transifex.com/otf/I2P/language/ja/)\n" +"Last-Translator: daingewuvzeevisiddfddd, 2022,2024\n" +"Language-Team: Japanese (http://app.transifex.com/otf/I2P/language/ja/)\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -87,8 +87,8 @@ "High bandwidth routers, as well as routers with a lot of active torrents / " "plugins, may need to have this value increased." msgstr "" -"帯域幅の多いルーター、あるいはたくさんのアクティブな torrent / プラグインがあ" -"るルーターも、この値を増やす必要がある場合があります。" +"帯域幅の多いルーター、あるいはたくさんの動作しているtorrentやプラグインがある" +"ルーターも、この値を増やす必要がある場合があります。" #. Type: boolean #. Description diff -Nru i2p-2.4.0/history.txt i2p-2.5.0/history.txt --- i2p-2.4.0/history.txt 2023-12-21 01:43:32.000000000 +0000 +++ i2p-2.5.0/history.txt 2024-04-10 02:29:58.000000000 +0000 @@ -1,3 +1,149 @@ +2024-04-08 idk + * Router: + - Release I2P 2.5.0, API version 0.9.62 + +2024-04-05 zzz + * Susimail: + - Fix truncation of quoted-printable encoded attachments + - Fix loading mail bodies in non-inbox/drafts folders + * Translation updates + +2024-04-04 zzz + * Susimail: + - Only parse mail headers once + - Fix initialization of textarea height + - Fix 413 error forwarding email with attachments + - Fix forwarding email with attachments lacking specified encoding + - Fix forwarding html-only email + +2024-03-26 zzz + * NetDB: Store message handling changes + * Transports: Incoming connection checks + * Tunnels: + - Refactor message distribution + - Tunnel test changes + +2024-03-23 zzz + * i2psnark: Preserve private=0 in torrent files + +2024-03-20 zzz + * New translations for some subsystems: Japanese, Hungarian, Slovenian, Estonian + +2024-03-09 zzz + * i2psnark: Fix buttons on torrent details page (JRE 21) + +2024-03-03 zzz + * i2psnark: + - Fix DnD js syntax error + - Add torrent section and config page CSS fixes (non-default themes) + +2024-03-01 zzz + * SSU2: Cancel peer test if Bob picked a Charlie without a B cap + +2024-02-29 zzz + * SSU2: Treat IPv6 peer test result as unknown if no response from firewalled Charlie + +2024-02-26 zzz + * Console: Use same color for visted links (dark theme) + * i2psnark: + - Don't allow changing data dir when connected + - Delete all torrents except magnets when changing data dir + +2024-02-25 zzz + * SSU2: + - Increase min version for peer test + - Update last rcv time when receiving data, not acks + +2024-02-14 zzz + * i2ptunnel: Implement server-side persistence (Gitlab MR !181) + +2024-02-02 zzz + * i2ptunnel: Implement client-side persistence (Gitlab MR !176) + * susimail: Add support for HTML email (Gitlab MR !177) + +2024-01-31 zzz + * CLI: Add sdns stamp decoder + +2024-01-30 zzz + * Naming: Add .i2p.alt support + * Util: DoH server list update + +2024-01-29 zzz + * Crypto: + - More efficient enum lookup by code + - Verify RSA sigs after signing + * i2psnark: Sanitize unicode LTR/RTL control chars + * Util: Add .alt to selfsigned cert alt names + +2024-01-28 zzz + * Build: Update gradlew to 8.5 (Gitlab MR !180) + +2024-01-27 zzz + * Console: Update RRD4J to 3.9 (Gitlab MR !178) + * Transport: Remove SSU1 code from EstablishmentManager (Gitlab MR !179) + +2024-01-23 zzz + * i2ptunnel, susidns: Fix IDN decoding for newer codepoints + +2024-01-22 zzz + * i2psnark: Add drag-and-drop for torrent files and links (Gitlab MR !165) + * susimail: Add drag-and-drop for attachments (Gitlab MR !171) + +2024-01-15 zzz + * I2CP: Prevent loopback messages to same session (i2pd Github #2005, Gitlab MR !173) + * i2psnark: Bandwidth limiter improvements (Gitlab MR !164) + +2024-01-14 zzz + * Data: Store compressed RI and LS in compressed form (Gitlab MR !171) + * i2ptunnel: + - Add utilities for keepalive (WIP) (Gitlab MR !166) + - Don't send HTML errors on CONNECT sockets (Gitlab MR !175) + * Transport: Remove SSU1 code from PacketHandler (Gitlab MR !174) + +2024-01-10 zzz + * Console: Fix iframe size issues (Gitlab MR !160) + * Susimail: Add markdown js for plain text content (Gitlab MR !161) + * SSU2: Delay sending relay tag (Gitlab MR !169) + +2024-01-08 zzz + * Transport: Ignore SSU1 enable config + +2024-01-02 zzz + * Console: News fetch improvements (Gitlab MR !163) + * Router: Enforce max RI size (Gitlab MR !168) + * Susimail: Speed up initial loading (Gitlab MR !162) + * Tunnels: Peer selection adjustments (Gitlab MR !167) + +2023-12-23 zzz + * Susimail: + - Add dropdown on login page for multiple accounts + - Add logo to footer + - Add regex util (WIP) + - Auto-resize compose box + - Extract multipart type and content id (WIP) + - Logging enhancements on file read failures + - Put error messages at the top + - Show size and thumbnail of draft attachments + - Show user name on folder view + * Util: Move SyntheticREDQueue from router to core + +2023-12-22 zzz + * Blockfile: Fix bug in unused getNames() + * Console: Fix encoding issues in persisted news + * I2CP: Add router rates to bandwidth limits message + * i2psnark: Adjust max peers for small torrents + * i2ptunnel: + - Change return code for host-not-in-addressbook to 502 + - Log correct server host/port on error when there are multiple targets configured + * NTCP2: Add key validity check + * Plugins: Don't auto-update in test mode + * Ratchet: Use correct method for Elg2 keygen + * Susimail: Include attachment sizes in displayed draft size + * Transports: Don't flood huge RIs + * Util: + - Catch OOM in timer + - Add 2nd order comparison in ObjectCounterUnsafe sort + 2023-12-18 2.4.0 (API 0.9.61) released 2023-12-15 idk @@ -202,7 +348,7 @@ 2023-06-28 idk * Cache stores of multihomed leaseSets when stored from multihome peers, and if our local leaseSet is not in the keyspace return the multihome instead - * When updating a leaseSet because recieving it as published always make a + * When updating a leaseSet because receiving it as published always make a complete copy of the leaseSet before merging the flags. * Rate-Limit lookups diff -Nru i2p-2.4.0/installer/resources/blocklist.txt i2p-2.5.0/installer/resources/blocklist.txt --- i2p-2.4.0/installer/resources/blocklist.txt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/blocklist.txt 2024-04-10 02:29:58.000000000 +0000 @@ -157,6 +157,11 @@ Tunnels:o-atVIIK0N2Eu6r2Nq42cAVqlK6wJGrXqU0Ps3x0HmY= Tunnels:2C-fFbGjOJks1mDYxlQ~~M3Q-tX9Dx~tyAUHPzfct~E= NetDB:Qc5rvLavMYNhzQBQfBgFkZbesEvGW~3nz1ZwllR1MoM= +IPs:yQN8Qt0K0yi89DrMaMa0LhHpQkxj2X3zS0SATe5QAXI= +IPs:F~UzS1mTN3XYlnOfidMBv5Z4lHI7dsCZ8N5mxpyc-OU= +IPs:6NMfknVMawT~baK0VanEkbXvO2hJCLJ5rreieysRrNE= +IPs:MogB-V71uOsLBu5z9gW5sa3zzUfI5GD43selaYiOy4U= +IPs:~SN8k6Hid107ighTnxRSiwTwwPMjEpPbDEyEY--zD~U= 0bLUiXtgYCzAy3533C~wjaUxUkH63JGSRlx2huH-6Bo= 3~ZOYyQFJAJXxuynetnoijOFjliGGmN9kZ5BkiSupy0= 4V3EsOGTWrIXJDNaGpOLZrnSGWgSxwgZ7Tsxb0txFtE= diff -Nru i2p-2.4.0/installer/resources/certificates/news/echelon_at_mail.i2p.crt i2p-2.5.0/installer/resources/certificates/news/echelon_at_mail.i2p.crt --- i2p-2.4.0/installer/resources/certificates/news/echelon_at_mail.i2p.crt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/news/echelon_at_mail.i2p.crt 2024-04-10 02:29:58.000000000 +0000 @@ -1,32 +1,34 @@ -----BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIESg3kkzANBgkqhkiG9w0BAQ0FADBwMQswCQYDVQQGEwJY -WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt -b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEZMBcGA1UEAwwQZWNoZWxvbkBtYWls -LmkycDAeFw0xNDA3MzExNjQ3MDJaFw0yNDA3MzAxNjQ3MDJaMHAxCzAJBgNVBAYT -AlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBBbm9u -eW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRkwFwYDVQQDDBBlY2hlbG9uQG1h -aWwuaTJwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmcEgLwwhzLNe -XLOMSrhwB8hWpOhfjo4s6S/wjBtjjUc8nI3D0hSn3HY26p0rvcvNEWexPUpPULmC -exGkU463nu7PiFONiORI1eJAiUFHibRiaA7Wboyo38pO73KirwjG07Y+Ua0jp+HS -+4FQ/I/9H/bPplReTOU/6hmRbgQ69U8nE68HzZHQxP68yVJ2rPHSXMPhF4R1h0G1 -1mCAT+TgTsnwHNGF77XHJnY4/M4e2cgycEZjZow36C3t2mNDVkMgF19QQeb9WmLR -zREn3nq9BJqHpUkn9yWw0kKXTZSds+7UxESfzf3BzK0+hky2fh5H+qbYAo2lz4yj -81MXTAu+4RRkg4DBLlF+2dkclhwQLxxzvkRC6tPkn5i33Yltg7EfzA9IoQ05potJ -I+iOcF+aStfFgFj9u3B5UkcF4P0cH1QD3c6BK4hIezQYqRoPly1gHqg+XdwjG/dr -4as7HA9FTz3p2E8nClpIC1x3hfgwAdfd29aeBxO1WW/z99iMF7TBAF+u5T86XEW1 -WpknqCbTli36yJ8a5fPWxZHrryBRJT5yLxejjFeadtutBSwljiVFq+Y38VqwFivq -VLiBt7IxAsZ8iilgfnnnAvBH6chWfSKb4H7kB4TJvDiV96QmmvoEaWYNHZozMhyK -tO3b5w+xqbJXyCLA3Q75jD0km76hjcECAwEAAaMhMB8wHQYDVR0OBBYEFAHQcAam -QRS/EUhuCSr9pB4Ux0rYMA0GCSqGSIb3DQEBDQUAA4ICAQBq1+1QLmgLAjrTg3tb -4XKgAVICQRoBDNUEobQg3pYeUX9eFNya2RxNljuvYpwT80ilGMPOXcjddmr5ngiK -dbGRcuuJk9MPEHtPaPT3+JJlvKQ3B3g2wva2Wz2OAyLZUGQs389K4nTbwh4QF0n2 -aHFL8BHiD62hiKnCoNaW4ZovUNNvOxo9lMyAiaFU2gqQNcdad8hP9EAllbvbxDx9 -Tjww2UbwQUIHS9rna4Tlu+f0hDXTWIutc2A51W2fJCb7L3+lYO7Wv55ND/WtryLZ -XpMp27+MpuEnN3kQmz/l9R0hIJsWc/x9GQkjm5wEaIZEyTtenqwRKGmVCtAj0Pgv -jn1L3/lWmrNq+OZHb/QeyfKtA3nXfQKVmT98ewQiK/S5i1xIAXCJPytOD887b/o1 -cdurTmCiZMwgiQ+HLJqCg3MDa5mvKqRkRdZXfE6aQWEcSbpAhpV15R17q7L+Fg0W -shLSNucxyGNU8PjiC/nOmqfqUiPiMltJjPmscxBLim8foyxjakC4+6N6m+Jzgznj -PocBehFAfKYj66XEwzIBN7Z2uuXoYH9YptkocFjTzvchcryVulDWZ4FWxreUMhpM -4oyjjhSB4tB9clXlwMqg577q3D6Ms0zLTqsztyPN3zr6jGev3jpVq7Q1GOlciHPv -JNJOWTH/Vas1W6XlwGcOOAARTQ== +MIIF0jCCA7qgAwIBAgIJNOZDJGZRO4giMA0GCSqGSIb3DQEBDQUAMHAxCzAJBgNV +BAYTAlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBB +bm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRkwFwYDVQQDDBBlY2hlbG9u +QG1haWwuaTJwMB4XDTI0MDQwNjExMzEzMVoXDTM0MDQwNzExMzEzMVowcDELMAkG +A1UEBhMCWFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMVSTJQ +IEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxGTAXBgNVBAMMEGVjaGVs +b25AbWFpbC5pMnAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZwSAv +DCHMs15cs4xKuHAHyFak6F+OjizpL/CMG2ONRzycjcPSFKfcdjbqnSu9y80RZ7E9 +Sk9QuYJ7EaRTjree7s+IU42I5EjV4kCJQUeJtGJoDtZujKjfyk7vcqKvCMbTtj5R +rSOn4dL7gVD8j/0f9s+mVF5M5T/qGZFuBDr1TycTrwfNkdDE/rzJUnas8dJcw+EX +hHWHQbXWYIBP5OBOyfAc0YXvtccmdjj8zh7ZyDJwRmNmjDfoLe3aY0NWQyAXX1BB +5v1aYtHNESfeer0EmoelSSf3JbDSQpdNlJ2z7tTERJ/N/cHMrT6GTLZ+Hkf6ptgC +jaXPjKPzUxdMC77hFGSDgMEuUX7Z2RyWHBAvHHO+RELq0+SfmLfdiW2DsR/MD0ih +DTmmi0kj6I5wX5pK18WAWP27cHlSRwXg/RwfVAPdzoEriEh7NBipGg+XLWAeqD5d +3CMb92vhqzscD0VPPenYTycKWkgLXHeF+DAB193b1p4HE7VZb/P32IwXtMEAX67l +PzpcRbVamSeoJtOWLfrInxrl89bFkeuvIFElPnIvF6OMV5p2260FLCWOJUWr5jfx +WrAWK+pUuIG3sjECxnyKKWB+eecC8EfpyFZ9IpvgfuQHhMm8OJX3pCaa+gRpZg0d +mjMyHIq07dvnD7GpslfIIsDdDvmMPSSbvqGNwQIDAQABo28wbTAdBgNVHQ4EFgQU +xk2AHLpxIb1hJx4zO1hF1WfYxTswHwYDVR0jBBgwFoAUxk2AHLpxIb1hJx4zO1hF +1WfYxTswDgYDVR0PAQH/BAQDAgGmMBsGA1UdEQQUMBKBEGVjaGVsb25AbWFpbC5p +MnAwDQYJKoZIhvcNAQENBQADggIBABO0NVNzUq0LWOJoVw34rOTWa5YeZAoLDIjw +mA0CDM+krKh+4WhxW8KM/e6S6eHDWJxpLD5FGj/T/ZjF8soPnSnthgMY+i0NtnaK +kQRl0IE4h4uG/QL+jzRW69hP6ZAJhqS6HEV+xp9eRa7tsetsEfas9WCrvv6h/W6r +rlkhBS+6ExnR5HqQyy0G+/25vVcO3Cb96Mn7JrkiIY33mgEMxCtK2vBn7ggfUouv +J00LzNZT7UJ7y/D2/Tb6NfC6RDxlGVMoKZyV0Szoer0iXaoeEve4pFVc7J2fkkBq +3rmK7+3zMfZRs069LyZFENq77VihwzgeaaVhZhIol6/atsSFUW15ynS6is0KjZbz +BeZeweVg66TexqwyqV17jXobXNEwhOh5b9uAROWfVukvF4zoF9rv+IIj164p2AhA +UWfYEalJFH4JdG4xQ+7kAVM1IIN0LilMRT0hdkZhs6s9Ae3U5yfDJ7EXNZxOa52Z +Q6pqgw3K0IptIzQiqIRq2nJsx0SllzRkyIKnkn7K+WaMs0oQRnUDtK2AdgNW/Yqe +Q83pOdkZs+ZikSWB7nP6uOdigJjXseAvYVJ7vPo0AuJZHMat+cdEPpcx8skbZYkK +Ck0Xt+L7Yda21E92nMy/l61MmL+Kxo2PMl582NHLJ6UosIv4IR1vwzTZwOvmul2z +yP2zmHDf -----END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/certificates/plugin/zzz-plugin_at_mail.i2p.crt i2p-2.5.0/installer/resources/certificates/plugin/zzz-plugin_at_mail.i2p.crt --- i2p-2.4.0/installer/resources/certificates/plugin/zzz-plugin_at_mail.i2p.crt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/plugin/zzz-plugin_at_mail.i2p.crt 2024-04-10 02:29:58.000000000 +0000 @@ -1,32 +1,34 @@ -----BEGIN CERTIFICATE----- -MIIFhTCCA22gAwIBAgIERiD+VDANBgkqhkiG9w0BAQ0FADBzMQswCQYDVQQGEwJY -WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt -b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEcMBoGA1UEAwwTenp6LXBsdWdpbkBt -YWlsLmkycDAeFw0xNDA4MDcyMTA0NDlaFw0yNDA4MDYyMTA0NDlaMHMxCzAJBgNV +MIIF2zCCA8OgAwIBAgIJXXOkhViIkDTPMA0GCSqGSIb3DQEBDQUAMHMxCzAJBgNV BAYTAlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBB bm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRwwGgYDVQQDDBN6enotcGx1 -Z2luQG1haWwuaTJwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzWRY -ZFGmPO3lOfD9vu5LFxmZchqEiT+QYyTU1FllIlppgb3dkAo7Tn8R1QcwyKkoJkYI -oFdUCYwUOhUmbKv5j6oBTmLlav/MQi2nM7dHfBVP3ubzZP7Z/zKGQUf1Ze7136Yh -l6Lfbl/wN3O7IIGs6NksSiq/hnDrAmZAQwfc7/dahPh4gxPRuK9Bg7NFPJyQ07vJ -FQC1I2uWb49WL/rzJnR20fSeJa/LJ5JnKnWG6RjbTKHp6wN2S0d389BkJvUCEmeT -o5JdV1xcrB4GY/z0gfmS8haZYeW3ySPKuaEOpZGrwLFaKnZGITegMrnVTTZD8RAk -SqvJC8+X8pdFN41I9tkwAK/FTtrNxVubPLfvzgQ2Z8WFtLPFWkbEYn58AnKWj59X -Zs1delvTF1vJHYSY6ZMmymnOBWmRSofXpByBzBCXVKMWZ8ah7BJKLkzGd2/XYeY/ -mIRm+SghTjojUg2F3G26W/z67HoSWMunwor0ur2A/r8HMKWqhSzNdEOx9zzX7ihf -W3tUbI/E7BDWLs0sd6gmGMSYbxkrB2pM21X9UmpthDazo6CTC+nrNYRjSpDisOiV -gnu1fPmbfoa61pRoWAQOHVN+D5mDKeJW+WConOxRKuLY/aymeXwSKBcLLkYHasc/ -ooJwSofj/SYooGR9aVJO2oEKYbpLu4fFduHIrrMCAwEAAaMhMB8wHQYDVR0OBBYE -FADW2hreviSWGPa+xSDnNpUO+ih2MA0GCSqGSIb3DQEBDQUAA4ICAQBePI57drix -BLUXhB4rAeyCUaA3hp40gzz5oQKijQF8Z+aP3j74NuCUMuPF0f62mPdq4Yrm/QM4 -bdKTHtoOuvQyEtnsfRj241CppdzTeVtCMRcBmDUeejE0BjRYtmHOpV7Ylyf3olX+ -IddPrkKshN+zy0TiNhwWrKG44C2JkmSqFQRicCm34+0dxINBUqv/+srmriBFesdg -74Z9EPpXRA1xpB0ud4GTq5NQDPby9mm6tXMrziomLtuG66emW7dtisQcmn59Te6E -8OSZrbRzTOshsyqsbyMXnEfLUMRu94WHQ+yJTQSXwAKeXZGfSuTMiiyGJ3bSEDwy -dCA7RW9QF58a6wVlW5s8xLZ+JxVx8QkyCkCsu7mFB6XJh3t8YZTMUC1EwH0Zy8y0 -JQeAw9A+I/XILoRhtOISM0vPrw9/TrKkKg8FGPAIE+fSTt6y7X5BWBqIE38u0wi7 -MyQZjmAhVz9nBkX6iggY9js/7Ix4LkCk6ERQoQxA0RWXcPX9LzBmisxL3nb86eYo -o9f2fFtK9ErU7ZiYkb32U8/Jd205rrqWOxBhvQAcOqPsxVH5USi1I2gs912NVkXB -dbb9dlEDIwiP+6E0EtEW/PodF8hzptbg8fjhu2G7l3f/ZLgBOvnyTJFHrgpRX7ce -rK4SWkfGugRmgkD8S2Us0V1llpclJ6Baiw== +Z2luQG1haWwuaTJwMB4XDTI0MDQwNTIyMzcyNFoXDTM0MDQwNjIyMzcyNFowczEL +MAkGA1UEBhMCWFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMV +STJQIEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxHDAaBgNVBAMME3p6 +ei1wbHVnaW5AbWFpbC5pMnAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDNZFhkUaY87eU58P2+7ksXGZlyGoSJP5BjJNTUWWUiWmmBvd2QCjtOfxHVBzDI +qSgmRgigV1QJjBQ6FSZsq/mPqgFOYuVq/8xCLaczt0d8FU/e5vNk/tn/MoZBR/Vl +7vXfpiGXot9uX/A3c7sggazo2SxKKr+GcOsCZkBDB9zv91qE+HiDE9G4r0GDs0U8 +nJDTu8kVALUja5Zvj1Yv+vMmdHbR9J4lr8snkmcqdYbpGNtMoenrA3ZLR3fz0GQm +9QISZ5Ojkl1XXFysHgZj/PSB+ZLyFplh5bfJI8q5oQ6lkavAsVoqdkYhN6AyudVN +NkPxECRKq8kLz5fyl0U3jUj22TAAr8VO2s3FW5s8t+/OBDZnxYW0s8VaRsRifnwC +cpaPn1dmzV16W9MXW8kdhJjpkybKac4FaZFKh9ekHIHMEJdUoxZnxqHsEkouTMZ3 +b9dh5j+YhGb5KCFOOiNSDYXcbbpb/PrsehJYy6fCivS6vYD+vwcwpaqFLM10Q7H3 +PNfuKF9be1Rsj8TsENYuzSx3qCYYxJhvGSsHakzbVf1Sam2ENrOjoJML6es1hGNK +kOKw6JWCe7V8+Zt+hrrWlGhYBA4dU34PmYMp4lb5YKic7FEq4tj9rKZ5fBIoFwsu +Rgdqxz+ignBKh+P9JiigZH1pUk7agQphuku7h8V24ciuswIDAQABo3IwcDAdBgNV +HQ4EFgQUiBPNZ5LScUWSzXolDoxhuARlsS8wHwYDVR0jBBgwFoAUiBPNZ5LScUWS +zXolDoxhuARlsS8wDgYDVR0PAQH/BAQDAgGmMB4GA1UdEQQXMBWBE3p6ei1wbHVn +aW5AbWFpbC5pMnAwDQYJKoZIhvcNAQENBQADggIBAMmgbwxPzsYA/LqT0RubzPPK +HjZ7W5NjbrF9SLsKNOUeVj1zZ4lEA6nMj/rsNbV0S+pwqV4300VX+uwzpDiyyxeH +mDdtIIX/YG7PFMRiU/sdy5hhTpojUJLDzVYh9vf501VbXz3m7pNiAU46PfAQy3zx +sPEMg+aBuBh+jHSDDB5kbhqNqTA5McEXjjaONzqBpYb79DUAfmj97k2ovtbOcuEH +zmAi0tP6duJXcRi9o14RufVD4TUc9E8uT4kLCVcQwnQuCKhfzkrFE3jA+q/6OBEI +OCrkfwHeFHCUj96XnF2sr6IuUww6OgGPPDNQs4fuLiG5ZNVXsL1mSWOhF1VbOeQh +5wSS+kLWm8YQwAG9imK2AjsJHJxgFHvMRuhYQ0Nvx/PaQhj11sILoVpS3FFHeesH +AKZ8NU8BVyK+grwHKW2DbgKKiMWRdtgn99k/Tec/vMczCXJ4Bc1CVA1laa8rLuWP +GpgOhCuR5DN115E15epprL9KRFfk+7BXIA2A1ckPNxdjxAcCiy1g5kzbshi+6pYz +L6U3/tsNBs3ZB6BIgZ6HN/hk9K5viKXw1swrphb16A5U+jPtKpSFn7Od9XxD/l2y +WPPLro8kxvWhUGSgnBrlE+iJCwsrORe5vholrZBvha0x/fc/BNTbEZfkcG7IR8ps +va2j2xyEDUfnuA+SSdDm -----END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/certificates/reseed/admin_at_stormycloud.org.crt i2p-2.5.0/installer/resources/certificates/reseed/admin_at_stormycloud.org.crt --- i2p-2.4.0/installer/resources/certificates/reseed/admin_at_stormycloud.org.crt 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/reseed/admin_at_stormycloud.org.crt 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF1zCCA7+gAwIBAgIRAMDqFR09Xuj8ZUu+oetSvAEwDQYJKoZIhvcNAQELBQAw +dTELMAkGA1UEBhMCWFgxCzAJBgNVBAcTAlhYMQswCQYDVQQJEwJYWDEeMBwGA1UE +ChMVSTJQIEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxHjAcBgNVBAMM +FWFkbWluQHN0b3JteWNsb3VkLm9yZzAeFw0yNDAxMjUxNDE1MzBaFw0zNDAxMjUx +NDE1MzBaMHUxCzAJBgNVBAYTAlhYMQswCQYDVQQHEwJYWDELMAkGA1UECRMCWFgx +HjAcBgNVBAoTFUkyUCBBbm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMR4w +HAYDVQQDDBVhZG1pbkBzdG9ybXljbG91ZC5vcmcwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDbGX+GikPzQXr9zvkrhfO9g0l49KHLNQhUKYqd6T+PfnGo +Fm0d3ZZVVQZ045vWgroOXDGGZZWxUIlb2inRaR2DF1TxN3pPYt59RgY9ZQ9+TL7o +isY91krCRygY8EcAmHIjlfZQ9dBVcL7CfyT0MYZA5Efee9+NDHSewTfQP9T2faIE +83Fcyd93a2mIHYjKUbJnojng/wgsy8srbsEuuTok4MIQmDj+B5nz+za2FgI0/ydh +srlMt4aGJF4/DIem9z9d0zBCOkwrmtFIzjNF1mOSA8ES4m5YnKA/y9rZlRidLPGu +prbXhPVnqHeOnHMz2QCw1wbVo504kl0bMqyEz2tVWsO9ep7iZoQs2xkFAEaegYNT +QLUpwVGlyuq3wXXwopFRffOSimGSazICwWI6j+K0pOtgefNJaWrqKYvtkj1SbK2L +LBNUIENz6VnB7KPRckuX6zxC8PpOiBK9BcftfO+xAz/wC6qq3riBPw30KKSym0nC +Zp5KciDn4Phtw9PGq8Bkl8SyWl0jtFnfTB1tzJkisf2qKcNHaFTEe2JW763YLbh/ +AU+8X8evFu40qLgvOgKoyy5DLy6i8zetX+3t9K0Fxt9+Vzzq6lm5V/RS8iIPPn+M +q1/3Z5kD0KQBG9h/Gl8BH+lB71ZxPAOZ3SMu8DJZcxBLVmDWqQPCr5CKnoz0swID +AQABo2IwYDAOBgNVHQ8BAf8EBAMCAoQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG +AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wHgYDVR0OBBcEFWFkbWluQHN0b3JteWNs +b3VkLm9yZzANBgkqhkiG9w0BAQsFAAOCAgEARWOJ69vTHMneSXYscha+4Ytjg0RM +faewJNEGj8qy/Qvh9si2bWYNPRK6BlbHFS7pRYBLAnhaeLBGVv1CCR6GUMMe74zQ +UuMeAoWU6qMDmB3GfYoZJh8sIxpwHqyJeTdeccRbZ4sX4F6u3IHPXYiU/AgbYqH7 +pYXQg2lCjXZYaDFAlEf5SlYUDOhhXe5kR8Edhlrsu32/JzA1DQK0JjxKCBp+DQmA +ltdOpQtAg03fHP4ssdj7VvjIDl28iIlATwBvHrdNm7T0tYWn6TWhvxbRqvfTxfaH +MvxnPdIJwNP4/9TyQkwjwHb1h+ucho3CnxI/AxspdOvT1ElMhP6Ce6rcS9pk11Rl +x0ChsqpWwDg7KYpg0qZFSKCTBp4zBq9xoMJ6BQcgMfyl736WbsCzFTEyfifp8beg +NxUa/Qk7w7cuSPGyMIKNOmOR7FLlFbtocy8sXVsUQdqnp/edelufdNe39U9uNtY6 +yoXI9//Tc6NgOwy2Oyia0slZ5qHRkB7e4USXMRzJ3p4q9eCVKjAJs81Utp7O2U+9 +vhbhwWP8CAnNTT1E5WS6EKtfrdqF7wjkV+noPGLDGmrXi01J1fSMAjMfVO+7/LOL +UN+G4ybKWnEhhOO27yidN8Xx6UrCS23DBlPPQAeA74dTsTExiOxf1o1EXzcQiMyO +LAj3/Ojbi1xkWhI= +-----END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/certificates/reseed/null_at_i2pmail.org.crt i2p-2.5.0/installer/resources/certificates/reseed/null_at_i2pmail.org.crt --- i2p-2.4.0/installer/resources/certificates/reseed/null_at_i2pmail.org.crt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/reseed/null_at_i2pmail.org.crt 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFyDCCA7CgAwIBAgIRAO8lBnTo+hlvglQwug2jHZkwDQYJKoZIhvcNAQELBQAw -cDELMAkGA1UEBhMCWFgxCzAJBgNVBAcTAlhYMQswCQYDVQQJEwJYWDEeMBwGA1UE -ChMVSTJQIEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxGTAXBgNVBAMM -EG51bGxAaTJwbWFpbC5vcmcwHhcNMjMwOTIxMjIzMTM2WhcNMzMwOTIxMjIzMTM2 -WjBwMQswCQYDVQQGEwJYWDELMAkGA1UEBxMCWFgxCzAJBgNVBAkTAlhYMR4wHAYD -VQQKExVJMlAgQW5vbnltb3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEZMBcGA1UE -AwwQbnVsbEBpMnBtYWlsLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBAMMpAvaHwzuZZ6qelRU4jcgpuAIZFH++F1Te4b1t02pRfnQ0Eeh04VC1JxO0 -XjUr1/iszEyvrI4+AdxaobDyRFPylkOLtfec4d2ciDc1cupj6y2vyYhMVN31rrvE -ve7sKoTHJ5Dx+UPGOVZZsSsmK9TXIU23W2bo7k2VnjVBXdWZyNE4twfTYCosDnYA -1HIEaIUFVv+COqw2pktxkMmfUAlnDLeVSfsAzEr37K+x0Xk5hO8m6GWQx0NRjjYp -gyEcFhWAJjAYaF3gUVR9rVVky1OeFhZgxE/KzVrW7uc84ZCMKITEPwT0qqIpsTJp -486YXzuPSc+ef78cKSQf5992l7imySJ24I/5H73HkovGAFGZdwvl6V6Ta5YqO7RR -gVDOL1EIVUnMCqFBCE6RmyZqXBVrv4Cacdc6lZ4fj42SRtWZfe6rNCpJzTRtbOyW -DBmYpK6q/jddfqI1sX0PXIn9U+Rod5Z4uz82PAjhamqyr5fpAnoQxKppBvQ3tNfn -KQhmP73Hdpvl24pRyQLBIRUL86i7TPBBn7n3XZlQfXP7lp8+KJYLkL2/zCVDrwLX -kC9hRIxCU9bZbXlkRE2R/PrK53LZecjk2KcgINA4ZlguNgze/Qj8BXelUF4izbpV -bTSvniTM46AECvjDcICAOky9Ku4RnmUJxQVf3ahDEuso7/N7AgMBAAGjXTBbMA4G -A1UdDwEB/wQEAwIChDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYD -VR0TAQH/BAUwAwEB/zAZBgNVHQ4EEgQQbnVsbEBpMnBtYWlsLm9yZzANBgkqhkiG -9w0BAQsFAAOCAgEAEUfYJTdDH7uCojnpF0Gs2tXxPJ22UhdqEsXfqR7KhhmmApss -q5kiiPIYoy5T/4IM7NVyeeJAMYwQsdJjwZ4QyxLBb9EqMS2krREcPZNRfFzBr2Wj -EBhJEYTnbIn4docwJWyXsJVG0CqFXPF1qGd0Sc2u87yj2xZNTnloWKAEQAO7DE39 -gWfDH6slM/3h3WD3Mjuk7JoYSYmBfvvm2hkBbC6lzD7XY7rdSmIUwJ050e9UrJaV -La51dd5r4q8d1cHrVUwLiACAaXJ15AEqUDLHQcvKvyfhkabwRy+v0wsodSMgSMEH -xA+kGhkIW7yV7o2exYOYypHCca3IA+pimMpEseNNrHSwbHOMfauiN7jiZLEPg6D6 -a8XwK7qmMYUq7j6QWuIqI81o29WZRf4LZ0GFoVce+e5VxkVKSItKcJoedIAp1ML8 -NhFwd9s/nqWidu/StscEEbGzz6ZuDXwshERXC0QR8HjHEPi4U8220juf4cxUahxK -heEU91l7VksSZYRUN98h28vovGcukLcnVoLj5H/+Z4r/BgxMrOUJKetxf8fU7FjO -j1U6XV36tGi+IOwYQb9D5fTVafC3hHkuUIjlOdUGYadse98ILhn9kaNtqkBtk/EU -vK+McnrEv7tcKrbvYEop/KaUayhjFiL+wGWnpxt7gLhIiavnIeUyD7acltw= ------END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/certificates/reseed/reheatedburger_at_protonmail.com.crt i2p-2.5.0/installer/resources/certificates/reseed/reheatedburger_at_protonmail.com.crt --- i2p-2.4.0/installer/resources/certificates/reseed/reheatedburger_at_protonmail.com.crt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/reseed/reheatedburger_at_protonmail.com.crt 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF7zCCA9egAwIBAgIRANVB/+wEuXS0Ttoh5teJt90wDQYJKoZIhvcNAQELBQAw -fTELMAkGA1UEBhMCWFgxCzAJBgNVBAcTAlhYMQswCQYDVQQJEwJYWDEeMBwGA1UE -ChMVSTJQIEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxJjAkBgNVBAMM -HXJlaGVhdGVkYnVyZ2VyQHByb3Rvbm1haWwuY29tMB4XDTIzMDkyMTE4MDAyOVoX -DTMzMDkyMTE4MDAyOVowfTELMAkGA1UEBhMCWFgxCzAJBgNVBAcTAlhYMQswCQYD -VQQJEwJYWDEeMBwGA1UEChMVSTJQIEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQL -EwNJMlAxJjAkBgNVBAMMHXJlaGVhdGVkYnVyZ2VyQHByb3Rvbm1haWwuY29tMIIC -IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuNwmiIY3MLSBS5sL5PXRDVK6 -MoSNw4qx0o8nDHvVBxNtzgc0/qjYvsuUggY0tZbPpxhML6GHd4qo7Z3Ip1x0MxhI -Ao5MJaflaEdm4+HeMy0IE3aU73KRUwp+nF3cUHZdlps+9mtYs4oncVEWkFQwGsgt -4yrLtXf6PmPWfFH28ffeaev90e+hdhQpTvr54Ewx6NTaMQr8mkhXL2utvPpjnPM5 -UAhOeJCMgfhLzgS4rahG0O8CQMtH5gKZ+6zjoSRatnjj0j1mBO7+e1TL5O7dVS9k -P83tmkIDDl4tXBzXr9aXQMJstbM2CEvinVcCsR74GjPcg4iB0Ift71Dx7oGKI06t -3bSvll0GZm2mFhIba/4q6f4oAJ2aeq6ejt1Kcm8g5cxtwrRZnXv5JXHZqba3y8J5 -zWaRHzhc9tyEqRBRkc6c7xMdZQ31iJ6TlxUT8vAJ1N7OnX87oHrCjwyikpyOen4r -Uvv1Ge054XPTeoHz+Jyt34t71ty1W13uPHpuvtPVR9MfgGrxd4Z9+LWvAjmMbFsZ -lC3Ll+94nUk+O0puU6KisuCGP4hCtdEtebkIqT8zo8LicLAYUMjX7KwnS7681Cu1 -sY2mB2oZAytN9Zy42oOoNeY5x39kxfwuut/2E1kxKX75O0bwfIXr611abCKc3bbz -euMrIsaB/2VFp9nAah8CAwEAAaNqMGgwDgYDVR0PAQH/BAQDAgKEMB0GA1UdJQQW -MBQGCCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCYGA1UdDgQf -BB1yZWhlYXRlZGJ1cmdlckBwcm90b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOC -AgEATuHi2Yz52OK7e+sKVdHu2KrSLCGm98BG1UIMHFi3WRBTOFyp+lZ519bJ1rFj -tmP9E1a+k/vlbc7FbV4PcV6HJYfGEv/ImtJsEnrzbhrQphC1zMFv7q6JCTUbAzl6 -ySlJ++mVxQ6AzPNH3TQgL1wPKuLh76/Y4053fg+NI3PmzzhkTUheVDkg0/a9ENSf -xMnCa3fIm869735qHk67QlikFvAfWwc4zT1Ncwodh8G4+oX0GFzIl+OZaM1GTMuD -UCcFKoqwtjyLCr22xNk8CfyiExPJXQG1HzEvDcxyoxQtnh9occR9PgqXySz26/NM -XDyM+l4utLMGBcVY4x9fksRiaWEfxiygYOxY9zDl6clh6S10b3CLut4UMiS1RTtE -Mjx2BZN3p0nxpT2leJdGxtBPGrvxuiCOEmTbOMLc3DQtppXO97B3dVMtJ5Ee8Y6p -Tq/8eiHI6eQXat6dgFT5X16vzF7w7XO7fAxuqk4Kx1D1aTVyikdo+Fcdg44dWOjq -NZu8VcCzZij/Dfjlce6t6h8D+wvDD8AkiivaDljpvbNDx/QQlQXFgH98TZA8Rnvr -QcyNNATfz+1yQUiyO6Lrjaw64OJwXYX/llgnDC+qQpP6kqZabi2TsG0EVPukVvr9 -0HyAUu4lnXtTIDq2yPNenegCloqDL1ZQdaYd2XIItnfZdTY= ------END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/certificates/router/echelon_at_mail.i2p.crt i2p-2.5.0/installer/resources/certificates/router/echelon_at_mail.i2p.crt --- i2p-2.4.0/installer/resources/certificates/router/echelon_at_mail.i2p.crt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/certificates/router/echelon_at_mail.i2p.crt 2024-04-10 02:29:58.000000000 +0000 @@ -1,32 +1,34 @@ -----BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIESg3kkzANBgkqhkiG9w0BAQ0FADBwMQswCQYDVQQGEwJY -WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt -b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEZMBcGA1UEAwwQZWNoZWxvbkBtYWls -LmkycDAeFw0xNDA3MzExNjQ3MDJaFw0yNDA3MzAxNjQ3MDJaMHAxCzAJBgNVBAYT -AlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBBbm9u -eW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRkwFwYDVQQDDBBlY2hlbG9uQG1h -aWwuaTJwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmcEgLwwhzLNe -XLOMSrhwB8hWpOhfjo4s6S/wjBtjjUc8nI3D0hSn3HY26p0rvcvNEWexPUpPULmC -exGkU463nu7PiFONiORI1eJAiUFHibRiaA7Wboyo38pO73KirwjG07Y+Ua0jp+HS -+4FQ/I/9H/bPplReTOU/6hmRbgQ69U8nE68HzZHQxP68yVJ2rPHSXMPhF4R1h0G1 -1mCAT+TgTsnwHNGF77XHJnY4/M4e2cgycEZjZow36C3t2mNDVkMgF19QQeb9WmLR -zREn3nq9BJqHpUkn9yWw0kKXTZSds+7UxESfzf3BzK0+hky2fh5H+qbYAo2lz4yj -81MXTAu+4RRkg4DBLlF+2dkclhwQLxxzvkRC6tPkn5i33Yltg7EfzA9IoQ05potJ -I+iOcF+aStfFgFj9u3B5UkcF4P0cH1QD3c6BK4hIezQYqRoPly1gHqg+XdwjG/dr -4as7HA9FTz3p2E8nClpIC1x3hfgwAdfd29aeBxO1WW/z99iMF7TBAF+u5T86XEW1 -WpknqCbTli36yJ8a5fPWxZHrryBRJT5yLxejjFeadtutBSwljiVFq+Y38VqwFivq -VLiBt7IxAsZ8iilgfnnnAvBH6chWfSKb4H7kB4TJvDiV96QmmvoEaWYNHZozMhyK -tO3b5w+xqbJXyCLA3Q75jD0km76hjcECAwEAAaMhMB8wHQYDVR0OBBYEFAHQcAam -QRS/EUhuCSr9pB4Ux0rYMA0GCSqGSIb3DQEBDQUAA4ICAQBq1+1QLmgLAjrTg3tb -4XKgAVICQRoBDNUEobQg3pYeUX9eFNya2RxNljuvYpwT80ilGMPOXcjddmr5ngiK -dbGRcuuJk9MPEHtPaPT3+JJlvKQ3B3g2wva2Wz2OAyLZUGQs389K4nTbwh4QF0n2 -aHFL8BHiD62hiKnCoNaW4ZovUNNvOxo9lMyAiaFU2gqQNcdad8hP9EAllbvbxDx9 -Tjww2UbwQUIHS9rna4Tlu+f0hDXTWIutc2A51W2fJCb7L3+lYO7Wv55ND/WtryLZ -XpMp27+MpuEnN3kQmz/l9R0hIJsWc/x9GQkjm5wEaIZEyTtenqwRKGmVCtAj0Pgv -jn1L3/lWmrNq+OZHb/QeyfKtA3nXfQKVmT98ewQiK/S5i1xIAXCJPytOD887b/o1 -cdurTmCiZMwgiQ+HLJqCg3MDa5mvKqRkRdZXfE6aQWEcSbpAhpV15R17q7L+Fg0W -shLSNucxyGNU8PjiC/nOmqfqUiPiMltJjPmscxBLim8foyxjakC4+6N6m+Jzgznj -PocBehFAfKYj66XEwzIBN7Z2uuXoYH9YptkocFjTzvchcryVulDWZ4FWxreUMhpM -4oyjjhSB4tB9clXlwMqg577q3D6Ms0zLTqsztyPN3zr6jGev3jpVq7Q1GOlciHPv -JNJOWTH/Vas1W6XlwGcOOAARTQ== +MIIF0jCCA7qgAwIBAgIJNOZDJGZRO4giMA0GCSqGSIb3DQEBDQUAMHAxCzAJBgNV +BAYTAlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBB +bm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRkwFwYDVQQDDBBlY2hlbG9u +QG1haWwuaTJwMB4XDTI0MDQwNjExMzEzMVoXDTM0MDQwNzExMzEzMVowcDELMAkG +A1UEBhMCWFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMVSTJQ +IEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxGTAXBgNVBAMMEGVjaGVs +b25AbWFpbC5pMnAwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZwSAv +DCHMs15cs4xKuHAHyFak6F+OjizpL/CMG2ONRzycjcPSFKfcdjbqnSu9y80RZ7E9 +Sk9QuYJ7EaRTjree7s+IU42I5EjV4kCJQUeJtGJoDtZujKjfyk7vcqKvCMbTtj5R +rSOn4dL7gVD8j/0f9s+mVF5M5T/qGZFuBDr1TycTrwfNkdDE/rzJUnas8dJcw+EX +hHWHQbXWYIBP5OBOyfAc0YXvtccmdjj8zh7ZyDJwRmNmjDfoLe3aY0NWQyAXX1BB +5v1aYtHNESfeer0EmoelSSf3JbDSQpdNlJ2z7tTERJ/N/cHMrT6GTLZ+Hkf6ptgC +jaXPjKPzUxdMC77hFGSDgMEuUX7Z2RyWHBAvHHO+RELq0+SfmLfdiW2DsR/MD0ih +DTmmi0kj6I5wX5pK18WAWP27cHlSRwXg/RwfVAPdzoEriEh7NBipGg+XLWAeqD5d +3CMb92vhqzscD0VPPenYTycKWkgLXHeF+DAB193b1p4HE7VZb/P32IwXtMEAX67l +PzpcRbVamSeoJtOWLfrInxrl89bFkeuvIFElPnIvF6OMV5p2260FLCWOJUWr5jfx +WrAWK+pUuIG3sjECxnyKKWB+eecC8EfpyFZ9IpvgfuQHhMm8OJX3pCaa+gRpZg0d +mjMyHIq07dvnD7GpslfIIsDdDvmMPSSbvqGNwQIDAQABo28wbTAdBgNVHQ4EFgQU +xk2AHLpxIb1hJx4zO1hF1WfYxTswHwYDVR0jBBgwFoAUxk2AHLpxIb1hJx4zO1hF +1WfYxTswDgYDVR0PAQH/BAQDAgGmMBsGA1UdEQQUMBKBEGVjaGVsb25AbWFpbC5p +MnAwDQYJKoZIhvcNAQENBQADggIBABO0NVNzUq0LWOJoVw34rOTWa5YeZAoLDIjw +mA0CDM+krKh+4WhxW8KM/e6S6eHDWJxpLD5FGj/T/ZjF8soPnSnthgMY+i0NtnaK +kQRl0IE4h4uG/QL+jzRW69hP6ZAJhqS6HEV+xp9eRa7tsetsEfas9WCrvv6h/W6r +rlkhBS+6ExnR5HqQyy0G+/25vVcO3Cb96Mn7JrkiIY33mgEMxCtK2vBn7ggfUouv +J00LzNZT7UJ7y/D2/Tb6NfC6RDxlGVMoKZyV0Szoer0iXaoeEve4pFVc7J2fkkBq +3rmK7+3zMfZRs069LyZFENq77VihwzgeaaVhZhIol6/atsSFUW15ynS6is0KjZbz +BeZeweVg66TexqwyqV17jXobXNEwhOh5b9uAROWfVukvF4zoF9rv+IIj164p2AhA +UWfYEalJFH4JdG4xQ+7kAVM1IIN0LilMRT0hdkZhs6s9Ae3U5yfDJ7EXNZxOa52Z +Q6pqgw3K0IptIzQiqIRq2nJsx0SllzRkyIKnkn7K+WaMs0oQRnUDtK2AdgNW/Yqe +Q83pOdkZs+ZikSWB7nP6uOdigJjXseAvYVJ7vPo0AuJZHMat+cdEPpcx8skbZYkK +Ck0Xt+L7Yda21E92nMy/l61MmL+Kxo2PMl582NHLJ6UosIv4IR1vwzTZwOvmul2z +yP2zmHDf -----END CERTIFICATE----- diff -Nru i2p-2.4.0/installer/resources/eepsite/docroot/help/index.html i2p-2.5.0/installer/resources/eepsite/docroot/help/index.html --- i2p-2.4.0/installer/resources/eepsite/docroot/help/index.html 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/eepsite/docroot/help/index.html 2024-04-10 02:29:58.000000000 +0000 @@ -23,6 +23,7 @@ Magyar bahasa Indonesia Italian + 日本語 Nederlands Polish Português diff -Nru i2p-2.4.0/installer/resources/eepsite/docroot/help/index_es.html i2p-2.5.0/installer/resources/eepsite/docroot/help/index_es.html --- i2p-2.4.0/installer/resources/eepsite/docroot/help/index_es.html 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/eepsite/docroot/help/index_es.html 2024-04-10 02:29:58.000000000 +0000 @@ -1,135 +1,192 @@ - - Servidor web anónimo I2P| Bienvenido a tu eepsite - - - - - -
    -
    - + +Servidor web anónimo I2P + + + + + + +
    + +
    English -中文 -Deutsch -Español -Français -فارسی -日本語 -Nederlands -Русский -Svenska + عربية + Azerbaijani + 中文 + Deutsch + Ελληνικά + Español + فارسی + Français + Magyar + bahasa Indonesia + Italian + Nederlands + Polish + Português + Română + Русский + Svenska + Turkish + Українська
    -

    Servidor web anónimo I2P

    -

    Guía rápida para crear el servidor web en I2P

    -

    Esta es tu eepsite, tu propio servidor web anónimo en I2P - simplemente edita los archivos dentro de ~/.i2p/eepsite/docroot/ (en Linux), - %LOCALAPPDATA%\I2P\eepsite\docroot\ (en Windows), - o /Users/(user)/Library/Application Support/i2p (en Mac), - y podrá ser vistas por otras personas una vez que hayas seguido lo pasos de más abajo. - En I2P las eepsites se indican con una 'key o 'clave', la cual se representa como una larga cadena de texto en Base64. - (La 'key' es de alguna manera análoga a in dirección IP, y se muestra en la - página de configuración) de la eepsite. - Las instrucciones de más abajo detallan como asignar un nombre como "miweb.i2p" a tu clave y cómo arrancar tu eepsite.

    -

    Puedes acceder a tu eepsite localmente a través - http://127.0.0.1:7658/. -

    - -

    Cómo configurar y anunciar tu eepsite

    -

    Tu eepsite por defecto está apagada. - Después de arrancarla será difícil que otras personas la encuentren porque - no tiene un nombre y porque ellos no tienen la clave Base64. - Podrías simplemente decir a la gente tu clave Base64, pero afortunadamente I2P tiene - una libreta de direcciones y varias formas fáciles de indicar a la gente como alcanzar tu eepsite. - Aquí están las instrucciones detalladas.

    -
      -
    • Selecciona un nombre para tu eepsite (algo.i2p). Usa sólo minúsculas. - Deberías comprobar primero si el nombre ya existe en tu libreta de direcciones - aquí, - o en el archivo i2p/hosts.txt . - Escribe el nuevo nombre para tu eepsite en la página - eepsite i2ptunnel configuration - donde pone "Nombre de la página web". Esto reemplazará el nombre por defecto de "miweb.i2p". - Además activa el botón de "Auto Start/Iniciar automáticamente". A partir de ahora tu eepsite se iniciará cada vez que inicies tu rúter. - Asegúrate de pulsar "Save/Guardar".
    • -
    • Pulsa en el botón de iniciar tu eepsite en la página - main i2ptunnel configuration. - Ahora deberías ver "eepsite" listado bajo las "Destinaciones locales/Local Destinations" en la parte izquierda de la - consola del ruter I2P. - Tu eepsite ya está funcionando.
    • -
    • Selecciona completamente la clave "Destino local/Local destination" en la página - eepsite i2ptunnel configuration. - y cópiala para pegarla después. - Asegúrate de que la has copiado entera - son más de 500 caracteres.
    • -
    • Escribe el nombre y pega la clave de destino en tu - libreta de direcciones maestras. - Pulsa "Add/Añadir" para añadir la destinación a tu libreta de direcciones.
    • -
    • Escribe el nombre de la eepsite en tu navegador (algo.i2p) y deberías - verla inmediatamente.
    -

    Antes de anunciar tu nueva eepsite al mundo, deberías añadir contenido. - Ves a ~/.i2p/eepsite/docroot/ (en Linux), - %LOCALAPPDATA%\I2P\eepsite\docroot\ (en Windows), - o /Users/(user)/Library/Application Support/i2p (en Mac), - y reemplaza la página de redirección index.html con tu contenido. Las carpetas virtuales funcionan, por lo que puedes hospedar - archivos desde un subdirectorio sin la necesidad de proveer explícitamente una página con enlaces a los archivos. - Si necesitas una plantilla para una web básica, puedes utilizar y adaptar esta página - y su contenido.

    -

    Registra tu propio dominio .I2P

    -

    Ahora es el momento de añadir tu eepsite a una libreta de direcciones de I2P - alojada en una web como stats.i2p. - Debes ingresar el nombre de tu eepsite y la clave en una o más de estas webs. - Aquí tienes el formulario en stats.i2p. - De nuevo, tu clave es la "Destinación local/Local destination" completa en la página - eepsite i2ptunnel configuration. - Asegúrate de obtener la destinación completa. - No olvides en pulsar "add a key/añadir una clave". - Comprueba que ha indicado que la clave ha sido añadida. - Ya que muchos ruters periódicamente obtienen las direcciones de estas webs, en unas cuantas horas - otros usuarios serán capaces de encontrar tu eepsite simplemente escribiendo algo.i2p en sus navegadores.

    -

    Añadiendo suscripciones a otras libretas de direcciones

    -

    Ya que hablamos de las actualizaciones de las libretas de direcciones, este es buen - momento para añadir más libretas de direcciones a tu propia - lista de suscripciones. - Ves a tu página de configuración de suscripciones y añade algunas de estas para la - actualización automática de nuevas eepsites:

    -

    Si tienes prisa y no puedes esperar unas horas, puedes decir a la gente que use los servicios de ayuda de - redirección "saltos/jump". - Esto hará que funcione en unos minutos tras haber incluido la clave en la libreta de direcciones de - dicha web. Puedes probarlo tu mismo escribiendo http://stats.i2p/cgi-bin/jump.cgi?a=algo.i2p - o http://i2host.i2p/cgi-bin/i2hostjump?algo.i2p en tu navegador. - Una vez que ya funcione ya puedes avisar a otros para que lo utilicen.

    -

    Algunas personas comprueban listas de eepsites como - inproxy.tino.i2p/status.php o perv.i2p en busca - de nuevas eepsites, con lo cual puede ser que empiece a visitarla gente. - Pero hay muchas otras formas de avisar a la gente. Aquí tienes unas cuantas ideas:

    - -

    Date cuenta que algunas webs recomiendan pegar esa clave de destino Base64 larga. - Pero si has conseguido poner tu clave en un servicio 'add-key/añadido-de-clave', haberla probado - usando un servicio de 'salto', y esperado 24 horas para que se propague por - las libretas de direcciones de otros, esto no debería ser necesario.

    -

    Más ayuda

    -

    Si tienes alguna pregunta, puedes mirar en los siguientes sitios para obtener ayuda:

    - -
    -Nota: Esta web y la consola necesitan ser traducidas a TU idioma si esto no ha sido sido hecho ya - o está en progreso de traducirse. Por favor, considere ayudar al crecimiento del proyecto - ayudando a traducir. Contacta con el proyecto a través - del canal de IRC mostrado más abajo. ¡Gracias!
    -
    -Documento editado por última vez en: Noviembre del 2010.
    + +

    Servidor web anónimo I2P

    + +

    Guía para el servicio web anónimo en I2P

    + +

    Este es tu propio servidor web anónimo I2P (tradicionalmente conocido como eepsite). +Para servir tu propio contenido, simplemente edita los archivos en el directorio raíz del servidor web y el sitio será público una vez que sigas las siguientes instrucciones.

    + +

    El directorio raíz del servidor web puede encontrarse en una de las siguientes ubicaciones, dependiendo de su sistema operativo:

    + +
      +
    • +Linux
      +Instalación estándar: ~/.i2p/eepsite/docroot/
      +Instalación del paquete, que se ejecuta como un servicio: /var/lib/i2p/i2p-config/eepsite/docroot/ +
    • +
    • +Windows
      %LOCALAPPDATA%\I2P\eepsite\docroot\ +
    • +
    • +Mac
      /Users/(user)/Library/Application Support/i2p +
    • +
    +

    En I2P, los servicios ocultos se direccionan utilizando una dirección Base32 que termina en ".b32.i2p", o un Destino representado como una cadena larga Base64. + La dirección Base32 puede utilizarse como nombre de host, hasta que se registre un nombre siguiendo las instrucciones siguientes. + El Destino es algo así como una dirección IP, y se muestra en la página de Configuración del Servicio Oculto.

    + +

    Las siguientes instrucciones detallan cómo asignar un nombre como "mysite.i2p" a su sitio web y permitir el acceso a otros. + Puede acceder a su sitio localmente a través de http://127.0.0.1:7658/.

    + +

    Como configurar y anunciar un servicio oculto

    + +

    Su servidor web se ejecuta por defecto, pero no será accesible para otros hasta que inicie el túnel de servicio oculto. +Después de iniciar su túnel I2P Webserver, será difícil que otras personas lo encuentren. +Sólo se puede acceder con el Destino largo o con la dirección Base32 más corta (.b32.i2p), que es un hash del Destino. +Usted podría simplemente decirle a la gente el Destino o la dirección Base32, pero afortunadamente I2P tiene una libreta de direcciones y varias maneras fáciles de informar a la gente acerca de su sitio web. +Aquí tiene instrucciones detalladas.

    + +
      +
    • Elija un nombre para su sitio web (algo.i2p), usando minúsculas.. + Es posible que desee comprobar primero en la libreta de direcciones de su propio router para ver si su nombre ya está ocupado. + Introduzca el nuevo nombre para su sitio web en la página de Configuración de Servicios Ocultos donde dice "Nombre del sitio web". + Este nombre sustituirá al predeterminado "mysite.i2p". + Además, si desea que su túnel I2P Webserver se inicie automáticamente cuando inicie I2P, marque la casilla "Auto Inicio". + Su sitio web se iniciará ahora cada vez que inicie su router. + Asegúrese de hacer clic en "Guardar".
    • +
    • Pulse el botón de inicio de su túnel de servidor web en la página principal del Administrador de servicios ocultos. + Ahora debería verlo listado bajo "Túneles Locales" en la parte izquierda de la Consola del enrutador I2P. + Su sitio web ya está funcionando.
    • +
    • Resalte y copie todo el destino Local en la página de Configuración del Servicio Oculto. + Asegúrese de copiarlo todo, tiene más de 500 caracteres.
    • +
    • Introduzca el nombre y pegue el destino en su libreta de direcciones. + Pulse "Añadir" para guardar la nueva entrada.
    • +
    • En su navegador, introduzca el nombre de su sitio web (algo.i2p) y debería volver aquí. + ¡Espero que haya funcionado!
    • +
    • Antes de anunciar al mundo su nuevo sitio web, debería añadir algo de contenido. + Vaya al directorio raíz del servidor listado arriba y sustituya la página de redirección index.html por su propio contenido.
    • +
    +

    El listado de directorios está habilitado, así que puede alojar archivos de un subdirectorio sin incluir una página con enlaces a los archivos. + Puede cambiar la apariencia del directorio añadiendo un archivo jetty-dir.css editado para cada directorio. + El subdirectorio lib muestra los estilos personalizados. + El subdirectorio resources muestra los estilos por defecto. + Si necesita una plantilla para un sitio básico, no dude en adaptar esta página y el contenido asociado.

    + +

    Si vuelve a esta página después de editar el contenido, intente borrar la caché web de su navegador:

    + +
      +
    • +Firefox: Preferencias ➜ Avanzado ➜ Red ➜ Contenido web en caché ➜ Borrar ahora
    • +
    • +Chrome/Chromium: Ajustes ➜ Ajustes avanzados ➜ Privacidad ➜ Borrar datos de navegación
    • +
    • +Opera: Ajustes ➜ Privacidad ➜ Borrar datos de navegación
    • +
    +

    Registra tu domino I2P

    + +

    Ahora es el momento de añadir su sitio web a una libreta de direcciones I2P alojada en un sitio como stats.i2p. + Debe introducir el nombre y el destino de su sitio web (o cadena de autenticación de registro) en uno o varios de estos sitios.

    +

    Algunos sitios de registro requieren el Destino. + Si es así, resalte y copie todo el destino Local en la página Configuración del servicio oculto. + Asegúrese de copiarlo todo, tiene más de 500 caracteres.

    +

    Algunos sitios de registro, incluido stats.i2p, requieren la Cadena de autenticación de registro. + Se encuentra en lapágina de Autenticación de registro enlazada desde la página de Configuración del servicio oculto. + Copie toda la cadena de autenticación y péguela en la página de registro. + Asegúrese de copiarla entera, tiene más de 500 caracteres. + Describa su sitio brevemente si el sitio solicita esta información. + Si su sitio es un servicio HTTP, deje la casilla seleccionada; si no, desactívela.

    +

    Para todos los sitios de registro, lea atentamente las Condiciones del servicio. + Pulse el botón "Enviar". + Compruebe que el envío se ha realizado correctamente. + Dado que muchos routers reciben periódicamente actualizaciones de la libreta de direcciones de estos sitios, al cabo de unas horas otras personas podrán encontrar su sitio web simplemente introduciendo su nombre de host en su navegador.

    + +

    Añadiendo suscripciones a la libreta de direcciones

    + +

    Hablando de actualizaciones de libretas de direcciones, este sería un buen momento para añadir algunas libretas de direcciones más a su propia lista de suscripciones. + Vaya a su página de Configuración de suscripciones y añada una o más para obtener una lista actualizada automáticamente de nuevos anfitriones:

    + +
      +
    • +http://stats.i2p/cgi-bin/newhosts.txt (stats.i2p)
    • +
    +

    Si tiene prisa y no puede esperar unas horas, puede decir a los usuarios que utilicen un servicio de redirección de direcciones "de salto". + Esto funcionará unos minutos después de que registre su nombre de host en el mismo sitio. + Para probarlo, introduzca http://stats.i2p/cgi-bin/jump.cgi?a=something.i2p en su navegador.. + Una vez que funcione, puede decirle a los demás que lo utilicen.

    + +

    Algunas personas consultan listas de sitios web como la lista de estado de eepsitios de Identiguy o la lista de hosts activos de no.i2p's en busca de nuevos eepsitios, por lo que es posible que su sitio empiece a recibir algo de tráfico. + Hay muchas otras formas de informar a la gente. Aquí tienes algunas ideas:

    + +
      +
    • Publique un mensaje en el foro de I2P para informar a todo el mundo sobre su nuevo sitio web I2P.
    • +
    • Cuéntaselo a la gente en los canales #i2p o #i2p-chat de IRC.
    • +
    • Póngalo en el índice de eepsite de I2PWiki +
    • +
    +

    Tenga en cuenta que algunos sitios recomiendan pegar ese destino tan largo. + Puede hacerlo si quiere, pero si ha registrado correctamente su nombre de host en un servicio de registro, lo ha probado utilizando un servicio de salto y ha esperado 24 horas a que la actualización de la libreta de direcciones se propague a los demás, no debería ser necesario.

    + +

    Usando un servidor web alternativo para alojar su sitio

    + +

    Este sitio (y la consola del enrutador I2P) se ejecuta en el servidor web Jetty, pero es posible que desee utilizar un servidor web diferente para alojar su contenido. + Para mantener el anonimato, asegúrese que su servidor web está configurado para permitir sólo conexiones desde localhost (127.0.0.1), y compruebe la documentación para asegurarse que su servidor web no está ofreciendo detalles que puedan comprometer su anonimato.

    + +

    Para configurar su servidor web para su uso en I2P, puede utilizar el túnel de servidor web existente y desactivar la ejecución del servidor web por defecto, o crear un nuevo túnel de servidor HTTP en el Administrador de servicios ocultos. + Asegúrese que el puerto de escucha configurado para el servidor web (7658 por defecto) también está configurado en los ajustes de Servicios ocultos. + Por ejemplo, si su servidor web está a la escucha por defecto en la dirección 127.0.0.1 puerto 80, tendrá que asegurarse también que el puerto de destino en la página de configuración del Administrador de Servicios Ocultos para el servicio también está configurado en el puerto 80.

    + +

    Tenga en cuenta que un servidor web o una aplicación web mal configurados pueden filtrar información potencialmente comprometedora, como + su dirección IP real o detalles del servidor que pueden reducir su anonimato o ayudar a un pirata informático. + Le recomendamos que utilice el servidor predeterminado a menos que se sienta seguro administrando el servidor. + Por favor, asegúrese que el servidor web es seguro antes de ponerlo en línea. + Hay un montón de guías en línea, por ejemplo, si usted busca "nginx security hardening guide" encontrará una serie de guías que tienen buenas recomendaciones.

    + +

    Hay un problema importante con el servidor web Apache. + Los módulos de Apache mod_status y mod_info están activados por defecto en algunos sistemas operativos. + Estos módulos exponen datos internos que pueden comprometer seriamente el anonimato cuando se usan en una red anónima. + Eliminar las líneas del archivo de configuración donde se cargan estos módulos es la forma más sencilla de evitar estos problemas.

    + +

    Más ayuda

    + +

    Si tiene alguna duda, los siguientes lugares están a su disposición para ayudarle:

    + + +
    +
    Esta página, el sitio web del proyecto y la consola del router ¡necesitan traducciones! + Por favor, ayuda a que el proyecto crezca participando o traduciendo.
    +
    - + diff -Nru i2p-2.4.0/installer/resources/eepsite/docroot/help/index_ja.html i2p-2.5.0/installer/resources/eepsite/docroot/help/index_ja.html --- i2p-2.4.0/installer/resources/eepsite/docroot/help/index_ja.html 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/installer/resources/eepsite/docroot/help/index_ja.html 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,199 @@ + + + +I2P 匿名ウェブサーバー + + + + + + +
    + +
    +English + عربية + Azerbaijani + 中文 + Deutsch + Ελληνικά + Español + فارسی + Français + Magyar + bahasa Indonesia + Italian + Nederlands + Polish + Português + Română + Русский + Svenska + Turkish + Українська +
    + +

    I2P 匿名ウェブサーバー

    + +

    I2P で匿名ウェブサービスを行うためのガイド

    + +

    これはあなたが所有する匿名 I2P ウェブサーバーです(かつては eepsite でした)。 + あなたのコンテンツを提供するには、単にウェブサーバーのルートディレクトリ内のファイルを編集して、以下の指示に従うと、サイトが公開されます。

    + +

    ウェブサーバーのルートディレクトリは、オペレーティングシステムによって異なり、以下の場所で見つけられます:

    + +
      +
    • +Linux
      + 標準インストール: ~/.i2p/eepsite/docroot/
      + パッケージインストール、サービスとして実行: /var/lib/i2p/i2p-config/eepsite/docroot/ +
    • +
    • +Windows
      + %LOCALAPPDATA%\I2P\eepsite\docroot\ +
    • +
    • +Mac
      + /Users/(user)/Library/Application Support/i2p +
    • +
    +

    I2P 内では、秘匿サービスは ".b32.i2p" で終わる Base32 アドレスか、長い Base64 文字列として表される宛先を用いてアドレスを指定します。 + Base32 アドレスは、以下の指示に従って名前を登録するまで、ホスト名として使われるかもしれません。 + 宛先は IP アドレスにある程度似ていて、秘匿サービス設定ページ上に表示されます。

    + +

    "mysite.i2p" のような名前を付けて、他者からのアクセスを可能にする方法については、以下の通りです。 + http://127.0.0.1:7658/を介して、ローカルに自身のサイトへ辿り着くかもしれません。

    + +

    秘匿サービスをセットアップして告知する方法

    + +

    初期設定では、ウェブサーバーは稼働していますが、秘匿サービストンネルを開始するまでは、他者によってアクセス可能ではありません。 + I2P ウェブサーバートンネルを開始した後、他者が見つけるのは困難です。 + 長い宛先か、宛先のハッシュである Base32 アドレス(.b32.i2p)のみからアクセス可能です。 + 宛先やBase32のアドレスを人々に伝えればいいのですが、ありがたいことにI2Pにはアドレス帳があり、自分のウェブサイトを伝えるための簡単な方法がいくつかあります。 + こちらは、詳細な説明です。

    + +
      +
    • ウェブサイトの名前(something.i2p)を、小文字で選んでください。 + 自分のルーターのアドレス帳で、自分の名前が既に使われていないかどうか、まずは確認したいでしょう。 + 秘匿サービス設定ページ上の"ウェブサイト名"で、ウェブサイトの新しい名前を入力してください。 + これは、初期設定の "mysite.i2p" を置き換えます。 + また、I2P ウェブサーバートンネルを、I2Pを開始したときに自動的に開始したいと望むなら、"自動開始"ボックスをチェックしてください。 + ウェブサイトはルーターを開始したとき、毎回開始されるようになります。 + 必ず"保存"をクリックしてください。
    • +
    • +秘匿サービスマネージャーメインページにある、ウェブサーバートンネルのボタンをクリックして、開始してください。 + I2P ルーターコンソールの左側にある、"ローカルトンネル"下の一覧に見えるようになります。 + あなたのウェブサイトは、現在稼働中です。
    • +
    • +秘匿サービス設定ページ上で、ローカルの宛先の項目を強調してコピーします。 + 500文字以上あるので、全体をコピーしていることを確実にしてください。
    • +
    • 名前を入力して、アドレス帳内へ宛先を貼り付けてください。 + "追加"をクリックして、新規項目を保存してください。
    • +
    • ブラウザ内で、あなたのウェブサイト名(something.i2p)を入力して、すぐにここに戻ってください。 + 恐らく、それは機能しています!
    • +
    • 新しいウェブサイトを世界に発信する前に、いくつかのコンテンツを追加する必要があります。 + 上に一覧で記載されたサーバーのルートディレクトリに行き、index.html をコンテンツへの転送ページに置き換えてください。
    • +
    +

    ディレクトリを一覧で記述が有効にされ、あなたはファイルへリンクするページを提供せずとも、下位ディレクトリからファイルをホストしたいかもしれません。 + + 各ディレクトリ用に編集された jetty-dir.css ファイルを提供することによって、ディレクトリの外観を変更したいかもしれません。 + lib 下位ディレクトリはカスタムスタイルを明確に示します。 + resources 下位ディレクトリは規定のスタイルを明確に示します。 + もし、基本的なサイト用にテンプレートが必要であれば、気軽に使えるこのページ関連付けられたコンテンツを適応してみてください。

    + +

    コンテンツを編集した後にこのページへ戻った場合は、ブラウザのウェブキャッシュの消去を試みてください:

    + +
      +
    • +Firefox: Preferences ➜ Advanced ➜ Network ➜ Cached Web Content ➜ Clear Now
    • +
    • +Chrome/Chromium: Settings ➜ Advanced Settings ➜ Privacy ➜ Clear browsing data
    • +
    • +Opera: Settings ➜ Privacy ➜ Clear browsing data
    • +
    +

    所有する I2P ドメインを登録

    + +

    今は、stats.i2pのようなサイトにホストされているI2Pのアドレス帳へ、あなたのウェブサイトを追加する時です。 + そのようなサイト上で、ウェブサイト名と宛先(または登録認証文字列)を入力する必要があります。

    +

    いくつかの登録サイトは宛先を必要とします。 + その場合には、秘匿サービス設定ページ上で宛先全体をハイライトとコピーしてください。 + 500字を超えるその宛先の全体をコピーすることに留意してください。

    +

    stats.i2pを含むいくつかの登録サイトでは、登録認証文字列が必要です。 + 登録認証文字列は、秘匿サービス設定ページからリンクされている登録認証ページ上で見つかります。 + 認証文字列の全体をコピーして、登録ページ上に貼り付けてください。 + 500字を超えるその宛先の全体をコピーすることに留意してください。 + 登録サイトであなたのサイトの簡潔な説明が必要ならば、述べてください。 + あなたのサイトがHTTPサービスならば、チェックボックスが選択されたままにしてください。そうでなければ、選択しないでください。

    +

    全ての登録サイトで入念に利用規約を通読してください。 + "Submit"ボタンをクリックしてください。 + 送信が成功したことを確認してください。 + たくさんのルーターがそれらの登録サイトからアドレス帳更新の定期的な入手を行ってからは、ブラウザ内で単にあなたのホスト名を入力することによって、あなたのウェブサイトが見つかるようになります。

    + +

    アドレス帳の購読を追加

    + +

    アドレス帳の更新といえば、これはあなたが持つ購読一覧にいくつか更にアドレス帳を追加するための良い機会です。 + 購読設定ページへ行き、新規ホストが自動的に更新される一覧を追加してください:

    + +
      +
    • +http://stats.i2p/cgi-bin/newhosts.txtstats.i2p
    • +
    +

    急いでいて数時間待てなければ、"jump"アドレスヘルパー転送サービスを使用するように、人々へ伝えてください。 + これは、同じサイト上で登録するホスト名が数分以内に機能します。 + これを試用するには、始めにあなたのブラウザ内へ http://stats.i2p/cgi-bin/jump.cgi?a=something.i2pを入力します。 + 一度機能していたら、それを使うよう、他者に伝えることができます。

    + +

    Some people check website lists such as Identiguy's eepsite status list or no.i2p's active host list for new eepsites, so your site may start getting some traffic. + There are plenty of other ways to tell people. Here are a few ideas:

    + +
      +
    • +I2Pフォーラム上にメッセージを投稿して、あなたの新規I2Pウェブサイトについて皆に伝えましょう!
    • +
    • それについて、IRC上の #i2p または #i2p-chat チャンネル上で皆に伝えてください。
    • +
    • Put it on the I2PWiki Eepsite Index +
    • +
    +

    いくつかのサイトでは、本当に長い宛先を貼り付けることを推奨することに注意してください。 + しかし、登録サービス上でホスト名の登録に成功し、ジャンプサービスを使ってテストし、アドレス帳の更新が他の人に伝播するのを24時間(訳注:購読しているホスト一覧を取得する初期設定の間隔が24時間)待ったのであれば、その必要はないはずです。

    + +

    Using an alternative webserver to host your site

    + +

    This site (and the I2P router console) is running on the Jetty webserver, but you may wish to use a different webserver to host your content. + To maintain anonymity, be sure that your webserver is configured to only allow connections from localhost (127.0.0.1), and check the documentation to ensure your webserver isn't advertising details that may compromise your anonymity.

    + +

    To configure your webserver for use on I2P, you may either use the existing webserver tunnel and disable the default webserver from running, or create a new HTTP Server tunnel in the Hidden Services Manager. + Ensure that the listening port configured for the webserver (7658 by default) is also configured in the Hidden Services settings. + For example, if your webserver is listening by default on address 127.0.0.1 port 80, you'd need to also ensure that the Target port in the Hidden Service Manager settings page for the service is also configured to port 80.

    + +

    Beware that a poorly configured webserver or web appplication can leak potentially compromising information such as + your real IP address or server details that may reduce your anonymity or assist a hacker. + We recommend using the default server unless you feel comfortable doing server administration. + Please ensure your web server is secure prior to placing it online. + There are plenty of guides online, for example if you search for "nginx security hardening guide" you will find a number of guides that have good recommendations.

    + +

    There is one important issue with the Apache web server. + The mod_status and mod_info Apache modules are enabled by default on some operating systems. + These modules expose internal data which can lead to serious compromise of anonymity when used on an anonymous network. + Removing the lines in the configuration file where these modules are loaded is the easiest way to prevent these issues.

    + +

    助けを得る方法

    + +

    何か疑問があるならば、下記に支援を受けるために利用可能な場所があります:

    + + +
    +
    このページ、プロジェクトのウェブサイト、ルーターコンソールには翻訳が必要です! + 参加する翻訳することによって、プロジェクトの成長を手助けしてください。
    +
    +
    + + diff -Nru i2p-2.4.0/installer/resources/eepsite/docroot/help/index_pt.html i2p-2.5.0/installer/resources/eepsite/docroot/help/index_pt.html --- i2p-2.4.0/installer/resources/eepsite/docroot/help/index_pt.html 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/eepsite/docroot/help/index_pt.html 2024-04-10 02:29:58.000000000 +0000 @@ -88,7 +88,7 @@ The resources subdirectory demonstrates the default style. If you need a template for a basic site, feel free to adapt this page and associated content.

    -

    If you're returned to this page after editing the content, try clearing your browser's web cache:

    +

    Se você retornar a esta página depois de editar o conteúdo, tente limpar o cache da Web do navegador:

    • diff -Nru i2p-2.4.0/installer/resources/hosts.txt i2p-2.5.0/installer/resources/hosts.txt --- i2p-2.4.0/installer/resources/hosts.txt 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/hosts.txt 2024-04-10 02:29:58.000000000 +0000 @@ -60,3 +60,7 @@ stormycloud.i2p=ZvTcy3AWfaqfF1ilXT7v7Q9ljT8MR1kbPsqRP3X8rin7DPORIhhfhveOHlZerUy~kSpJxnXHoFSvKzW7MhPVrLNs~aeiFobEEJ06NqTVARCMEL194VOhi7jkNehkvvg07FM3cpT0acA7OSUyx8g7xNATiXyYWjWWvfGc~I1uhdzNLapNksrT5LJdHPNMpjP~QXifz9hLYPf0WM8wrg2uTZ0k3An5YZFt1D4hxOONqiLevOFhnauQlKAFjpJ-h~f1PH3L6-qnwaPJmR0WXeMs3Cm38cIS4QKkjUZfYE66Gn7fnS2uo5mo3VDpufP8jU2fzxwylok4MsHPYQfVloF9SbS5PxCNaHzgyIchOaI4aQ0VEz6YymRrwTGqd515PXvgBxZwFmP8h-aFCWPl~zRK9W0beoBi~Hryf3wLSShjgJyotWEwjn05HV~jzkfd6r8zSev8IErdjqQoL7fwn6BKgp1CMvcsZHROmBpGWHu~pumFZCm2P-iM5U~YvFIEhLXBBQAEAAcAAA== exit.stormycloud.i2p=Ms6qmq4ZpttjEZK8r7ev38BL8dyT~-ENUK~j74G-nN-WIN7-rUJWbbYAyagQOyerJ31Bf52vtJeXPVHGQdUnbOgBmNkN-Hoo6LkDle1Su7eKYlOrbE2RNihOCh-U0Yq7vDYDBnKI8ldE7s24RY4Nmk1ZlVq8nQwT~RrNf0nbBKBjgGKJkmsfBq6i0G6eZN9Cy2Ip6uGbG70jHzzyAqW9hLUxLArVZKNMAh-fzgGUQkj3llOMqJ5NQqZn2sMrcKkO~c2nn65KNYp2zAGUnbzz3y5M~BOBj9egGYzoakDpGTEpErNj8PiO3oDeKrlgsFFsfmfcMyTKrv82FhBiwxi-izX~P7vo7wcOqhmfic5jqgzY5J-8hEpg0LerjcrW0GjOzHra20GclknvtY5M9m9eUJnRDt43n5IwBrO6-C3VJJLvWvi1gabEP2wuKvAcgHcLn6vU1reqS7QwT~Y-bteoUEw1gZ-GCPkRhGKmr6d2NyxLzEEJispBLoCoTWKPZCHkBQAEAAcAAA== ramble.i2p=xyOqhmjnO6Sc-t~2aeSW31bNkYTmhfHdQ7lYV-ENZ2AtkzMm4EsuNZLBQ9pMLV5ADc7lB1~l0q6jB~qstXL~vkIyPjfLWFSma0bCawCLgQrnC4RB3cbYxCF4CrD~-6Vb2GvV4jhrEnBLixtTqXMtW00otmuuzwWS80Pus4laOy066PuPPZR9QebY18W5Ae7-Hgaz92KNjtkkFe3IjPi05vM0g3rLiXpL-69hgyEy-1plJikdGD4wtiPmHr6utB5GVXvU4pBI0g-0CW9-OXDjAZLwBK33hVIGgDudYOmxiw-mAi227AIZBS~t-uQJHsyRZ0FWs0Kmj2mGupqz2fThuUW-UNOJL3FyvgTJawZ5Y4y0-76szgc~o6s33fnTQTwD1UdGXAy1TcRsUh16wyR-3lS8Ig6foTlzTD-LO0PF7WSWZzatwk6aQdTgjNW72a33DISA7Ry6G5M9J321XHyA52SpkbyqPxSj-BjqZX-vGozShBe1Q3fgkFzUPTnax-QNBQAEAAcAAA== +r4sas.i2p=ABQFq3xLCaQ4wCOuL2rMdwPyQwVz1xrktkLMLShZJo2L7VZJgfTBWbfUWHCzWXKcIzxmzjcnvRfp5Y5udL1HmU5CVZ2bp1jis3FPgjcJoGqcsM7w~Lad5aYkf7If8IcH7DIpavJt3ch~yxt8571CVmv2F9R4TorSOnc04kHkOrqjIyHGHCN7TsyZ23FtADGM7uaRdEk8Cbtx6905ZW4mrc1AW6F6YqiLCnSC8vLEH80ELTR3FTTkveGenKg-9ITGW3X-99qcCvp-Br1QlUAyV-XorUym2dkpWPWDV2WXUZEX6WdQMBOvU0gQ6ig6WsNBvrKXop6R4Q333gsT7XkXSg5~I74c9ntFVuewZYbfuwu-ws-4Gb2ZyRVkccUpt1AYgruXwqyxLkx4GFVN4EYX0N~JYKPaU1yb7Xw~nnCVXH5uAbeIv3glAleK4huUfqK-1ZJRy0h81ualE--XLEsOEKNGFW8bleltl~6MxGSOiEaMawHHICW2FdCEmebG6JJHBQAEAAEAAA== +opentracker.r4sas.i2p=P8CBg89WyA17SFPZJSQn9do~iCo2j8i-c8YmaByQS3TgY92or5-z7uml-5v6aV63LmO5epPptCN1pCzPyKg6aAa0mFuAG0jsV0GyjOqsQ57I~PomGZDYWnK3-Oj-ZDg128BwdXfNEa2YKxTTQGu2h5n141ObTm~NRGJBNeb0E4MGnRqvA24kI75LTtacq8M75ACW7CfhpBoWDCRTnrV0nHbH0yR4NiYRHs8WllUcP2oe2H~sNJYOuGkHxxaSTvD0wPTLL-Wx0weWV6v~QPkFA6ZkEaIAJbQjOCP4u0WJ1auaaljjnxTs-pSpd2UMV5uIN~4RIWEf6D2Q1RZg3IW9ulmP6FV2-UgZTsZ9UU3leQ2Qdt7ZOo49Nws5bKr9Lg4PeAeIa3Xx86yemDmzDO8YPjEEErcspz-SSrglnJP~PuGLJtN0v6uBZlGyKbBO7Z4tQc-nA2oHWGX9TVwQkWpcAGiZmDcoHqNhDj1OzsQ87WzkLt9X9fx4NsJUSch0Qm61BQAEAAcAAA== +skank.i2p=kagASzrpRCxoEzpKoGiA1KBTl-8-VAoDqaqq-iheMu5jmOt69pVIzsKJ571klT30zUCPJkW~6eTY3Kt4HhUoCcBxQOOdTc2yrW7wHmHjt~q~Ci92Cmz8xd~NwiZzdjONpA6AD~fQkl7oN4pKjmk58ZrOHNEXJYjZzceCtlCnoOgXMCUigTFr45nvTeloDOgCnU5vdjNbv-28Cwfy0hXEAHrPcEJdOdguD9HNiTeexjb0hxrl8ugwRaNBMFpMMhQgKwR1NJuvqol87XXvv2DE9mp2Gs~hdaHuJL2DGXitoq-OT3Si~~axGUyKKpo~unfwy9JSAA0aNkzRJ6SPBFNnsqZDzsMMnhupT3YDVeEzMjQSb08kYaHeBWM-hz7IUGI7tGNcb2g3kZlUKYAB9~QHF7m6kS0xbvwx8L~nDRpLpX~UURCsvy5LxoQkebvn7UGa1r6AAbDbaJoqPWeY98RU5m3V-cbG-1D4iSB8OvRUELjlE3vL7y7JCyMdJhAJxGCzBQAEAAcAAA== +opentracker.skank.i2p=5tSb-9kujvxfA9v-pgRPe4Fxv6FtLU~lykVKYRCPfwXS8Uizy-Ljn~yE9vGCf3KBeUudLUfRGTYBflJE04kYInZf28lLeG5xkLI29Hwz4lbUX~13BFZrPc-lnCVA6gyr4dAtcVf0b9YJSX2idOPiuZXkasa02SQb6k5yT5~4UvHHsTchO-XDkf38hsx~xjumfhg9DHI2CWrsuRFNR8K0CN9Z6H608jxWfizqsMH0EE6bohfmC42HVkZWXInAmtH1mSyC5t0RZiIVKcT8SvSoRr6QQpwBWsoUi6SyoWTRKT8LD9pT-3LNxabR60S28eiAgX1khDkIZEQvDXcie6TDIihZc0HhaYs2T67WlOKUovHQ4CqtfGDsD9Fpud3SyxXsq-A40NNlXTYStIW2JnwetTot8of5~PF1uv1XPMbfItvqDlMBz9TBtI5BJujD3SinHkcaWDVgr6bddsTJrjBZVojZurfeSMbEB~Y6NScr1O8V4BR2fpr6fFxWiqE5lTDDBQAEAAcAAA== diff -Nru i2p-2.4.0/installer/resources/locale/po/messages_cs.po i2p-2.5.0/installer/resources/locale/po/messages_cs.po --- i2p-2.4.0/installer/resources/locale/po/messages_cs.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/installer/resources/locale/po/messages_cs.po 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,200 @@ +# I2P +# Copyright (C) 2012 The I2P Project +# This file is distributed under the same license as the routerconsole package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# A5h8d0wf0x , 2014 +# slrslr, 2024 +# slrslr, 2021 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-10-06 13:42+0000\n" +"PO-Revision-Date: 2012-12-22 15:05+0000\n" +"Last-Translator: slrslr, 2024\n" +"Language-Team: Czech (http://app.transifex.com/otf/I2P/language/cs/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n" + +#: ../i2prouter:223 +msgid "Failed to load the wrapper" +msgstr "Nepodařilo se načíst wrapper" + +#: ../i2prouter:988 ../i2prouter:1016 ../i2prouter:1090 ../i2prouter:1118 +#: ../i2prouter:1139 +#, sh-format +msgid "$APP_LONG_NAME is already running." +msgstr "$APP_LONG_NAME je již spuštěn." + +#: ../i2prouter:999 +#, sh-format +msgid "Running $APP_LONG_NAME" +msgstr "$APP_LONG_NAME běží" + +#: ../i2prouter:1023 +#, sh-format +msgid "Waiting for $APP_LONG_NAME" +msgstr "Čekání na $APP_LONG_NAME" + +#: ../i2prouter:1070 +#, sh-format +msgid "WARNING: $APP_LONG_NAME may have failed to start." +msgstr "VAROVÁNÍ: $APP_LONG_NAME tuto aplikaci se nemusí podařit spustit." + +#: ../i2prouter:1084 ../i2prouter:1112 ../i2prouter:1318 ../i2prouter:1607 +msgid "Must be root to perform this action." +msgstr "Musíte být root pro provedení této operace." + +#: ../i2prouter:1128 +#, sh-format +msgid "Starting $APP_LONG_NAME" +msgstr "Startování $APP_LONG_NAME" + +#: ../i2prouter:1150 +#, sh-format +msgid "Stopping $APP_LONG_NAME" +msgstr "Zastavování $APP_LONG_NAME" + +#: ../i2prouter:1154 ../i2prouter:1222 ../i2prouter:1775 +#, sh-format +msgid "$APP_LONG_NAME was not running." +msgstr "$APP_LONG_NAME neběžela." + +#: ../i2prouter:1167 ../i2prouter:1175 ../i2prouter:1237 ../i2prouter:1245 +#, sh-format +msgid "Unable to stop $APP_LONG_NAME." +msgstr "Nejde zastavit $APP_LONG_NAME." + +#: ../i2prouter:1193 +#, sh-format +msgid "Waiting for $APP_LONG_NAME to exit" +msgstr "Čekání na ukončení $APP_LONG_NAME" + +#: ../i2prouter:1207 +#, sh-format +msgid "Failed to stop $APP_LONG_NAME." +msgstr "Selhalo zastavení $APP_LONG_NAME." + +#: ../i2prouter:1210 +#, sh-format +msgid "Stopped $APP_LONG_NAME." +msgstr "Zastavila se $APP_LONG_NAME." + +#: ../i2prouter:1218 +#, sh-format +msgid "Stopping $APP_LONG_NAME gracefully" +msgstr "Zastavování $APP_LONG_NAME (graceful)" + +#: ../i2prouter:1264 +#, sh-format +msgid "$APP_LONG_NAME is not running." +msgstr "$APP_LONG_NAME neběží." + +#: ../i2prouter:1269 +#, sh-format +msgid "$APP_LONG_NAME is running: PID:$pid" +msgstr "$APP_LONG_NAME neběží: PID:$pid" + +#: ../i2prouter:1272 +#, sh-format +msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS" +msgstr "$APP_LONG_NAME běží: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS" + +#: ../i2prouter:1325 ../i2prouter:1337 ../i2prouter:1356 ../i2prouter:1373 +#: ../i2prouter:1440 ../i2prouter:1460 ../i2prouter:1474 ../i2prouter:1488 +#: ../i2prouter:1516 ../i2prouter:1554 ../i2prouter:1589 +#, sh-format +msgid "The $APP_LONG_NAME daemon is already installed." +msgstr "$APP_LONG_NAME daemon je již nainstalován." + +#: ../i2prouter:1328 ../i2prouter:1343 ../i2prouter:1445 ../i2prouter:1477 +#: ../i2prouter:1491 ../i2prouter:1505 ../i2prouter:1519 ../i2prouter:1557 +#: ../i2prouter:1592 +#, sh-format +msgid "Installing the $APP_LONG_NAME daemon" +msgstr "Instalace $APP_LONG_NAME daemona" + +#: ../i2prouter:1599 +#, sh-format +msgid "Install not currently supported for $DIST_OS" +msgstr "Instalace momentálně není podporována pro $DIST_OS" + +#: ../i2prouter:1615 ../i2prouter:1628 ../i2prouter:1642 ../i2prouter:1651 +#: ../i2prouter:1661 ../i2prouter:1685 ../i2prouter:1698 ../i2prouter:1710 +#: ../i2prouter:1728 ../i2prouter:1741 ../i2prouter:1755 +#, sh-format +msgid "Removing $APP_LONG_NAME daemon" +msgstr "Odebrání $APP_LONG_NAME daemona" + +#: ../i2prouter:1621 ../i2prouter:1636 ../i2prouter:1645 ../i2prouter:1655 +#: ../i2prouter:1666 ../i2prouter:1679 ../i2prouter:1691 ../i2prouter:1704 +#: ../i2prouter:1722 ../i2prouter:1735 ../i2prouter:1749 ../i2prouter:1760 +#, sh-format +msgid "The $APP_LONG_NAME daemon is not currently installed." +msgstr "$APP_LONG_NAME daemon není nainstalován." + +#: ../i2prouter:1764 +#, sh-format +msgid "Remove not currently supported for $DIST_OS" +msgstr "Odebrání není momentálně podporované pro $DIST_OS" + +#: ../i2prouter:1851 +msgid "Commands:" +msgstr "Příkazy:" + +#: ../i2prouter:1852 +msgid "Launch in the current console." +msgstr "Spustit v aktuální konzoli." + +#: ../i2prouter:1853 +msgid "Start in the background as a daemon process." +msgstr "Spustit jako proces na pozadí - daemon." + +#: ../i2prouter:1854 +msgid "Stop if running as a daemon or in another console." +msgstr "Zastavit pokud běží jako daemon nebo v jiné konzoli." + +#: ../i2prouter:1855 +msgid "Stop gracefully, may take up to 11 minutes." +msgstr "Zastavit (graceful), může trvat až 11 minut." + +#: ../i2prouter:1856 +msgid "Stop if running and then start." +msgstr "Zastavit pokud běží a potom znovu spustit." + +#: ../i2prouter:1857 +msgid "Restart only if already running." +msgstr "Restartovat jen pokud běží." + +#: ../i2prouter:1858 +msgid "Query the current status." +msgstr "Zjistit aktuální stav." + +#: ../i2prouter:1859 +msgid "Install to start automatically when system boots." +msgstr "Instalovat spuštění při startu systému." + +#: ../i2prouter:1860 +msgid "Uninstall." +msgstr "Odinstalovat." + +#: ../i2prouter:1861 +msgid "Request a Java thread dump if running." +msgstr "Požádat o Java thread dump pokud běží." + +#: ../i2prouter:1874 +msgid "Please edit i2prouter and set the variable RUN_AS_USER" +msgstr "Prosím upravte i2prouter a nastavte proměnnou RUN_AS_USER" + +#: ../i2prouter:1879 +msgid "Running I2P as the root user is *not* recommended." +msgstr "Spouštět I2P jako uživatel root *není* doporučeno." + +#: ../i2prouter:1882 +msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true." +msgstr "Pro spouštění jako root, upravte i2prouter a nastavte ALLOW_ROOT=true." diff -Nru i2p-2.4.0/installer/resources/locale/po/messages_hu.po i2p-2.5.0/installer/resources/locale/po/messages_hu.po --- i2p-2.4.0/installer/resources/locale/po/messages_hu.po 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/installer/resources/locale/po/messages_hu.po 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,199 @@ +# I2P +# Copyright (C) 2012 The I2P Project +# This file is distributed under the same license as the routerconsole package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# +# Translators: +# Nyul Csoki , 2021 +# benewfy , 2015 +msgid "" +msgstr "" +"Project-Id-Version: I2P\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-10-06 13:42+0000\n" +"PO-Revision-Date: 2012-12-22 15:05+0000\n" +"Last-Translator: Nyul Csoki , 2021\n" +"Language-Team: Hungarian (http://app.transifex.com/otf/I2P/language/hu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: ../i2prouter:223 +msgid "Failed to load the wrapper" +msgstr "Burkolat betöltése sikertelen" + +#: ../i2prouter:988 ../i2prouter:1016 ../i2prouter:1090 ../i2prouter:1118 +#: ../i2prouter:1139 +#, sh-format +msgid "$APP_LONG_NAME is already running." +msgstr "$APP_LONG_NAME már fut." + +#: ../i2prouter:999 +#, sh-format +msgid "Running $APP_LONG_NAME" +msgstr "Futás alatt $APP_LONG_NAME" + +#: ../i2prouter:1023 +#, sh-format +msgid "Waiting for $APP_LONG_NAME" +msgstr "Várakozás erre: $APP_LONG_NAME" + +#: ../i2prouter:1070 +#, sh-format +msgid "WARNING: $APP_LONG_NAME may have failed to start." +msgstr "FIGYELMEZTETÉS: $APP_LONG_NAME indítása lehet, hogy sikertelen." + +#: ../i2prouter:1084 ../i2prouter:1112 ../i2prouter:1318 ../i2prouter:1607 +msgid "Must be root to perform this action." +msgstr "Root-nak kell lenni, hogy ezt a művelet elvégzésre kerüljön." + +#: ../i2prouter:1128 +#, sh-format +msgid "Starting $APP_LONG_NAME" +msgstr "Indítás folyamatban: $APP_LONG_NAME" + +#: ../i2prouter:1150 +#, sh-format +msgid "Stopping $APP_LONG_NAME" +msgstr "Leállítás folyamatban: $APP_LONG_NAME" + +#: ../i2prouter:1154 ../i2prouter:1222 ../i2prouter:1775 +#, sh-format +msgid "$APP_LONG_NAME was not running." +msgstr "$APP_LONG_NAME nem futott." + +#: ../i2prouter:1167 ../i2prouter:1175 ../i2prouter:1237 ../i2prouter:1245 +#, sh-format +msgid "Unable to stop $APP_LONG_NAME." +msgstr "$APP_LONG_NAME leállítása sikertelen." + +#: ../i2prouter:1193 +#, sh-format +msgid "Waiting for $APP_LONG_NAME to exit" +msgstr "Várakozás err: $APP_LONG_NAME, hogy kilépjen" + +#: ../i2prouter:1207 +#, sh-format +msgid "Failed to stop $APP_LONG_NAME." +msgstr "$APP_LONG_NAME leállítása sikertelen." + +#: ../i2prouter:1210 +#, sh-format +msgid "Stopped $APP_LONG_NAME." +msgstr "$APP_LONG_NAME leállt." + +#: ../i2prouter:1218 +#, sh-format +msgid "Stopping $APP_LONG_NAME gracefully" +msgstr "$APP_LONG_NAME óvatos leállítása folyamatban." + +#: ../i2prouter:1264 +#, sh-format +msgid "$APP_LONG_NAME is not running." +msgstr "$APP_LONG_NAME jelenleg nem fut." + +#: ../i2prouter:1269 +#, sh-format +msgid "$APP_LONG_NAME is running: PID:$pid" +msgstr "$APP_LONG_NAME fut: PID:$pid" + +#: ../i2prouter:1272 +#, sh-format +msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS" +msgstr "$APP_LONG_NAME fut: PID:$pid, Burkolat:$STATUS, Java:$JAVASTATUS" + +#: ../i2prouter:1325 ../i2prouter:1337 ../i2prouter:1356 ../i2prouter:1373 +#: ../i2prouter:1440 ../i2prouter:1460 ../i2prouter:1474 ../i2prouter:1488 +#: ../i2prouter:1516 ../i2prouter:1554 ../i2prouter:1589 +#, sh-format +msgid "The $APP_LONG_NAME daemon is already installed." +msgstr "A(z) $APP_LONG_NAME háttérszolgáltatás már telepítve van." + +#: ../i2prouter:1328 ../i2prouter:1343 ../i2prouter:1445 ../i2prouter:1477 +#: ../i2prouter:1491 ../i2prouter:1505 ../i2prouter:1519 ../i2prouter:1557 +#: ../i2prouter:1592 +#, sh-format +msgid "Installing the $APP_LONG_NAME daemon" +msgstr "A(z) $APP_LONG_NAME háttérszolgáltatás telepítés alatt" + +#: ../i2prouter:1599 +#, sh-format +msgid "Install not currently supported for $DIST_OS" +msgstr "Telepítés jelenleg nincs támogatva ehhez: $DIST_OS" + +#: ../i2prouter:1615 ../i2prouter:1628 ../i2prouter:1642 ../i2prouter:1651 +#: ../i2prouter:1661 ../i2prouter:1685 ../i2prouter:1698 ../i2prouter:1710 +#: ../i2prouter:1728 ../i2prouter:1741 ../i2prouter:1755 +#, sh-format +msgid "Removing $APP_LONG_NAME daemon" +msgstr "A(z) $APP_LONG_NAME háttérszolgáltatás eltávolítás alatt" + +#: ../i2prouter:1621 ../i2prouter:1636 ../i2prouter:1645 ../i2prouter:1655 +#: ../i2prouter:1666 ../i2prouter:1679 ../i2prouter:1691 ../i2prouter:1704 +#: ../i2prouter:1722 ../i2prouter:1735 ../i2prouter:1749 ../i2prouter:1760 +#, sh-format +msgid "The $APP_LONG_NAME daemon is not currently installed." +msgstr "A(z) $APP_LONG_NAME háttérszolgáltatás jelenleg nincs telepítve." + +#: ../i2prouter:1764 +#, sh-format +msgid "Remove not currently supported for $DIST_OS" +msgstr "Eltávolítás jelenleg nincs támogatva ehhez: $DIST_OS" + +#: ../i2prouter:1851 +msgid "Commands:" +msgstr "Parancsok:" + +#: ../i2prouter:1852 +msgid "Launch in the current console." +msgstr "Indítás a jelenlegi parancssorban." + +#: ../i2prouter:1853 +msgid "Start in the background as a daemon process." +msgstr "Indítás a háttérben, háttérszolgáltatási folyamatként." + +#: ../i2prouter:1854 +msgid "Stop if running as a daemon or in another console." +msgstr "Leállítás, ha háttérszolgáltatásként vagy másik parancssorban fut." + +#: ../i2prouter:1855 +msgid "Stop gracefully, may take up to 11 minutes." +msgstr "Óvatos leállítás, eltarthat akár 11 percig is." + +#: ../i2prouter:1856 +msgid "Stop if running and then start." +msgstr "Leállítás, ha fut, azután indítás." + +#: ../i2prouter:1857 +msgid "Restart only if already running." +msgstr "Újraindítás csak akkor, ha már fut." + +#: ../i2prouter:1858 +msgid "Query the current status." +msgstr "Jelenlegi állapot lekérdezése." + +#: ../i2prouter:1859 +msgid "Install to start automatically when system boots." +msgstr "Telepítés automatikus indítással a rendszer elindulásakor." + +#: ../i2prouter:1860 +msgid "Uninstall." +msgstr "Eltávolítás." + +#: ../i2prouter:1861 +msgid "Request a Java thread dump if running." +msgstr "Java szál lerakás kérése, ha fut." + +#: ../i2prouter:1874 +msgid "Please edit i2prouter and set the variable RUN_AS_USER" +msgstr "Kérlek, hogy szerkeszd az i2prouter-t és állítsd be a következő változót: RUN_AS_USER" + +#: ../i2prouter:1879 +msgid "Running I2P as the root user is *not* recommended." +msgstr "Az I2P-t root felhasználóként futtatni *nem* javasolt." + +#: ../i2prouter:1882 +msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true." +msgstr "Ha mégis root-ként szeretnéd futtatni, szerkeszd az i2prouter-t és állítsd át a következő változót erre: ALLOW_ROOT=true." diff -Nru i2p-2.4.0/installer/resources/locale-man/man_pt.po i2p-2.5.0/installer/resources/locale-man/man_pt.po --- i2p-2.4.0/installer/resources/locale-man/man_pt.po 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/locale-man/man_pt.po 2024-04-10 02:29:58.000000000 +0000 @@ -8,19 +8,20 @@ # Manuela Silva , 2017 # Eduardo Rodrigues, 2022 # L., 2022 +# Cauan Henrique Zorzenon , 2024 # msgid "" msgstr "" "Project-Id-Version: I2P man pages\n" "POT-Creation-Date: 2021-11-27 13:31-0000\n" -"Last-Translator: L., 2022\n" -"Language-Team: Portuguese (https://www.transifex.com/otf/teams/12694/pt/)\n" +"Last-Translator: Cauan Henrique Zorzenon , 2024\n" +"Language-Team: Portuguese (https://app.transifex.com/otf/teams/12694/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt\n" "POT-Revision-Date: 2021-11-27 13:31-0000\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #. type: TH #: man/eepget.1:1 @@ -74,6 +75,8 @@ "Download a file non-interactively via HTTP. Transfers through both I2P and " "the regular Internet are supported." msgstr "" +"Download a file non-interactively via HTTP. Transfers through both I2P and " +"the regular Internet are supported." #. type: Plain text #: man/eepget.1:21 @@ -84,6 +87,12 @@ " If supported by the remote server, eepget will instruct the server to " "continue the download from the point of interruption." msgstr "" +"Eepget é capaz de lidar com conexões de rede lentas ou instáveis; Se um " +"download não for bem-sucedido devido a um problema de rede, ele continuará " +"tentando novamente até que o arquivo inteiro tenha sido recuperado (se a " +"opção -n estiver definida). Se suportado pelo servidor remoto, o eepget " +"instruirá o servidor a continuar o download a partir do ponto de " +"interrupção." #. type: SH #: man/eepget.1:22 @@ -100,7 +109,7 @@ #: man/eepget.1:25 #, no-wrap msgid "Clearnet. Do not use a proxy. Same as B<-p> :0 ." -msgstr "" +msgstr "Clearnet. Não use um proxy. O mesmo que B<-p> :0 ." #. type: Plain text #: man/eepget.1:31 @@ -111,7 +120,7 @@ #: man/eepget.1:31 #, no-wrap msgid "Sets the etag value in the request headers." -msgstr "" +msgstr "Define o valor etag nos cabeçalhos de solicitação." #. type: Plain text #: man/eepget.1:37 @@ -123,6 +132,8 @@ #, no-wrap msgid "Adds an arbitrary request header with the given name and value." msgstr "" +"Adiciona um cabeçalho de solicitação arbitrário com o nome e o valor " +"fornecidos." #. type: Plain text #: man/eepget.1:43 @@ -136,6 +147,8 @@ "Controls the progress display. B<\\ lineLen > is the length of one progress " "line in characters. The default is 40." msgstr "" +"Controla a exibição de progresso. B<\\ lineLen > é o comprimento de uma " +"linha de progresso em caracteres. O padrão é 40." #. type: Plain text #: man/eepget.1:49 @@ -149,6 +162,8 @@ "Controls the progress display. B<\\ markSize > is the number of bytes one " "'#' character represents. The default is 1024." msgstr "" +"Controla a exibição de progresso. B<\\ markSize > é o número de bytes que um" +" caractere '#' representa. O padrão é 1024." #. type: Plain text #: man/eepget.1:55 @@ -162,6 +177,9 @@ "Specify the number of times to retry downloading if the download isn't " "successful. If this option is not specified, eepget will not retry." msgstr "" +"Especifique o número de vezes que o download for repetido se o download não " +"for bem-sucedido. Se essa opção não for especificada, o eepget não tentará " +"novamente." #. type: Plain text #: man/eepget.1:61 @@ -175,6 +193,8 @@ "Sets the output file to write to. If this option is not given, the output " "filename will be determined by the URL." msgstr "" +"Define o arquivo de saída para gravar. Se essa opção não for fornecida, o " +"nome do arquivo de saída será determinado pela URL." #. type: Plain text #: man/eepget.1:67 @@ -189,6 +209,10 @@ "eepget will use 4444. If this option is not specified, eepget will use " "127.0.0.1:4444. Specify B<-c> or B<-p> :0 to disable the eeproxy." msgstr "" +"Especifique um servidor proxy I2P (eeproxy) a ser usado. Se a porta não for " +"especificada, eepget usará 4444. Se essa opção não for especificada, eepget " +"usará 127.0.0.1:4444. Especificar B<-c> ou B<-p> :0 para desativar o " +"eeproxy." #. type: Plain text #: man/eepget.1:73 @@ -226,6 +250,8 @@ "Sets the password for proxy authorization, if required. If a username is " "specified but not a password, EepGet will prompt for the password." msgstr "" +"Define a senha para autorização de proxy, se necessário. Se um nome de " +"usuário for especificado, mas não uma senha, o EepGet solicitará a senha." #. type: SH #: man/eepget.1:88 @@ -239,6 +265,8 @@ "B exits with status zero upon successful transfer and non-zero if " "there were problems with the download." msgstr "" +"B sai com status zero após a transferência bem-sucedida e diferente " +"de zero se houver problemas com o download." #. type: SH #: man/eepget.1:93 man/i2prouter.1:54 man/i2prouter-nowrapper.1:24 @@ -253,6 +281,9 @@ "https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues> the I2P GitLab server E<.UE" " .>" msgstr "" +"Por favor, insira um problema em E<.UR " +"https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues> the I2P GitLab server E<.UE" +" .>" #. type: SH #: man/eepget.1:99 man/i2prouter.1:60 man/i2prouter-nowrapper.1:30 @@ -366,6 +397,8 @@ #: man/i2prouter.1:41 msgid "Install initscript to start I2P automatically when the system boots." msgstr "" +"Instale o initscript para iniciar o I2P automaticamente quando o sistema for" +" inicializado." #. type: IP #: man/i2prouter.1:43 @@ -376,7 +409,7 @@ #. type: Plain text #: man/i2prouter.1:45 msgid "Uninstall initscript that was installed with B" -msgstr "" +msgstr "Desinstalar o initscript que foi instalado com B" #. type: IP #: man/i2prouter.1:47 @@ -398,7 +431,7 @@ #. type: Plain text #: man/i2prouter.1:53 msgid "Dumps the current threads into B." -msgstr "" +msgstr "Despeja os threads atuais no B." #. type: Plain text #: man/i2prouter.1:61 @@ -409,7 +442,7 @@ #: man/i2prouter-nowrapper.1:1 #, no-wrap msgid "I2PROUTER-NOWRAPPER" -msgstr "" +msgstr "I2PROUTER-NOWRAPPER" #. type: Plain text #: man/i2prouter-nowrapper.1:5 @@ -439,6 +472,9 @@ "options. To stop the router, use your browser to access E<.UR " "http://localhost:7657/> the router console E<.UE .>" msgstr "" +"Você deve realmente usar o B(1) script em vez disso. Não há " +"opções. Para parar o roteador, use seu navegador para acessar o E<.UR " +"http://localhost:7657/> o console do roteador E<. UE .>" #. type: Plain text #: man/i2prouter-nowrapper.1:31 diff -Nru i2p-2.4.0/installer/resources/locale-man/man_pt_BR.po i2p-2.5.0/installer/resources/locale-man/man_pt_BR.po --- i2p-2.4.0/installer/resources/locale-man/man_pt_BR.po 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/locale-man/man_pt_BR.po 2024-04-10 02:29:58.000000000 +0000 @@ -9,19 +9,20 @@ # Eduardo Addad de Oliveira , 2019 # Eduardo Rodrigues, 2021 # Manuela Silva , 2022 +# Cauan Henrique Zorzenon , 2024 # msgid "" msgstr "" "Project-Id-Version: I2P man pages\n" "POT-Creation-Date: 2021-11-27 13:31-0000\n" -"Last-Translator: Manuela Silva , 2022\n" -"Language-Team: Portuguese (Brazil) (https://www.transifex.com/otf/teams/12694/pt_BR/)\n" +"Last-Translator: Cauan Henrique Zorzenon , 2024\n" +"Language-Team: Portuguese (Brazil) (https://app.transifex.com/otf/teams/12694/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "POT-Revision-Date: 2021-11-27 13:31-0000\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" #. type: TH #: man/eepget.1:1 @@ -75,6 +76,8 @@ "Download a file non-interactively via HTTP. Transfers through both I2P and " "the regular Internet are supported." msgstr "" +"Baixe um arquivo de forma não interativa via HTTP. Transferências através de" +" I2P e da Internet regular são suportadas." #. type: Plain text #: man/eepget.1:21 @@ -85,6 +88,12 @@ " If supported by the remote server, eepget will instruct the server to " "continue the download from the point of interruption." msgstr "" +"Eepget é capaz de lidar com conexões de rede lentas ou instáveis; Se um " +"download não for bem-sucedido devido a um problema de rede, ele continuará " +"tentando novamente até que o arquivo inteiro tenha sido recuperado (se a " +"opção -n estiver definida). Se suportado pelo servidor remoto, o eepget " +"instruirá o servidor a continuar o download a partir do ponto de " +"interrupção." #. type: SH #: man/eepget.1:22 @@ -101,7 +110,7 @@ #: man/eepget.1:25 #, no-wrap msgid "Clearnet. Do not use a proxy. Same as B<-p> :0 ." -msgstr "" +msgstr "Clearnet. Não use um proxy. O mesmo que B<-p> :0 ." #. type: Plain text #: man/eepget.1:31 @@ -112,7 +121,7 @@ #: man/eepget.1:31 #, no-wrap msgid "Sets the etag value in the request headers." -msgstr "" +msgstr "Define o valor etag nos cabeçalhos de solicitação." #. type: Plain text #: man/eepget.1:37 @@ -124,6 +133,8 @@ #, no-wrap msgid "Adds an arbitrary request header with the given name and value." msgstr "" +"Adiciona um cabeçalho de solicitação arbitrário com o nome e o valor " +"fornecidos." #. type: Plain text #: man/eepget.1:43 @@ -137,6 +148,8 @@ "Controls the progress display. B<\\ lineLen > is the length of one progress " "line in characters. The default is 40." msgstr "" +"Controla a exibição de progresso. B<\\ lineLen > é o comprimento de uma " +"linha de progresso em caracteres. O padrão é 40." #. type: Plain text #: man/eepget.1:49 @@ -150,6 +163,8 @@ "Controls the progress display. B<\\ markSize > is the number of bytes one " "'#' character represents. The default is 1024." msgstr "" +"Controla a exibição de progresso. B<\\ markSize > é o número de bytes que um" +" caractere '#' representa. O padrão é 1024." #. type: Plain text #: man/eepget.1:55 @@ -163,6 +178,9 @@ "Specify the number of times to retry downloading if the download isn't " "successful. If this option is not specified, eepget will not retry." msgstr "" +"Especifique o número de vezes que o download for repetido se o download não " +"for bem-sucedido. Se essa opção não for especificada, o eepget não tentará " +"novamente." #. type: Plain text #: man/eepget.1:61 @@ -176,6 +194,8 @@ "Sets the output file to write to. If this option is not given, the output " "filename will be determined by the URL." msgstr "" +"Define o arquivo de saída para gravar. Se essa opção não for fornecida, o " +"nome do arquivo de saída será determinado pela URL." #. type: Plain text #: man/eepget.1:67 @@ -190,6 +210,10 @@ "eepget will use 4444. If this option is not specified, eepget will use " "127.0.0.1:4444. Specify B<-c> or B<-p> :0 to disable the eeproxy." msgstr "" +"Especifique um servidor proxy I2P (eeproxy) a ser usado. Se a porta não for " +"especificada, eepget usará 4444. Se essa opção não for especificada, eepget " +"usará 127.0.0.1:4444. Especificar B<-c> ou B<-p> :0 para desativar o " +"eeproxy." #. type: Plain text #: man/eepget.1:73 @@ -227,6 +251,8 @@ "Sets the password for proxy authorization, if required. If a username is " "specified but not a password, EepGet will prompt for the password." msgstr "" +"Define a senha para autorização de proxy, se necessário. Se um nome de " +"usuário for especificado, mas não uma senha, o EepGet solicitará a senha." #. type: SH #: man/eepget.1:88 @@ -240,6 +266,8 @@ "B exits with status zero upon successful transfer and non-zero if " "there were problems with the download." msgstr "" +"B sai com status zero após a transferência bem-sucedida e diferente " +"de zero se houver problemas com o download." #. type: SH #: man/eepget.1:93 man/i2prouter.1:54 man/i2prouter-nowrapper.1:24 @@ -254,6 +282,9 @@ "https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues> the I2P GitLab server E<.UE" " .>" msgstr "" +"Por favor, insira um problema em E<.UR " +"https://i2pgit.org/i2p-hackers/i2p.i2p/-/issues> the I2P GitLab server E<.UE" +" .>" #. type: SH #: man/eepget.1:99 man/i2prouter.1:60 man/i2prouter-nowrapper.1:30 @@ -367,6 +398,8 @@ #: man/i2prouter.1:41 msgid "Install initscript to start I2P automatically when the system boots." msgstr "" +"Instale o initscript para iniciar o I2P automaticamente quando o sistema for" +" inicializado." #. type: IP #: man/i2prouter.1:43 @@ -377,7 +410,7 @@ #. type: Plain text #: man/i2prouter.1:45 msgid "Uninstall initscript that was installed with B" -msgstr "" +msgstr "Desinstalar o initscript que foi instalado com B" #. type: IP #: man/i2prouter.1:47 @@ -399,7 +432,7 @@ #. type: Plain text #: man/i2prouter.1:53 msgid "Dumps the current threads into B." -msgstr "" +msgstr "Despeja os threads atuais no B." #. type: Plain text #: man/i2prouter.1:61 @@ -410,7 +443,7 @@ #: man/i2prouter-nowrapper.1:1 #, no-wrap msgid "I2PROUTER-NOWRAPPER" -msgstr "" +msgstr "I2PROUTER-NOWRAPPER" #. type: Plain text #: man/i2prouter-nowrapper.1:5 @@ -440,6 +473,9 @@ "options. To stop the router, use your browser to access E<.UR " "http://localhost:7657/> the router console E<.UE .>" msgstr "" +"Você deve realmente usar o B(1) script em vez disso. Não há " +"opções. Para parar o roteador, use seu navegador para acessar o E<.UR " +"http://localhost:7657/> o console do roteador E<. UE .>" #. type: Plain text #: man/i2prouter-nowrapper.1:31 diff -Nru i2p-2.4.0/installer/resources/man/eepget.pt.1 i2p-2.5.0/installer/resources/man/eepget.pt.1 --- i2p-2.4.0/installer/resources/man/eepget.pt.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/eepget.pt.1 2024-04-10 02:29:58.000000000 +0000 @@ -17,51 +17,52 @@ Download a file non\-interactively via HTTP. Transfers through both I2P and the regular Internet are supported. .P -Eepget is able to cope with slow or unstable network connections; if a -download is not successful because of a network problem, it will keep -retrying until the whole file has been retrieved (if the \-n option is set). -If supported by the remote server, eepget will instruct the server to -continue the download from the point of interruption. +Eepget é capaz de lidar com conexões de rede lentas ou instáveis; Se um +download não for bem\-sucedido devido a um problema de rede, ele continuará +tentando novamente até que o arquivo inteiro tenha sido recuperado (se a +opção \-n estiver definida). Se suportado pelo servidor remoto, o eepget +instruirá o servidor a continuar o download a partir do ponto de +interrupção. .SH OPÇÕES \fB\-c\fP .TP -Clearnet. Do not use a proxy. Same as \fB\-p\fP :0 . +Clearnet. Não use um proxy. O mesmo que \fB\-p\fP :0 . .TP \fB\-e\fP etag .TP -Sets the etag value in the request headers. +Define o valor etag nos cabeçalhos de solicitação. .TP \fB\-h\fP name=value .TP -Adds an arbitrary request header with the given name and value. +Adiciona um cabeçalho de solicitação arbitrário com o nome e o valor fornecidos. .TP \fB\-l\fP lineLen .TP -Controls the progress display. \fB\ lineLen \fP is the length of one progress line in characters. The default is 40. +Controla a exibição de progresso. \fB\ lineLen \fP é o comprimento de uma linha de progresso em caracteres. O padrão é 40. .TP \fB\-m\fP markSize .TP -Controls the progress display. \fB\ markSize \fP is the number of bytes one '#' character represents. The default is 1024. +Controla a exibição de progresso. \fB\ markSize \fP é o número de bytes que um caractere '#' representa. O padrão é 1024. .TP \fB\-n\fP retries .TP -Specify the number of times to retry downloading if the download isn't successful. If this option is not specified, eepget will not retry. +Especifique o número de vezes que o download for repetido se o download não for bem\-sucedido. Se essa opção não for especificada, o eepget não tentará novamente. .TP \fB\-o\fP file .TP -Sets the output file to write to. If this option is not given, the output filename will be determined by the URL. +Define o arquivo de saída para gravar. Se essa opção não for fornecida, o nome do arquivo de saída será determinado pela URL. .TP \fB\-p\fP proxy_host[:port] .TP -Specify an I2P proxy server (eeproxy) to use. If the port is not specified, eepget will use 4444. If this option is not specified, eepget will use 127.0.0.1:4444. Specify \fB\-c\fP or \fB\-p\fP :0 to disable the eeproxy. +Especifique um servidor proxy I2P (eeproxy) a ser usado. Se a porta não for especificada, eepget usará 4444. Se essa opção não for especificada, eepget usará 127.0.0.1:4444. Especificar \fB\-c\fP ou \fB\-p\fP :0 para desativar o eeproxy. .TP \fB\-t\fP segundos @@ -76,15 +77,15 @@ \fB\-x\fP palavra\-passe .TP -Sets the password for proxy authorization, if required. If a username is specified but not a password, EepGet will prompt for the password. +Define a senha para autorização de proxy, se necessário. Se um nome de usuário for especificado, mas não uma senha, o EepGet solicitará a senha. .SH "STATUS DE SAÍDA" -\fBeepget\fP exits with status zero upon successful transfer and non\-zero if -there were problems with the download. +\fBeepget\fP sai com status zero após a transferência bem\-sucedida e diferente +de zero se houver problemas com o download. .SH "COMUNICAR ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/man/eepget.pt_BR.1 i2p-2.5.0/installer/resources/man/eepget.pt_BR.1 --- i2p-2.4.0/installer/resources/man/eepget.pt_BR.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/eepget.pt_BR.1 2024-04-10 02:29:58.000000000 +0000 @@ -14,54 +14,55 @@ .SH DESCRIÇÃO .P -Download a file non\-interactively via HTTP. Transfers through both I2P and -the regular Internet are supported. +Baixe um arquivo de forma não interativa via HTTP. Transferências através de +I2P e da Internet regular são suportadas. .P -Eepget is able to cope with slow or unstable network connections; if a -download is not successful because of a network problem, it will keep -retrying until the whole file has been retrieved (if the \-n option is set). -If supported by the remote server, eepget will instruct the server to -continue the download from the point of interruption. +Eepget é capaz de lidar com conexões de rede lentas ou instáveis; Se um +download não for bem\-sucedido devido a um problema de rede, ele continuará +tentando novamente até que o arquivo inteiro tenha sido recuperado (se a +opção \-n estiver definida). Se suportado pelo servidor remoto, o eepget +instruirá o servidor a continuar o download a partir do ponto de +interrupção. .SH OPÇÕES \fB\-c\fP .TP -Clearnet. Do not use a proxy. Same as \fB\-p\fP :0 . +Clearnet. Não use um proxy. O mesmo que \fB\-p\fP :0 . .TP \fB\-e\fP etag .TP -Sets the etag value in the request headers. +Define o valor etag nos cabeçalhos de solicitação. .TP \fB\-h\fP nome=valor .TP -Adds an arbitrary request header with the given name and value. +Adiciona um cabeçalho de solicitação arbitrário com o nome e o valor fornecidos. .TP \fB\-l\fP lineLen .TP -Controls the progress display. \fB\ lineLen \fP is the length of one progress line in characters. The default is 40. +Controla a exibição de progresso. \fB\ lineLen \fP é o comprimento de uma linha de progresso em caracteres. O padrão é 40. .TP \fB\-m\fP markSize .TP -Controls the progress display. \fB\ markSize \fP is the number of bytes one '#' character represents. The default is 1024. +Controla a exibição de progresso. \fB\ markSize \fP é o número de bytes que um caractere '#' representa. O padrão é 1024. .TP \fB\-n\fP retries .TP -Specify the number of times to retry downloading if the download isn't successful. If this option is not specified, eepget will not retry. +Especifique o número de vezes que o download for repetido se o download não for bem\-sucedido. Se essa opção não for especificada, o eepget não tentará novamente. .TP \fB\-o\fP arquivo .TP -Sets the output file to write to. If this option is not given, the output filename will be determined by the URL. +Define o arquivo de saída para gravar. Se essa opção não for fornecida, o nome do arquivo de saída será determinado pela URL. .TP \fB\-p\fP proxy_host[:port] .TP -Specify an I2P proxy server (eeproxy) to use. If the port is not specified, eepget will use 4444. If this option is not specified, eepget will use 127.0.0.1:4444. Specify \fB\-c\fP or \fB\-p\fP :0 to disable the eeproxy. +Especifique um servidor proxy I2P (eeproxy) a ser usado. Se a porta não for especificada, eepget usará 4444. Se essa opção não for especificada, eepget usará 127.0.0.1:4444. Especificar \fB\-c\fP ou \fB\-p\fP :0 para desativar o eeproxy. .TP \fB\-t\fP segundos @@ -76,15 +77,15 @@ \fB\-x\fP senha .TP -Sets the password for proxy authorization, if required. If a username is specified but not a password, EepGet will prompt for the password. +Define a senha para autorização de proxy, se necessário. Se um nome de usuário for especificado, mas não uma senha, o EepGet solicitará a senha. .SH "STATUS DE SAÍDA" -\fBeepget\fP exits with status zero upon successful transfer and non\-zero if -there were problems with the download. +\fBeepget\fP sai com status zero após a transferência bem\-sucedida e diferente +de zero se houver problemas com o download. .SH "RELATANDO ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/man/i2prouter-nowrapper.pt.1 i2p-2.5.0/installer/resources/man/i2prouter-nowrapper.pt.1 --- i2p-2.4.0/installer/resources/man/i2prouter-nowrapper.pt.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/i2prouter-nowrapper.pt.1 2024-04-10 02:29:58.000000000 +0000 @@ -17,14 +17,14 @@ roteador não reinicializará quando travar. Ademais, será usada a quantidade de memória padrão. que, talvez, não seja suficiente para a I2P. .P -You should really use the \fBi2prouter\fP(1) script instead. There are no -options. To stop the router, use your browser to access +Você deve realmente usar o \fBi2prouter\fP(1) script em vez disso. Não há +opções. Para parar o roteador, use seu navegador para acessar o .UR http://localhost:7657/ -the router console -.UE . +o console do roteador +. UE . .SH "COMUNICAR ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/man/i2prouter-nowrapper.pt_BR.1 i2p-2.5.0/installer/resources/man/i2prouter-nowrapper.pt_BR.1 --- i2p-2.4.0/installer/resources/man/i2prouter-nowrapper.pt_BR.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/i2prouter-nowrapper.pt_BR.1 2024-04-10 02:29:58.000000000 +0000 @@ -17,14 +17,14 @@ roteador não reinicializará quando travar. Ademais, será usada a quantidade de memória padrão. que, talvez, não seja suficiente para a I2P. .P -You should really use the \fBi2prouter\fP(1) script instead. There are no -options. To stop the router, use your browser to access +Você deve realmente usar o \fBi2prouter\fP(1) script em vez disso. Não há +opções. Para parar o roteador, use seu navegador para acessar o .UR http://localhost:7657/ -the router console -.UE . +o console do roteador +. UE . .SH "RELATANDO ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/man/i2prouter.pt.1 i2p-2.5.0/installer/resources/man/i2prouter.pt.1 --- i2p-2.4.0/installer/resources/man/i2prouter.pt.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/i2prouter.pt.1 2024-04-10 02:29:58.000000000 +0000 @@ -35,19 +35,20 @@ Parar a I2P graciosamente (pode demorar até 11 minutos) .IP \fBinstall\fP -Install initscript to start I2P automatically when the system boots. +Instale o initscript para iniciar o I2P automaticamente quando o sistema for +inicializado. .IP \fBremove\fP -Uninstall initscript that was installed with \fBinstall\fP +Desinstalar o initscript que foi instalado com \fBinstall\fP .IP \fBstatus\fP Imprime se o serviço I2P está em execução. .IP \fBdump\fP -Dumps the current threads into \fBwrapper.log\fP. +Despeja os threads atuais no \fBwrapper.log\fP. .SH "COMUNICAR ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/man/i2prouter.pt_BR.1 i2p-2.5.0/installer/resources/man/i2prouter.pt_BR.1 --- i2p-2.4.0/installer/resources/man/i2prouter.pt_BR.1 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/installer/resources/man/i2prouter.pt_BR.1 2024-04-10 02:29:58.000000000 +0000 @@ -35,19 +35,20 @@ Parar a I2P graciosamente (pode demorar até 11 minutos) .IP \fBinstall\fP -Install initscript to start I2P automatically when the system boots. +Instale o initscript para iniciar o I2P automaticamente quando o sistema for +inicializado. .IP \fBremove\fP -Uninstall initscript that was installed with \fBinstall\fP +Desinstalar o initscript que foi instalado com \fBinstall\fP .IP \fBstatus\fP Imprime se o serviço I2P está em execução. .IP \fBdump\fP -Dumps the current threads into \fBwrapper.log\fP. +Despeja os threads atuais no \fBwrapper.log\fP. .SH "RELATANDO ERROS" -Please enter an issue on +Por favor, insira um problema em .UR https://i2pgit.org/i2p\-hackers/i2p.i2p/\-/issues the I2P GitLab server .UE . diff -Nru i2p-2.4.0/installer/resources/router.testnet.config i2p-2.5.0/installer/resources/router.testnet.config --- i2p-2.4.0/installer/resources/router.testnet.config 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/installer/resources/router.testnet.config 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,48 @@ +# suggestions for a testnet configuration, annotated +# also: +# the transports really benefit from a few ms of latency +# between the routers. On LXC, set: +# tc qdisc add dev eth0 root netem delay 10ms +# or, for example, to drop 2% of packets: +# tc qdisc add dev eth0 root netem delay 10ms 2 + +# this disables the private IP range checks and a whole +# bunch of other stuff to make testnet work better +# recommended even if you're using public IPs +i2np.allowLocal=true +# adjust as necessary +i2np.bandwidth.inboundBurstKBytes=1953105 +i2np.bandwidth.inboundBurstKBytesPerSecond=97655 +i2np.bandwidth.inboundKBytesPerSecond=97605 +i2np.bandwidth.outboundBurstKBytes=1953105 +i2np.bandwidth.outboundBurstKBytesPerSecond=97655 +i2np.bandwidth.outboundKBytesPerSecond=97605 +# you can set some routers to true to test firewalled +i2np.ipv4.firewalled=false +i2np.ipv6.firewalled=false +i2np.lastIPv6Firewalled=false +i2np.upnp.enable=false +# allow everything readable by everybody +i2p.insecureFiles=true +# just point it to nowhere +i2p.reseedURL=https://localhost:3333/foo +# disable IP blocking +router.blocklist.enable=false +# set some to true and some to false so you have floodfills right away +router.floodfillParticipant=false +# prevent leakage to real network +router.networkID=99 +router.newsRefreshFrequency=0 +# prevent RI rekey after a long downtime +router.rebuildKeys=false +# accept tunnels right away +router.rejectStartupTime=20000 +router.reseedDisable=true +router.sharePercentage=80 +router.sybilFrequency=0 +routerconsole.advanced=true +routerconsole.welcomeWizardComplete=true +stat.full=true +# NTP +time.disabled=true +time.sntpServerList=localhost diff -Nru i2p-2.4.0/licenses/LICENSE-Iframe-resizer.txt i2p-2.5.0/licenses/LICENSE-Iframe-resizer.txt --- i2p-2.4.0/licenses/LICENSE-Iframe-resizer.txt 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/licenses/LICENSE-Iframe-resizer.txt 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013-2023 David J. Bradshaw + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff -Nru i2p-2.4.0/licenses/LICENSE-pagedown.txt i2p-2.5.0/licenses/LICENSE-pagedown.txt --- i2p-2.4.0/licenses/LICENSE-pagedown.txt 1970-01-01 00:00:00.000000000 +0000 +++ i2p-2.5.0/licenses/LICENSE-pagedown.txt 2024-04-10 02:29:58.000000000 +0000 @@ -0,0 +1,32 @@ +A javascript port of Markdown, as used on Stack Overflow +and the rest of Stack Exchange network. + +Largely based on showdown.js by John Fraser (Attacklab). + +Original Markdown Copyright (c) 2004-2005 John Gruber + + + +Original Showdown code copyright (c) 2007 John Fraser + +Modifications and bugfixes (c) 2009 Dana Robinson +Modifications and bugfixes (c) 2009-2014 Stack Exchange Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff -Nru i2p-2.4.0/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java i2p-2.5.0/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java --- i2p-2.4.0/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java 2024-04-10 02:29:58.000000000 +0000 @@ -185,6 +185,8 @@ // If we do delay it, getEntry() will have to check if _dbEntry is null and _byteCache // is non-null, and then decompress. byte decompressed[] = DataHelper.decompress(data, curIndex, compressedSize); + if (decompressed.length > RouterInfo.MAX_UNCOMPRESSED_SIZE) + throw new I2NPMessageException("RI too big: " + decompressed.length); _dbEntry.readBytes(new ByteArrayInputStream(decompressed)); } catch (DataFormatException dfe) { throw new I2NPMessageException("Error reading the routerInfo", dfe); diff -Nru i2p-2.4.0/router/java/src/net/i2p/data/router/RouterInfo.java i2p-2.5.0/router/java/src/net/i2p/data/router/RouterInfo.java --- i2p-2.4.0/router/java/src/net/i2p/data/router/RouterInfo.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/data/router/RouterInfo.java 2024-04-10 02:29:58.000000000 +0000 @@ -87,6 +87,15 @@ public static final char CAPABILITY_HIDDEN = 'H'; private static final int MAX_ADDRESSES = 16; + /** + * All legit RIs are currently under 2KB. + * May need to be adjusted if we add a huge new enctype or sigtype. + * Enforced in DatabaseStoreMessage, the transports, and reseed. + * + * @since 0.9.62 + */ + public static final int MAX_UNCOMPRESSED_SIZE = 4*1024; + /** Public string of chars which serve as bandwidth capacity markers * NOTE: individual chars defined in Router.java */ @@ -462,7 +471,6 @@ return true; } - /** * Pull the first workable target address for the given transport. * Use to check for any address. For all addresses, use getTargetAddresses(), @@ -610,10 +618,11 @@ _isValid = DSAEngine.getInstance().verifySignature(_signature, hash, _identity.getSigningPublicKey()); _validated = true; } else { + // doValidate will log doValidate(); } if (!_isValid) { - throw new DataFormatException("Bad sig"); + throw new DataFormatException("Bad RouterInfo signature"); } } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/Router.java i2p-2.5.0/router/java/src/net/i2p/router/Router.java --- i2p-2.4.0/router/java/src/net/i2p/router/Router.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/Router.java 2024-04-10 02:29:58.000000000 +0000 @@ -146,8 +146,7 @@ private static final String PROP_JBIGI = "jbigi.loadedResource"; private static final String PROP_JBIGI_PROCESSOR = "jbigi.lastProcessor"; public static final String UPDATE_FILE = "i2pupdate.zip"; - //// remove after release //// - private static final boolean CONGESTION_CAPS = VersionComparator.comp(CoreVersion.PUBLISHED_VERSION, "0.9.60") >= 0; + private static final boolean CONGESTION_CAPS = true; private static final int SHUTDOWN_WAIT_SECS = 60; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/RouterVersion.java i2p-2.5.0/router/java/src/net/i2p/router/RouterVersion.java --- i2p-2.4.0/router/java/src/net/i2p/router/RouterVersion.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/RouterVersion.java 2024-04-10 02:29:58.000000000 +0000 @@ -1,9 +1,9 @@ package net.i2p.router; /* * free (adj.): unencumbered; not under the control of others - * Written by jrandom in 2003 and released into the public domain - * with no warranty of any kind, either expressed or implied. - * It probably won't make your computer catch on fire, or eat + * Written by jrandom in 2003 and released into the public domain + * with no warranty of any kind, either expressed or implied. + * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/client/ClientConnectionRunner.java i2p-2.5.0/router/java/src/net/i2p/router/client/ClientConnectionRunner.java --- i2p-2.4.0/router/java/src/net/i2p/router/client/ClientConnectionRunner.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/client/ClientConnectionRunner.java 2024-04-10 02:29:58.000000000 +0000 @@ -448,7 +448,6 @@ if (id == null) return; boolean isPrimary = false; - Hash dbid = getDestHash(); for (Iterator iter = _sessions.values().iterator(); iter.hasNext(); ) { SessionParams sp = iter.next(); if (id.equals(sp.sessionId)) { @@ -807,7 +806,7 @@ // the following blocks as described above Destination fromDest = getDestination(message.getSessionId()); if (fromDest != null) - _manager.distributeMessage(fromDest, dest, payload, + _manager.distributeMessage(this, fromDest, dest, payload, id, message.getNonce(), expiration, flags); // else log error? //long timeToDistribute = _context.clock().now() - beforeDistribute; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/client/ClientManager.java i2p-2.5.0/router/java/src/net/i2p/router/client/ClientManager.java --- i2p-2.4.0/router/java/src/net/i2p/router/client/ClientManager.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/client/ClientManager.java 2024-04-10 02:29:58.000000000 +0000 @@ -451,11 +451,13 @@ /** * Distribute message to a local or remote destination. + * + * @param sender non-null * @param msgId the router's ID for this message * @param messageNonce the client's ID for this message * @param flags ignored for local */ - void distributeMessage(Destination fromDest, Destination toDest, Payload payload, + void distributeMessage(ClientConnectionRunner sender, Destination fromDest, Destination toDest, Payload payload, MessageId msgId, long messageNonce, long expiration, int flags) { ClientConnectionRunner runner; if (_ctx.getBooleanProperty(PROP_DISABLE_LOOPBACK)) { @@ -467,22 +469,19 @@ if (runner != null) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Message " + msgId + " is targeting a local destination. distribute it as such"); - ClientConnectionRunner sender = getRunner(fromDest); - if (sender == null) { - // sender went away - return; + if (runner != sender) { + // run this inline so we don't clog up the job queue + Job j = new DistributeLocal(toDest, runner, sender, fromDest, payload, msgId, messageNonce); + //_ctx.jobQueue().addJob(j); + j.runJob(); + } else { + if (_log.shouldWarn()) + _log.warn("Loopback attempt from client " + fromDest.getHash()); + int rc = MessageStatusMessage.STATUS_SEND_FAILURE_LOOPBACK; + sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, rc); } - // run this inline so we don't clog up the job queue - Job j = new DistributeLocal(toDest, runner, sender, fromDest, payload, msgId, messageNonce); - //_ctx.jobQueue().addJob(j); - j.runJob(); } else if (!_metaDests.isEmpty() && _metaDests.contains(toDest)) { // meta dests don't have runners but are local, and you can't send to them - ClientConnectionRunner sender = getRunner(fromDest); - if (sender == null) { - // sender went away - return; - } int rc = MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET; sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, rc); } else { @@ -788,7 +787,7 @@ ClientConnectionRunner runner = getRunner(destHash); if (runner == null){ if (_log.shouldLog(Log.WARN)) - _log.warn("ClientManager got a null runner in getClientFloodfillNetworkDatabaseFacade for " + destHash); + _log.warn("ClientManager got a null runner in getClientFloodfillNetworkDatabaseFacade for " + destHash); return null; } if (_log.shouldLog(Log.DEBUG)) diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java i2p-2.5.0/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java --- i2p-2.4.0/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java 2024-04-10 02:29:58.000000000 +0000 @@ -298,6 +298,7 @@ * * @param destHash destination hash associated with the client who's subDb we're looking for * @return the netdb or null + * @since 0.9.61 */ @Override public FloodfillNetworkDatabaseFacade getClientFloodfillNetworkDatabaseFacade(Hash destHash) { @@ -311,6 +312,7 @@ * get all the primary hashes for all the clients and return them as a set * * @return all the hashes or an empty set, non-null + * @since 0.9.61 */ @Override public Set getPrimaryHashes() { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/client/ClientMessageEventListener.java i2p-2.5.0/router/java/src/net/i2p/router/client/ClientMessageEventListener.java --- i2p-2.4.0/router/java/src/net/i2p/router/client/ClientMessageEventListener.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/client/ClientMessageEventListener.java 2024-04-10 02:29:58.000000000 +0000 @@ -829,9 +829,11 @@ protected void handleGetBWLimits(GetBandwidthLimitsMessage message) { if (_log.shouldLog(Log.INFO)) _log.info("Got BW Limits request"); - int in = _context.bandwidthLimiter().getInboundKBytesPerSecond() * 4 / 7; - int out = _context.bandwidthLimiter().getOutboundKBytesPerSecond() * 4 / 7; - BandwidthLimitsMessage msg = new BandwidthLimitsMessage(in, out); + int in = _context.bandwidthLimiter().getInboundKBytesPerSecond(); + int out = _context.bandwidthLimiter().getOutboundKBytesPerSecond(); + int inb = _context.bandwidthLimiter().getInboundBurstKBytesPerSecond(); + int outb = _context.bandwidthLimiter().getOutboundBurstKBytesPerSecond(); + BandwidthLimitsMessage msg = new BandwidthLimitsMessage(in * 4 / 7, out * 4 / 7, in, inb, out, outb, 1); try { _runner.doSend(msg); } catch (I2CPMessageException ime) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/crypto/ratchet/Elg2KeyFactory.java i2p-2.5.0/router/java/src/net/i2p/router/crypto/ratchet/Elg2KeyFactory.java --- i2p-2.4.0/router/java/src/net/i2p/router/crypto/ratchet/Elg2KeyFactory.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/crypto/ratchet/Elg2KeyFactory.java 2024-04-10 02:29:58.000000000 +0000 @@ -26,6 +26,7 @@ private final RouterContext _context; private final Log _log; + private final Elligator2 _elg2; private final int _minSize; private final int _maxSize; private final int _calcDelay; @@ -45,6 +46,7 @@ super("EDH Precalc"); _context = ctx; _log = ctx.logManager().getLog(Elg2KeyFactory.class); + _elg2 = new Elligator2(ctx); ctx.statManager().createRateStat("crypto.EDHGenerateTime", "How long it takes to create x and X", "Encryption", new long[] { 60*60*1000 }); ctx.statManager().createRateStat("crypto.EDHUsed", "Need a DH from the queue", "Encryption", new long[] { 60*60*1000 }); ctx.statManager().createRateStat("crypto.EDHReused", "Unused DH requeued", "Encryption", new long[] { 60*60*1000 }); @@ -150,7 +152,7 @@ int i = 0; do { rv = _context.keyGenerator().generatePKIKeys(EncType.ECIES_X25519); - enc = Elligator2.encode(rv.getPublic(), _context.random().nextBoolean()); + enc = _elg2.encode(rv.getPublic()); i++; if (enc == null && RETURN_UNUSED_TO_XDH) _context.commSystem().getXDHFactory().returnUnused(rv); diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/crypto/ratchet/Elligator2.java i2p-2.5.0/router/java/src/net/i2p/router/crypto/ratchet/Elligator2.java --- i2p-2.4.0/router/java/src/net/i2p/router/crypto/ratchet/Elligator2.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/crypto/ratchet/Elligator2.java 2024-04-10 02:29:58.000000000 +0000 @@ -110,7 +110,9 @@ * It should be unpredictable, because it's recoverable from the representative. * * @return "representative", little endian or null on failure + * @deprecated */ + @Deprecated protected static byte[] encode(PublicKey point, boolean alternative) { return encode(point, alternative, (byte) 0); } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/dummy/DummyClientManagerFacade.java i2p-2.5.0/router/java/src/net/i2p/router/dummy/DummyClientManagerFacade.java --- i2p-2.4.0/router/java/src/net/i2p/router/dummy/DummyClientManagerFacade.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/dummy/DummyClientManagerFacade.java 2024-04-10 02:29:58.000000000 +0000 @@ -53,9 +53,17 @@ public SessionKeyManager getClientSessionKeyManager(Hash _dest) { return null; } public void requestLeaseSet(Hash dest, LeaseSet set) {} + + /** + * @since 0.9.61 + */ public FloodfillNetworkDatabaseFacade getClientFloodfillNetworkDatabaseFacade(Hash dbid) { return null; } + + /** + * @since 0.9.61 + */ public Set getPrimaryHashes() { return Collections.emptySet(); } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java 2024-04-10 02:29:58.000000000 +0000 @@ -47,7 +47,8 @@ //_log.info("Lease " + key + " is expiring, so lets look for it again", new Exception("Expire and search")); //_facade.lookupLeaseSet(key, null, null, RERUN_DELAY_MS); } - _log.info("(dbid: " + _facade + if (_log.shouldInfo()) + _log.info("(dbid: " + _facade + "; db size: " + _facade.getKnownLeaseSets() + ") Leases expired: " + toExpire); //_facade.queueForExploration(toExpire); // don't do explicit searches, just explore passively diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java 2024-04-10 02:29:58.000000000 +0000 @@ -35,7 +35,6 @@ */ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacade { public static final char CAPABILITY_FLOODFILL = 'f'; - private static final String MINIMUM_SUBDB_PEERS = "router.subDbMinimumPeers"; private final Map _activeFloodQueries; private boolean _floodfillEnabled; private final Set _verifiesInProgress; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseSegmentor.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseSegmentor.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseSegmentor.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseSegmentor.java 2024-04-10 02:29:58.000000000 +0000 @@ -117,7 +117,7 @@ * the dbid is null. * * @since 0.9.61 - * @return may be null if the client netDb does not exist + * @return non-null, the main netDb if the client netDb does not exist */ @Override public NetworkDatabaseFacade clientNetDB(Hash id) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java 2024-04-10 02:29:58.000000000 +0000 @@ -27,7 +27,6 @@ import net.i2p.data.i2np.TunnelGatewayMessage; import net.i2p.router.Job; import net.i2p.router.JobImpl; -import net.i2p.router.NetworkDatabaseFacade; import net.i2p.router.OutNetMessage; import net.i2p.router.Router; import net.i2p.router.RouterContext; @@ -336,8 +335,8 @@ } } } - if (shouldStore && _log.shouldWarn()) - _log.warn("(dbid: " + _facade + if (shouldStore && _log.shouldDebug()) + _log.debug("(dbid: " + _facade + ") Handling new unsolicited dbStore of router " + key.toBase64()); } else if (prevNetDb.getPublished() >= ri.getPublished()) { shouldStore = false; @@ -482,7 +481,6 @@ msg.setMessageId(_message.getReplyToken()); // Randomize for a little protection against clock-skew fingerprinting. // But the "arrival" isn't used for anything, right? - // TODO just set to 0? // TODO we have no session to garlic wrap this with, needs new message msg.setArrival(getContext().clock().now() - getContext().random().nextInt(3*1000)); // may be null @@ -537,7 +535,12 @@ } return; } - boolean isEstab = getContext().commSystem().isEstablished(toPeer); + DatabaseEntry entry = _message.getEntry(); + int type = entry.getType(); + // only send direct for RI replies or non-tunnel + boolean isEstab = (type == DatabaseEntry.KEY_TYPE_ROUTERINFO || replyTunnel == null) && + getContext().commSystem().isEstablished(toPeer); +/* if (!isEstab && replyTunnel != null) { DatabaseEntry entry = _message.getEntry(); int type = entry.getType(); @@ -590,6 +593,7 @@ } } } +*/ if (isEstab && !_facade.isClientDb()) { I2NPMessage out1 = msg; I2NPMessage out2 = msg2; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java 2024-04-10 02:29:58.000000000 +0000 @@ -14,7 +14,6 @@ import net.i2p.crypto.SigType; import net.i2p.data.Base64; import net.i2p.data.DataHelper; -import net.i2p.data.Destination; import net.i2p.data.Hash; import net.i2p.data.i2np.DatabaseLookupMessage; import net.i2p.data.i2np.I2NPMessage; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java 2024-04-10 02:29:58.000000000 +0000 @@ -8,7 +8,6 @@ * */ -import java.io.File; import java.io.IOException; import java.io.Writer; import java.util.Collection; @@ -137,7 +136,7 @@ protected final static int MIN_REMAINING_ROUTERS = MIN_RESEED - 10; /** - * limits for accepting a dbDtore of a router (unless we dont + * limits for accepting a dbStore of a router (unless we don't * know anyone or just started up) -- see validate() below */ private final static long ROUTER_INFO_EXPIRATION = 27*60*60*1000l; @@ -1160,7 +1159,7 @@ throw new IllegalArgumentException("Invalid store attempt - " + err); if (_log.shouldDebug()) - _log.debug("Storing LS to the persistent data store..."); + _log.debug("Storing LS to the data store..."); _ds.put(key, leaseSet); if (encls != null) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java 2024-04-10 02:29:58.000000000 +0000 @@ -188,7 +188,7 @@ /** * Create a single key and tag, for receiving a single encrypted message, - * and register it with the client's session key manager, to expire in the time specified. + * and register it with our router's session key manager, to expire in the time specified. * The recipient can then send us an AES- or ChaCha- encrypted message, * avoiding full ElGamal or ECIES. * diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java 2024-04-10 02:29:58.000000000 +0000 @@ -541,6 +541,12 @@ * @since 0.9.58 */ public boolean read() { + if (_routerFile.length() > RouterInfo.MAX_UNCOMPRESSED_SIZE) { + if (_log.shouldWarn()) + _log.warn("RI file too big " + _routerFile.length() + ": " + _routerFile); + _routerFile.delete(); + return false; + } if (!shouldRead()) return false; if (_log.shouldLog(Log.DEBUG)) _log.debug("Reading " + _routerFile); diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/reseed/ReseedChecker.java 2024-04-10 02:29:58.000000000 +0000 @@ -43,7 +43,7 @@ /** * All reseeding must be done through this instance. - * Access through context.netDbSegmentor().reseedChecker(), others should not instantiate + * Access through context.netDb().reseedChecker(), others should not instantiate * * @since 0.9 */ diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java i2p-2.5.0/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java --- i2p-2.4.0/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java 2024-04-10 02:29:58.000000000 +0000 @@ -24,6 +24,7 @@ import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.data.Hash; +import net.i2p.data.router.RouterInfo; import net.i2p.router.RouterClock; import net.i2p.router.RouterContext; import net.i2p.router.util.EventLog; @@ -111,8 +112,9 @@ // // https url:port, ending with "/" // certificates/reseed/ // certificates/ssl/ // notes // ---------------------------------- ------------------------ ------------------------- --------------- - "https://reseed.us.prestium.org/" + ',' + // null_at_i2pmail.org.crt // CA - "https://reseed.is.prestium.org/" + ',' + // reheatedburger_at_protonmail.com.crt // CA + "https://reseed.stormycloud.org/" + ',' + // admin_at_stormycloud.org.crt // CA + //"https://reseed.us.prestium.org/" + ',' + // null_at_i2pmail.org.crt // CA + //"https://reseed.is.prestium.org/" + ',' + // reheatedburger_at_protonmail.com.crt // CA "https://i2p.ghativega.in/" + ',' + // arnavbhatt288_at_mail.i2p.crt // CA "https://reseed-pl.i2pd.xyz/" + ',' + // r4sas-reseed_at_mail.i2p.crt // CA "https://reseed-fr.i2pd.xyz/" + ',' + // r4sas-reseed_at_mail.i2p.crt // CA @@ -911,7 +913,7 @@ String name = f.getName(); if (name.length() != ROUTERINFO_PREFIX.length() + 44 + ROUTERINFO_SUFFIX.length() || name.equals(ourB64) || - f.length() > 10*1024 || + f.length() > RouterInfo.MAX_UNCOMPRESSED_SIZE || f.lastModified() < minTime || !name.startsWith(ROUTERINFO_PREFIX) || !name.endsWith(ROUTERINFO_SUFFIX) || @@ -1236,7 +1238,7 @@ System.exit(1); } String[] urls = (args.length > 0) ? args : DataHelper.split(DEFAULT_SSL_SEED_URL, ","); - int pass = 0, fail = 0; + int pass = 0, warn = 0, fail = 0; SSLEepGet.SSLState sslState = null; I2PAppContext ctx = I2PAppContext.getGlobalContext(); for (String url : urls) { @@ -1254,6 +1256,7 @@ } else { get = new SSLEepGet(ctx, su3.getPath(), url, sslState); } + long start = System.currentTimeMillis(); if (get.fetch()) { int rc = get.getStatusCode(); if (rc == 200) { @@ -1288,6 +1291,11 @@ } else if (ri >= 50) { System.out.println("Test passed for " + host + ", returned " + ri + " router infos"); pass++; + long time = System.currentTimeMillis() - start; + if (time > 30*1000) { + System.out.println("Test very slow for " + host + ", took " + DataHelper.formatDuration(time)); + warn++; + } } else { System.out.println("Test failed for " + host + ", returned only " + ri + " router infos"); fail++; @@ -1316,7 +1324,7 @@ } System.out.println(); } - System.out.println("Passed: " + pass + "; Failed: " + fail); + System.out.println("Passed: " + pass + "; Slow: " + warn + "; Failed: " + fail); if (fail > 0) System.exit(1); } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java i2p-2.5.0/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java --- i2p-2.4.0/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java 2024-04-10 02:29:58.000000000 +0000 @@ -159,6 +159,8 @@ else capacity -= PENALTY_CAP_D; } + } else if (caps.indexOf(Router.CAPABILITY_NO_TUNNELS) >= 0) { + capacity = 0; } } else { capacity -= PENALTY_NO_RI; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/startup/BootNetworkDbJob.java i2p-2.5.0/router/java/src/net/i2p/router/startup/BootNetworkDbJob.java --- i2p-2.4.0/router/java/src/net/i2p/router/startup/BootNetworkDbJob.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/startup/BootNetworkDbJob.java 2024-04-10 02:29:58.000000000 +0000 @@ -10,7 +10,6 @@ import net.i2p.router.JobImpl; import net.i2p.router.RouterContext; -import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseSegmentor; /** start up the network database */ class BootNetworkDbJob extends JobImpl { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java i2p-2.5.0/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java 2024-04-10 02:29:58.000000000 +0000 @@ -9,6 +9,7 @@ import net.i2p.router.RouterContext; import net.i2p.router.transport.FIFOBandwidthLimiter.Request; import net.i2p.util.Log; +import net.i2p.util.SyntheticREDQueue; /** * Thread that runs several times a second to "give" bandwidth to diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/SyntheticREDQueue.java i2p-2.5.0/router/java/src/net/i2p/router/transport/SyntheticREDQueue.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/SyntheticREDQueue.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/SyntheticREDQueue.java 1970-01-01 00:00:00.000000000 +0000 @@ -1,374 +0,0 @@ -package net.i2p.router.transport; - -import net.i2p.I2PAppContext; -import net.i2p.data.DataHelper; -import net.i2p.util.BandwidthEstimator; -import net.i2p.util.Log; - -/** - * A "synthetic" queue in that it doesn't actually queue anything. - * Actual queueing is assumed to be "dowstream" of this. - * - * Maintains an average estimated "queue size" assuming a constant output rate - * declared in the constructor. The queue size is measured in bytes. - * - * With offer(), will return true for "accepted" or false for "dropped", - * based on the RED algorithm which uses the current average queue size - * and the offered data size to calculate a drop probability. - * Bandwidth is not directly used in the RED algorithm, except to - * synthetically calculate an average queue size assuming the - * queue is being drained precisely at that rate, byte-by-byte - * (not per-packet). - * - * addSample() unconditionally accepts the packet. - * - * Also maintains a Westwood+ bandwidth estimator. - * The bandwidth and queue size estimates are only updated if the - * packet is "accepted". - * - * The average queue size is calculated in the same manner as the - * bandwidth, with an update every WESTWOOD_RTT_MIN ms. - * Both estimators use - * a first stage anti-aliasing low pass filter based on RTT, - * and the time-varying Westwood filter based on inter-arrival time. - * - * Ref: Random Early Detection Gateways for Congestion Avoidance - * Sally Floyd and Van Jacobson - * - * Ref: TCP Westwood: End-to-End Congestion Control for Wired/Wireless Networks - * Casetti et al - * (Westwood) - * - * Ref: End-to-End Bandwidth Estimation for Congestion Control in Packet Networks - * Grieco and Mascolo - * (Westwood+) - * - * Adapted from: Linux kernel tcp_westwood.c (GPLv2) - * - * @since 0.9.50 adapted from streaming - */ -class SyntheticREDQueue implements BandwidthEstimator { - - private final I2PAppContext _context; - private final Log _log; - - private long _tAck; - // bw_est, bw_ns_est - private float _bKFiltered, _bK_ns_est; - // bk - private int _acked; - - // RED vars - // pkts since last dropped pkt - private int _count = -1; - // smoothed average queue size in bytes - private float _avgQSize; - // last sample queue size in bytes - private float _qSize; - // current interval newly queued in bytes, since the last updateQSize() - private int _newDataSize; - // last time _avgQSize calculated - private long _tQSize; - // min queue size threshold, in bytes, to start dropping - private final int _minth; - // max queue size, in bytes, before dropping everything - private final int _maxth; - // bandwidth in bytes per second, as passed to the constructor. - private final int _bwBps; - // bandwidth in bytes per ms. The queue is drained at this rate. - private final float _bwBpms; - // As in RED paper - private static final float MAXP = 0.02f; - - // As in kernel tcp_westwood.c - private static final int DECAY_FACTOR = 8; - private static final int WESTWOOD_RTT_MIN = 500; - // denominator of time, 1/x seconds of traffic in the queue - private static final int DEFAULT_LOW_THRESHOLD = 13; - // denominator of time, 1/x seconds of traffic in the queue - private static final int DEFAULT_HIGH_THRESHOLD = 3; - - /** - * Default thresholds. - * Min: 100 ms of traffic; max: 500 ms. - * - * @param bwBps the output rate of the queue in Bps - */ - SyntheticREDQueue(I2PAppContext ctx, int bwBps) { - // the goal is to drop here rather than let the traffic - // get through to UDP-Sender CoDel and get dropped there, - // when we're at the default 80% share or below. - // That CoDel starts dropping when above 100 ms latency for 500 ms. - // let's try the same 100 ms of traffic here. - this(ctx, bwBps, bwBps / DEFAULT_LOW_THRESHOLD, bwBps / DEFAULT_HIGH_THRESHOLD); - } - - /** - * Specified queue size thresholds. - * offer() drops a 1024 byte packet at 2% probability just lower than maxThKB, - * and at 100% probability higher than maxThKB. - * - * @param bwBps the output rate of the queue in Bps - * @param minThB the minimum queue size to start dropping in Bytes - * @param maxThB the queue size to drop everything in Bytes - */ - SyntheticREDQueue(I2PAppContext ctx, int bwBps, int minThB, int maxThB) { - _log = ctx.logManager().getLog(SyntheticREDQueue.class); - _context = ctx; - // assume we're about to send something - _tAck = ctx.clock().now(); - _acked = -1; - _minth = minThB; - _maxth = maxThB; - _bwBps = bwBps; - _bwBpms = bwBps / 1000f; - _tQSize = _tAck; - if (_log.shouldDebug()) - _log.debug("Configured " + bwBps + " BPS, min: " + minThB + " B, max: " + maxThB + " B"); - } - - /** - * - * Nominal bandwidth limit in bytes per second, as passed to the constructor. - * - */ - public int getMaxBandwidth() { - return _bwBps; - } - - /** - * Unconditional, never drop. - * The queue size and bandwidth estimates will be updated. - */ - public void addSample(int size) { - offer(size, 0); - } - - /** - * Should we drop this packet? - * If accepted, the queue size and bandwidth estimates will be updated. - * - * @param size how many bytes to be offered - * @param factor how to adjust the size for the drop probability calculation, - * or 1.0 for standard probability. 0 to prevent dropping. - * Does not affect bandwidth calculations. - * @return true for accepted, false for drop - */ - public boolean offer(int size, float factor) { - long now = _context.clock().now(); - return addSample(size, factor, now); - } - - private synchronized boolean addSample(int acked, float factor, long now) { - if (_acked < 0) { - // first sample - // use time since constructed as the RTT - long deltaT = Math.max(now - _tAck, WESTWOOD_RTT_MIN); - float bkdt = ((float) acked) / deltaT; - _bKFiltered = bkdt; - _bK_ns_est = bkdt; - _acked = 0; - _tAck = now; - _tQSize = now; - _newDataSize = acked; - if (_log.shouldDebug()) - _log.debug("first sample bytes: " + acked + " deltaT: " + deltaT + ' ' + this); - return true; - } else { - // update queue size average if necessary - // the current sample is not included in the calculation - long deltaT = now - _tQSize; - if (deltaT > WESTWOOD_RTT_MIN) - updateQSize(now, deltaT); - if (factor > 0) { - // drop calculation - if (_avgQSize > _maxth) { - if (_log.shouldWarn()) - _log.warn("drop bytes (qsize): " + acked + ' ' + this); - _count = 0; - return false; - } - if (_avgQSize > _minth) { - _count++; - float pb = (acked / 1024f) * factor * MAXP * (_avgQSize - _minth) / (_maxth - _minth); - float pa = pb / (1 - (_count * pb)); - float rand = _context.random().nextFloat(); - if (rand < pa) { - if (_log.shouldWarn()) - _log.warn("drop bytes (prob): " + acked + " factor " + factor + " prob: " + pa + " deltaT: " + deltaT + ' ' + this); - _count = 0; - return false; - } - _count = -1; - } - } - // accepted - _newDataSize += acked; - _acked += acked; - // update bandwidth estimate if necessary - deltaT = now - _tAck; - if (deltaT >= WESTWOOD_RTT_MIN) - computeBWE(now, (int) deltaT); - if (_log.shouldDebug()) - _log.debug("accept bytes: " + acked + " factor " + factor + ' ' + this); - return true; - } - } - - /** - * @return the current bandwidth estimate in bytes/ms. - */ - public float getBandwidthEstimate() { - long now = _context.clock().now(); - // anti-aliasing filter - // As in kernel tcp_westwood.c - // and the Westwood+ paper - synchronized(this) { - long deltaT = now - _tAck; - if (deltaT >= WESTWOOD_RTT_MIN) - return computeBWE(now, (int) deltaT); - return _bKFiltered; - } - } - - /** - * @return the current queue size estimate in bytes. - */ - public float getQueueSizeEstimate() { - long now = _context.clock().now(); - // anti-aliasing filter - // As in kernel tcp_westwood.c - // and the Westwood+ paper - synchronized(this) { - long deltaT = now - _tQSize; - if (deltaT >= WESTWOOD_RTT_MIN) - updateQSize(now, deltaT); - return _avgQSize; - } - } - - private synchronized float computeBWE(final long now, final int rtt) { - if (_acked < 0) - return 0.0f; // nothing ever sampled - updateBK(now, _acked, rtt); - _acked = 0; - return _bKFiltered; - } - - /** - * Optimized version of updateBK with packets == 0 - */ - private void decay() { - _bK_ns_est *= (DECAY_FACTOR - 1) / (float) DECAY_FACTOR; - _bKFiltered = westwood_do_filter(_bKFiltered, _bK_ns_est); - } - - private void decayQueue(int rtt) { - _qSize -= rtt * _bwBpms; - if (_qSize < 1) - _qSize = 0; - _avgQSize = westwood_do_filter(_avgQSize, _qSize); - } - - /** - * Here we insert virtual null samples if necessary as in Westwood, - * And use a very simple EWMA (exponential weighted moving average) - * time-varying filter, as in kernel tcp_westwood.c - * - * @param time the time of the measurement - * @param packets number of bytes acked - * @param rtt current rtt - */ - private void updateBK(long time, int packets, int rtt) { - long deltaT = time - _tAck; - if (rtt < WESTWOOD_RTT_MIN) - rtt = WESTWOOD_RTT_MIN; - if (deltaT > 2 * rtt) { - // Decay with virtual null samples as in the Westwood paper - int numrtts = Math.min((int) ((deltaT / rtt) - 1), 2 * DECAY_FACTOR); - for (int i = 0; i < numrtts; i++) { - if (_bKFiltered <= 0) - break; - decay(); - } - deltaT -= numrtts * rtt; - //if (_log.shouldDebug()) - // _log.debug("decayed " + numrtts + " times, new _bK_ns_est: " + _bK_ns_est + ' ' + this); - } - float bkdt; - if (packets > 0) { - // As in kernel tcp_westwood.c - bkdt = ((float) packets) / deltaT; - _bK_ns_est = westwood_do_filter(_bK_ns_est, bkdt); - _bKFiltered = westwood_do_filter(_bKFiltered, _bK_ns_est); - } else { - bkdt = 0; - decay(); - } - _tAck = time; - //if (_log.shouldDebug()) - // _log.debug("computeBWE bytes: " + packets + " deltaT: " + deltaT + - // " bk/deltaT: " + bkdt + " _bK_ns_est: " + _bK_ns_est + ' ' + this); - } - - - /** - * Here we insert virtual null samples if necessary as in Westwood, - * And use a very simple EWMA (exponential weighted moving average) - * time-varying filter, as in kernel tcp_westwood.c - * - * @param time the time of the measurement - * @param deltaT at least WESTWOOD_RTT_MIN - */ - private void updateQSize(long time, long deltaT) { - long origDT = deltaT; - if (deltaT > 2 * WESTWOOD_RTT_MIN) { - // Decay with virtual null samples as in the Westwood paper - int numrtts = Math.min((int) ((deltaT / WESTWOOD_RTT_MIN) - 1), 2 * DECAY_FACTOR); - for (int i = 0; i < numrtts; i++) { - if (_avgQSize <= 0) - break; - decayQueue(WESTWOOD_RTT_MIN); - } - deltaT -= numrtts * WESTWOOD_RTT_MIN; - //if (_log.shouldDebug()) - // _log.debug("decayed " + numrtts + " times, new _bK_ns_est: " + _bK_ns_est + ' ' + this); - } - int origNDS = _newDataSize; - float newQSize = _newDataSize; - if (_newDataSize > 0) { - newQSize -= deltaT * _bwBpms; - if (newQSize < 1) - newQSize = 0; - _qSize = westwood_do_filter(_qSize, newQSize); - _avgQSize = westwood_do_filter(_avgQSize, _qSize); - _newDataSize = 0; - } else { - decayQueue((int) deltaT); - } - _tQSize = time; - if (_log.shouldDebug()) - _log.debug("computeQS deltaT: " + origDT + - " newData: " + origNDS + - " newQsize: " + newQSize + " qSize: " + _qSize + ' ' + this); - } - - /** - * As in kernel tcp_westwood.c - */ - private static float westwood_do_filter(float a, float b) { - return (((DECAY_FACTOR - 1) * a) + b) / DECAY_FACTOR; - } - - @Override - public synchronized String toString() { - return "SREDQ[" + - //" _bKFiltered " + _bKFiltered + - //" _tAck " + _tAck + "; " + - //" _tQSize " + _tQSize + - ' ' + DataHelper.formatSize2Decimal((long) (_bKFiltered * 1000), false) + - "Bps, avg_qsize " + - DataHelper.formatSize2((long) _avgQSize, false) + - "B]"; - } -} diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/TransportManager.java i2p-2.5.0/router/java/src/net/i2p/router/transport/TransportManager.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/TransportManager.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/TransportManager.java 2024-04-10 02:29:58.000000000 +0000 @@ -268,7 +268,7 @@ private void configTransports() { Transport udp = null; if (_enableUDP) { - boolean enableSSU1 = _context.getBooleanProperty(PROP_ENABLE_SSU1); + boolean enableSSU1 = false; //_context.getBooleanProperty(PROP_ENABLE_SSU1); boolean enableSSU2 = _context.getBooleanPropertyDefaultTrue(PROP_ENABLE_SSU2); DHSessionKeyBuilder.PrecalcRunner dh = enableSSU1 ? _dhThread : null; X25519KeyFactory xdh = enableSSU2 ? _xdhThread : null; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java 2024-04-10 02:29:58.000000000 +0000 @@ -674,7 +674,7 @@ } _aliceIdent = ri.getIdentity(); Hash h = _aliceIdent.calculateHash(); - // this sets the reasonH + // this sets the reason boolean ok = verifyInbound(h); if (!ok) throw new DataFormatException("NTCP2 verifyInbound() fail"); @@ -689,6 +689,13 @@ throw new DataFormatException(mismatchMessage + ri); } + if (ri.getCapabilities().equals("LU") && ri.getVersion().equals("0.9.56")) { + _context.banlist().banlistRouter(h, "Slow", null, + null, _context.clock().now() + 2*60*60*1000); + _msg3p2FailReason = NTCPConnection.REASON_BANNED; + throw new DataFormatException("Old and slow: " + h); + } + try { RouterInfo old = _context.netDb().store(h, ri); if (flood && !ri.equals(old)) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/NTCP2Payload.java i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/NTCP2Payload.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/NTCP2Payload.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/NTCP2Payload.java 2024-04-10 02:29:58.000000000 +0000 @@ -117,10 +117,12 @@ case BLOCK_ROUTERINFO: int flag = payload[i] & 0xff; + if (len - 1 > RouterInfo.MAX_UNCOMPRESSED_SIZE) + throw new DataFormatException("RI too big: " + (len - 1)); RouterInfo alice = new RouterInfo(); ByteArrayInputStream bais = new ByteArrayInputStream(payload, i + 1, len - 1); alice.readBytes(bais, true); - cb.gotRI(alice, isHandshake, (flag & 0x01) != 0); + cb.gotRI(alice, isHandshake, (flag & 0x01) != 0 && len < 3*1024); break; case BLOCK_I2NP: diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/OutboundNTCP2State.java i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/OutboundNTCP2State.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/ntcp/OutboundNTCP2State.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/ntcp/OutboundNTCP2State.java 2024-04-10 02:29:58.000000000 +0000 @@ -214,6 +214,7 @@ } byte[] bk = Base64.decode(s); if (bk == null || bk.length != KEY_SIZE || + (bk[KEY_SIZE - 1] & 0x80) != 0 || DataHelper.eq(bk, 0, ZEROKEY, 0, KEY_SIZE)) { fail("bad NTCP2 S: " + s); return; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java 2024-04-10 02:29:58.000000000 +0000 @@ -70,12 +70,10 @@ private final RouterContext _context; private final Log _log; private final UDPTransport _transport; - private final PacketBuilder _builder; private final int _networkID; // SSU 2 private final PacketBuilder2 _builder2; - private final boolean _enableSSU2; private final Map _outboundTokens; private final Map _inboundTokens; private final ObjectCounter _terminationCounter; @@ -122,7 +120,7 @@ /** * Temporary inbound bans after previous IB failure, to prevent excessive DH. - * SSU 1 or 2. Value is expiration time. + * SSU 2. Value is expiration time. */ private final Map _inboundBans; @@ -130,9 +128,6 @@ private final Object _activityLock; private int _activity; - /** "bloom filter" */ - private final DecayingBloomFilter _replayFilter; - /** max outbound in progress - max inbound is half of this */ private final int DEFAULT_MAX_CONCURRENT_ESTABLISH; private static final int DEFAULT_LOW_MAX_CONCURRENT_ESTABLISH = SystemVersion.isSlow() ? 20 : 40; @@ -173,15 +168,6 @@ private static final int IB_BAN_TIME = 15*60*1000; - /** - * Java I2P has always parsed the length of the extended options field, - * but i2pd hasn't recognized it until this release. - * No matter, the options weren't defined until this release anyway. - * - */ - private static final String VERSION_ALLOW_EXTENDED_OPTIONS = "0.9.24"; - private static final String PROP_DISABLE_EXT_OPTS = "i2np.udp.disableExtendedOptions"; - // SSU 2 private static final int MIN_TOKENS = 128; private static final int MAX_TOKENS = 2048; @@ -197,9 +183,7 @@ _log = ctx.logManager().getLog(EstablishmentManager.class); _networkID = ctx.router().getNetworkID(); _transport = transport; - _builder = transport.getBuilder(); _builder2 = transport.getBuilder2(); - _enableSSU2 = _builder2 != null; _inboundStates = new ConcurrentHashMap(); _outboundStates = new ConcurrentHashMap(); _queuedOutbound = new ConcurrentHashMap>(); @@ -207,20 +191,13 @@ _outboundByClaimedAddress = new ConcurrentHashMap(); _outboundByHash = new ConcurrentHashMap(); _inboundBans = new LHMCache(32); - if (_enableSSU2) { - // roughly scale based on expected traffic - int tokenCacheSize = Math.max(MIN_TOKENS, Math.min(MAX_TOKENS, 3 * _transport.getMaxConnections() / 4)); - _inboundTokens = new InboundTokens(tokenCacheSize); - _outboundTokens = new LHMCache(tokenCacheSize); - _terminationCounter = new ObjectCounter(); - } else { - _inboundTokens = null; - _outboundTokens = null; - _terminationCounter = null; - } + // roughly scale based on expected traffic + int tokenCacheSize = Math.max(MIN_TOKENS, Math.min(MAX_TOKENS, 3 * _transport.getMaxConnections() / 4)); + _inboundTokens = new InboundTokens(tokenCacheSize); + _outboundTokens = new LHMCache(tokenCacheSize); + _terminationCounter = new ObjectCounter(); _activityLock = new Object(); - _replayFilter = new DecayingHashSet(ctx, 10*60*1000, 8, "SSU-DH-X"); DEFAULT_MAX_CONCURRENT_ESTABLISH = Math.max(DEFAULT_LOW_MAX_CONCURRENT_ESTABLISH, Math.min(DEFAULT_HIGH_MAX_CONCURRENT_ESTABLISH, ctx.bandwidthLimiter().getOutboundKBytesPerSecond() / 2)); @@ -228,7 +205,6 @@ _context.statManager().createRateStat("udp.outboundEstablishTime", "How long it takes for a new outbound session to be established", "udp", UDPTransport.RATES); //_context.statManager().createRateStat("udp.inboundEstablishFailedState", "What state a failed inbound establishment request fails in", "udp", UDPTransport.RATES); //_context.statManager().createRateStat("udp.outboundEstablishFailedState", "What state a failed outbound establishment request fails in", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.sendIntroRelayRequest", "How often we send a relay request to reach a peer", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.sendIntroRelayTimeout", "How often a relay request times out before getting a response (due to the target or intro peer being offline)", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.receiveIntroRelayResponse", "How long it took to receive a relay response", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.establishDropped", "Dropped an inbound establish message", "udp", UDPTransport.RATES); @@ -246,15 +222,12 @@ _context.statManager().createRateStat("udp.rejectConcurrentSequence", "How many consecutive concurrency rejections have we had when we stop rejecting (period is how many concurrent packets we are on)", "udp", UDPTransport.RATES); //_context.statManager().createRateStat("udp.queueDropSize", "How many messages were queued up when it was considered full, causing a tail drop?", "udp", UDPTransport.RATES); //_context.statManager().createRateStat("udp.queueAllowTotalLifetime", "When a peer is retransmitting and we probabalistically allow a new message, what is the sum of the pending message lifetimes? (period is the new message's lifetime)?", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.dupDHX", "Session request replay", "udp", new long[] { 24*60*60*1000L } ); - if (_enableSSU2) - _context.statManager().createRequiredRateStat("udp.inboundTokenLifetime", "SSU2 token lifetime (ms)", "udp", new long[] { 5*60*1000L } ); + _context.statManager().createRequiredRateStat("udp.inboundTokenLifetime", "SSU2 token lifetime (ms)", "udp", new long[] { 5*60*1000L } ); _context.statManager().createRequiredRateStat("udp.inboundConn", "Inbound UDP Connection", "udp", new long[] { 60*1000L } ); } public synchronized void startup() { - if (_enableSSU2) - loadTokens(); + loadTokens(); _alive = true; I2PThread t = new I2PThread(new Establisher(), "UDP Establisher", true); t.start(); @@ -262,8 +235,7 @@ public synchronized void shutdown() { _alive = false; - if (_enableSSU2) - saveTokens(); + saveTokens(); notifyActivity(); } @@ -441,7 +413,6 @@ byte[] keyBytes; int version = _transport.getSSUVersion(ra); if (isIndirect && version == 2 && ra.getTransportStyle().equals("SSU")) { - // revert to v1 if no unexpired v2 introducers are present boolean v2intros = false; int count = addr.getIntroducerCount(); long now = _context.clock().now(); @@ -453,12 +424,9 @@ break; } if (!v2intros) { - if (_builder == null) { - _transport.markUnreachable(toHash); - _transport.failed(msg, "No v2 introducers"); - return; - } - version = 1; + _transport.markUnreachable(toHash); + _transport.failed(msg, "No v2 introducers"); + return; } } } @@ -468,16 +436,13 @@ int ourMTU = _transport.getMTU(isIPv6); if ((mtu > 0 && mtu < PeerState2.MIN_MTU) || (ourMTU > 0 && ourMTU < PeerState2.MIN_MTU)) { - if (_builder == null || ra.getTransportStyle().equals("SSU2")) { - _transport.markUnreachable(toHash); - _transport.failed(msg, "MTU too small"); - return; - } - version = 1; + _transport.markUnreachable(toHash); + _transport.failed(msg, "MTU too small"); + return; } } if (version == 1) { - keyBytes = addr.getIntroKey(); + keyBytes = null; } else { String siv = ra.getOption("i"); if (siv != null) @@ -500,19 +465,7 @@ _transport.failed(msg, "Peer has bad key, cannot establish"); return; } - if (version == 1) { - boolean allowExtendedOptions = VersionComparator.comp(toRouterInfo.getVersion(), - VERSION_ALLOW_EXTENDED_OPTIONS) >= 0 - && !_context.getBooleanProperty(PROP_DISABLE_EXT_OPTS); - // w/o ext options, it's always 'requested', no need to set - // don't ask if they are indirect - boolean requestIntroduction = allowExtendedOptions && !isIndirect && - _transport.introducersMaybeRequired(TransportUtil.isIPv6(ra)); - state = new OutboundEstablishState(_context, maybeTo, to, - toIdentity, allowExtendedOptions, - requestIntroduction, - sessionKey, addr, _transport.getDHFactory()); - } else if (version == 2) { + if (version == 2) { boolean requestIntroduction = !isIndirect && _transport.introducersMaybeRequired(TransportUtil.isIPv6(ra)); try { @@ -640,101 +593,6 @@ } /** - * Got a SessionRequest (initiates an inbound establishment) - * - * SSU 1 only. - * - * @param state as looked up in PacketHandler, but probably null unless retransmitted - */ - void receiveSessionRequest(RemoteHostId from, InboundEstablishState state, UDPPacketReader reader) { - byte[] fromIP = from.getIP(); - if (!TransportUtil.isValidPort(from.getPort()) || !_transport.isValid(fromIP)) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Receive session request from invalid: " + from); - return; - } - - boolean isNew = false; - - if (state == null) - state = _inboundStates.get(from); - if (state == null) { - if (_context.blocklist().isBlocklisted(fromIP)) { - if (_log.shouldInfo()) - _log.info("Receive session request from blocklisted IP: " + from); - _context.statManager().addRateData("udp.establishBadIP", 1); - return; // drop the packet - } - if (!_context.commSystem().isExemptIncoming(Addresses.toString(fromIP))) { - if (!shouldAllowInboundEstablishment()) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping inbound establish"); - _context.statManager().addRateData("udp.establishDropped", 1); - return; // drop the packet - } - - synchronized (_inboundBans) { - Long exp = _inboundBans.get(from); - if (exp != null) { - if (exp.longValue() >= _context.clock().now()) { - if (_log.shouldInfo()) - _log.info("SSU 1 session request from temp. blocked peer: " + from); - _context.statManager().addRateData("udp.establishBadIP", 1); - return; // drop the packet - } - // expired - _inboundBans.remove(from); - } - } - if (!_transport.allowConnection()) - return; // drop the packet - } - state = new InboundEstablishState(_context, fromIP, from.getPort(), - _transport.getExternalPort(fromIP.length == 16), - _transport.getDHBuilder(), - reader.getSessionRequestReader()); - - if (_replayFilter.add(state.getReceivedX(), 0, 8)) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Duplicate X in session request from: " + from); - _context.statManager().addRateData("udp.dupDHX", 1); - return; // drop the packet - } - - _context.statManager().addRateData("udp.inboundConn", 1); - - InboundEstablishState oldState = _inboundStates.putIfAbsent(from, state); - isNew = oldState == null; - if (!isNew) - // whoops, somebody beat us to it, throw out the state we just created - state = oldState; - } - - if (isNew) { - // Don't offer to relay to privileged ports. - // Only offer for an IPv4 session. - // TODO if already we have their RI, only offer if they need it (no 'C' cap) - // if extended options, only if they asked for it - if (state.isIntroductionRequested() && - state.getSentPort() >= 1024 && - _transport.canIntroduce(state.getSentIP().length == 16)) { - // ensure > 0 - long tag = 1 + _context.random().nextLong(MAX_TAG_VALUE); - state.setSentRelayTag(tag); - } else { - // we got an IB even though we were firewalled, hidden, not high cap, etc. - } - if (_log.shouldDebug()) - _log.debug("Received NEW session request " + state); - } else { - if (_log.shouldDebug()) - _log.debug("Receive DUP session request from: " + state); - } - - notifyActivity(); - } - - /** * Got a SessionRequest OR a TokenRequest (initiates an inbound establishment) * * SSU 2 only. @@ -842,14 +700,18 @@ else _log.debug("Receive DUP session/token request from: " + state); } + + // Wait until we have RI + // sentRelayTag remains 0 and will not be sent in SessionConfirmed + // See InboundEstablishState2 // call for both Session and Token request, why not - if (state.isIntroductionRequested() && - state.getSentRelayTag() == 0 && // only set once - state.getSentPort() >= 1024 && - _transport.canIntroduce(state.getSentIP().length == 16)) { - long tag = 1 + _context.random().nextLong(MAX_TAG_VALUE); - state.setSentRelayTag(tag); - } + //if (state.isIntroductionRequested() && + // state.getSentRelayTag() == 0 && // only set once + // state.getSentPort() >= 1024 && + // _transport.canIntroduce(state.getSentIP().length == 16)) { + // long tag = 1 + _context.random().nextLong(MAX_TAG_VALUE); + // state.setSentRelayTag(tag); + //} notifyActivity(); } @@ -903,28 +765,6 @@ * got a SessionConfirmed (should only happen as part of an inbound * establishment) * - * SSU 1 only. - * - * @param state as looked up in PacketHandler, if null is probably retransmitted - */ - void receiveSessionConfirmed(RemoteHostId from, InboundEstablishState state, UDPPacketReader reader) { - if (state == null) - state = _inboundStates.get(from); - if (state != null) { - state.receiveSessionConfirmed(reader.getSessionConfirmedReader()); - notifyActivity(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Receive session confirmed from: " + state); - } else { - if (_log.shouldInfo()) - _log.info("Receive (DUP?) session confirmed from: " + from); - } - } - - /** - * got a SessionConfirmed (should only happen as part of an inbound - * establishment) - * * SSU 2 only. * @param state non-null * @param packet header decrypted only @@ -956,27 +796,6 @@ /** * Got a SessionCreated (in response to our outbound SessionRequest) * - * SSU 1 only. - * - * @param state as looked up in PacketHandler, if null is probably retransmitted - */ - void receiveSessionCreated(RemoteHostId from, OutboundEstablishState state, UDPPacketReader reader) { - if (state == null) - state = _outboundStates.get(from); - if (state != null) { - state.receiveSessionCreated(reader.getSessionCreatedReader()); - notifyActivity(); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Receive session created from: " + state); - } else { - if (_log.shouldInfo()) - _log.info("Receive (DUP?) session created from: " + from); - } - } - - /** - * Got a SessionCreated (in response to our outbound SessionRequest) - * * SSU 2 only. * * @param state non-null @@ -1022,7 +841,7 @@ /** * Got a SessionDestroy on an established conn * - * SSU 1 or 2 + * SSU 2 * * @since 0.8.1 */ @@ -1035,7 +854,7 @@ /** * Got a SessionDestroy during outbound establish * - * SSU 1 or 2 + * SSU 2 * * @since 0.8.1 */ @@ -1053,7 +872,7 @@ * As this packet was essentially unauthenticated (i.e. intro key, not session key) * we just log it as it could be spoofed. * - * SSU 1 or 2 + * SSU 2 * * @since 0.8.1 */ @@ -1175,11 +994,13 @@ peer = new PeerState(_context, _transport, state.getSentIP(), state.getSentPort(), remote.calculateHash(), true, state.getRTT(), state.getCipherKey(), state.getMACKey()); + peer.setWeRelayToThemAs(state.getSentRelayTag()); } else { InboundEstablishState2 state2 = (InboundEstablishState2) state; peer = state2.getPeerState(); + // now handled in IES2.createPeerState() + //peer.setWeRelayToThemAs(state.getSentRelayTag()); } - peer.setWeRelayToThemAs(state.getSentRelayTag()); if (version == 1) { // Lookup the peer's MTU from the netdb, since it isn't included in the protocol setup (yet) @@ -1389,24 +1210,8 @@ * Caller must synch on state. */ private void sendCreated(InboundEstablishState state) { - int version = state.getVersion(); UDPPacket pkt; - if (version == 1) { - if (_log.shouldDebug()) - _log.debug("Send created to: " + state); - try { - state.generateSessionKey(); - } catch (DHSessionKeyBuilder.InvalidPublicParameterException ippe) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Peer " + state + " sent us an invalid DH parameter", ippe); - _inboundStates.remove(state.getRemoteHostId()); - state.fail(); - return; - } - pkt = _builder.buildSessionCreatedPacket(state, - _transport.getExternalPort(state.getSentIP().length == 16), - _transport.getIntroKey()); - } else { + InboundEstablishState2 state2 = (InboundEstablishState2) state; InboundEstablishState.InboundState istate = state2.getState(); switch (istate) { @@ -1436,7 +1241,7 @@ _log.warn("Unhandled state " + istate + " on " + state); return; } - } + if (pkt == null) { if (_log.shouldLog(Log.WARN)) _log.warn("Peer " + state + " sent us an invalid IP?"); @@ -1445,9 +1250,7 @@ return; } _transport.send(pkt); - if (version == 1) - state.createdPacketSent(); - // else PacketBuilder2 told the state + // PacketBuilder2 told the state } /** @@ -1459,13 +1262,8 @@ * Caller must synch on state. */ private void sendRequest(OutboundEstablishState state) { - int version = state.getVersion(); UDPPacket packet; - if (version == 1) { - if (_log.shouldDebug()) - _log.debug("Send Session Request to: " + state); - packet = _builder.buildSessionRequestPacket(state); - } else { + OutboundEstablishState2 state2 = (OutboundEstablishState2) state; OutboundEstablishState.OutboundState ostate = state2.getState(); switch (ostate) { @@ -1502,16 +1300,14 @@ _log.warn("Unhandled state " + ostate + " on " + state); return; } - } + if (packet != null) { _transport.send(packet); } else { if (_log.shouldLog(Log.WARN)) _log.warn("Unable to build a session request packet for " + state); } - if (version == 1) - state.requestSent(); - // else PacketBuilder2 told the state + // PacketBuilder2 told the state } /** @@ -1519,7 +1315,7 @@ * This may be called multiple times, it sets the nonce the first time only * Caller should probably synch on state. * - * SSU 1 or 2 + * SSU 2 * * @param state charlie */ @@ -1533,22 +1329,7 @@ } while (old != null); state.setIntroNonce(nonce); } - if (state.getVersion() == 1) { - List requests = _builder.buildRelayRequest(_transport, this, state, _transport.getIntroKey()); - if (requests.isEmpty()) { - if (_log.shouldLog(Log.WARN)) - _log.warn("No valid introducers! " + state); - processExpired(state); - return; - } - for (UDPPacket req : requests) { - _transport.send(req); - } - _context.statManager().addRateData("udp.sendIntroRelayRequest", 1); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Send relay request for " + state + " with our intro key as " + _transport.getIntroKey()); - state.introSent(); - } else { + // walk through the state machine for each SSU2 introducer OutboundEstablishState2 state2 = (OutboundEstablishState2) state; // establish() above ensured there is at least one valid v2 introducer @@ -1686,7 +1467,6 @@ _log.debug("No valid introducers for " + state); processExpired(state); } - } } /** @@ -1744,67 +1524,6 @@ } /** - * We are Alice, we sent a RelayRequest to Bob and got a response back. - * - * SSU 1 only. - */ - void receiveRelayResponse(RemoteHostId bob, UDPPacketReader reader) { - long nonce = reader.getRelayResponseReader().readNonce(); - OutboundEstablishState state = _liveIntroductions.remove(Long.valueOf(nonce)); - if (state == null) { - if (_log.shouldDebug()) - _log.debug("Dup or unknown RelayResponse: " + nonce); - return; // already established - } - - // Note that we ignore the Alice (us) IP/Port in the RelayResponse - int sz = reader.getRelayResponseReader().readCharlieIPSize(); - byte ip[] = new byte[sz]; - reader.getRelayResponseReader().readCharlieIP(ip, 0); - int port = reader.getRelayResponseReader().readCharliePort(); - if ((!isValid(ip, port)) || (!isValid(bob.getIP(), bob.getPort()))) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Bad relay resp from " + bob + " for " + Addresses.toString(ip, port)); - _context.statManager().addRateData("udp.relayBadIP", 1); - return; - } - InetAddress addr = null; - try { - addr = InetAddress.getByAddress(ip); - } catch (UnknownHostException uhe) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Introducer for " + state + " (" + bob + ") sent us an invalid address for our target: " + Addresses.toString(ip, port), uhe); - // TODO either put the nonce back in liveintroductions, or fail - return; - } - _context.statManager().addRateData("udp.receiveIntroRelayResponse", state.getLifetime()); - if (_log.shouldDebug()) - _log.debug("Received RelayResponse for " + state.getRemoteIdentity().calculateHash() + " - they are on " - + addr.toString() + ":" + port + " (according to " + bob + ") nonce=" + nonce); - synchronized (state) { - RemoteHostId oldId = state.getRemoteHostId(); - state.introduced(ip, port); - RemoteHostId newId = state.getRemoteHostId(); - // Swap out the RemoteHostId the state is indexed under. - // It was a Hash, change it to a IP/port. - // Remove the entry in the byClaimedAddress map as it's now in main map. - // Add an entry in the byHash map so additional OB pkts can find it. - _outboundByHash.put(state.getRemoteIdentity().calculateHash(), state); - RemoteHostId claimed = state.getClaimedAddress(); - if (!oldId.equals(newId)) { - _outboundStates.remove(oldId); - _outboundStates.put(newId, state); - if (_log.shouldLog(Log.INFO)) - _log.info("RR replaced " + oldId + " with " + newId + ", claimed address was " + claimed); - } - // - if (claimed != null) - _outboundByClaimedAddress.remove(oldId, state); // only if == state - } - notifyActivity(); - } - - /** * We are Alice, we sent a RelayRequest to Bob and got a RelayResponse back. * Time and version already checked by caller. * @@ -1956,36 +1675,6 @@ } /** - * Called from UDPReceiver. - * Accelerate response to RelayResponse if we haven't sent it yet. - * - * SSU 1 only. - * - * @since 0.9.15 - */ - void receiveHolePunch(InetAddress from, int fromPort) { - RemoteHostId id = new RemoteHostId(from.getAddress(), fromPort); - OutboundEstablishState state = _outboundStates.get(id); - if (state != null) { - // this is the usual case, we already received the RelayResponse (1 RTT) - // before the HolePunch (1 1/2 RTT) - boolean sendNow = state.receiveHolePunch(); - if (sendNow) { - if (_log.shouldDebug()) - _log.debug("Hole punch from " + state + ", sending SessionRequest now"); - notifyActivity(); - } else { - if (_log.shouldLog(Log.INFO)) - _log.info("Hole punch from " + state + ", already sent SessionRequest"); - } - } else { - // HolePunch received before RelayResponse, and we didn't know the IP/port, or it changed - if (_log.shouldDebug()) - _log.debug("No state found for hole punch from " + from + " port " + fromPort); - } - } - - /** * Called from PacketHandler. * Accelerate response to RelayResponse if we haven't sent it yet. * @@ -2236,12 +1925,7 @@ } /** - * SSU 1 and 2. - * - * For SSU 1, while a SessionConfirmed could in theory be fragmented, - * in practice a RouterIdentity is 387 bytes and a single fragment is 512 bytes max, - * so it will never be fragmented. - * + * SSU 2. * For SSU 2, it contains a full router info, so it may be fragmented. * * Caller must synch on state. @@ -2250,7 +1934,6 @@ boolean valid = state.validateSessionCreated(); if (!valid) { // validate clears fields on failure - // sendDestroy(state) won't work as we haven't sent the confirmed... if (_log.shouldLog(Log.WARN)) _log.warn("SessionCreated validate failed: " + state); return; @@ -2268,20 +1951,12 @@ // gives us the opportunity to "detect" our external addr _transport.externalAddressReceived(state.getRemoteIdentity().calculateHash(), ip, port); - int version = state.getVersion(); - UDPPacket packets[]; - if (version == 1) { - // signs if we havent signed yet - state.prepareSessionConfirmed(); - packets = _builder.buildSessionConfirmedPackets(state, _context.router().getRouterInfo().getIdentity()); - } else { - OutboundEstablishState2 state2 = (OutboundEstablishState2) state; - OutboundEstablishState.OutboundState ostate = state2.getState(); - // shouldn't happen, we go straight to confirmed after sending - if (ostate == OB_STATE_CONFIRMED_COMPLETELY) - return; - packets = _builder2.buildSessionConfirmedPackets(state2, _context.router().getRouterInfo()); - } + OutboundEstablishState2 state2 = (OutboundEstablishState2) state; + OutboundEstablishState.OutboundState ostate = state2.getState(); + // shouldn't happen, we go straight to confirmed after sending + if (ostate == OB_STATE_CONFIRMED_COMPLETELY) + return; + UDPPacket[] packets = _builder2.buildSessionConfirmedPackets(state2, _context.router().getRouterInfo()); if (packets == null) { state.fail(); return; @@ -2294,63 +1969,13 @@ _transport.send(packets[i]); } - if (version == 1) { - state.confirmedPacketsSent(); - } else { - // save for retx - OutboundEstablishState2 state2 = (OutboundEstablishState2) state; - // PacketBuilder2 told the state - //state2.confirmedPacketsSent(packets); - // we are done, go right to ps2 - handleCompletelyEstablished(state2); - } + // save for retx + // PacketBuilder2 told the state + //state2.confirmedPacketsSent(packets); + // we are done, go right to ps2 + handleCompletelyEstablished(state2); } - - /** - * Tell the other side never mind. - * This is only useful after we have received SessionCreated, - * and sent SessionConfirmed, but not yet gotten a data packet as an - * ack to the SessionConfirmed - otherwise we haven't generated the keys. - * Caller should probably synch on state. - * - * SSU1 only. - * - * @since 0.9.2 - */ - private void sendDestroy(OutboundEstablishState state) { - if (state.getVersion() > 1) - return; - UDPPacket packet = _builder.buildSessionDestroyPacket(state); - if (packet != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Send destroy to: " + state); - _transport.send(packet); - } - } - - /** - * Tell the other side never mind. - * This is only useful after we have sent SessionCreated, - * but not received SessionConfirmed - * Otherwise we haven't generated the keys. - * Caller should probably synch on state. - * - * SSU1 only. - * - * @since 0.9.2 - */ - private void sendDestroy(InboundEstablishState state) { - if (state.getVersion() > 1) - return; - // TODO ban the IP for a while, like we do in NTCP? - UDPPacket packet = _builder.buildSessionDestroyPacket(state); - if (packet != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Send destroy to: " + state); - _transport.send(packet); - } - } - + /** * Drive through the inbound establishment states, adjusting one of them * as necessary. Called from Establisher thread only. @@ -2428,7 +2053,6 @@ case IB_STATE_CREATED_SENT: // fallthrough case IB_STATE_RETRY_SENT: // SSU2 if (expired) { - sendDestroy(inboundState); processExpired(inboundState); } else if (inboundState.getNextSendTime() <= now) { // resend created or retry @@ -2576,7 +2200,6 @@ case OB_STATE_CONFIRMED_PARTIALLY: long ctime = outboundState.getConfirmedSentTime(); if (expired || (ctime > 0 && ctime + OB_MESSAGE_TIMEOUT <= now)) { - sendDestroy(outboundState); processExpired(outboundState); } else if (outboundState.getNextSendTime() <= now) { sendConfirmation(outboundState); @@ -2729,8 +2352,6 @@ * @since 0.9.54 */ public void ipChanged(boolean isIPv6) { - if (!_enableSSU2) - return; if (_log.shouldWarn()) _log.warn("IP changed, ipv6? " + isIPv6); int len = isIPv6 ? 16 : 4; @@ -2758,8 +2379,6 @@ * @since 0.9.54 */ public void portChanged() { - if (!_enableSSU2) - return; synchronized(_outboundTokens) { _outboundTokens.clear(); } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java 2024-04-10 02:29:58.000000000 +0000 @@ -25,12 +25,14 @@ import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.router.RouterAddress; import net.i2p.data.router.RouterInfo; +import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade; import net.i2p.router.transport.TransportImpl; import static net.i2p.router.transport.udp.SSU2Util.*; import net.i2p.util.Addresses; import net.i2p.util.Log; +import net.i2p.util.VersionComparator; /** * Data for a new connection being established, where the remote peer has @@ -63,6 +65,8 @@ // testing private static final boolean ENFORCE_TOKEN = true; private static final long MAX_SKEW = 2*60*1000L; + // SSU2 fixes (2.1.0) + private static final String MIN_RELAY_VERSION = "0.9.57"; /** @@ -341,6 +345,14 @@ if (!"2".equals(ra.getOption("v"))) throw new RIException("bad SSU2 v", REASON_VERSION); + if (ri.getCapabilities().equals("LU") && ri.getVersion().equals("0.9.56")) { + _context.banlist().banlistRouter(h, "Slow", null, + null, _context.clock().now() + 2*60*60*1000); + if (ri.verifySignature()) + _context.blocklist().add(_aliceIP); + throw new RIException("Old and slow: " + h, REASON_BANNED); + } + String smtu = ra.getOption(UDPAddress.PROP_MTU); int mtu = 0; try { @@ -398,6 +410,32 @@ } _receivedConfirmedIdentity = _receivedUnconfirmedIdentity; + // deferred relay tag request handling, now that we have the RI + // formerly in EstablishmentManager.receiveSessionOrTokenReques() + if (_introductionRequested) { + if (getSentPort() < 1024 || + !_transport.canIntroduce(isIPv6)) { + _introductionRequested = false; + } else if (VersionComparator.comp(ri.getVersion(), MIN_RELAY_VERSION) < 0) { + _introductionRequested = false; + String caps = ri.getCapabilities(); + if (_log.shouldWarn()) + _log.warn("Not offering to relay to router version " + ri.getVersion() + " caps " + caps + ": " + this); + } else { + String caps = ri.getCapabilities(); + // may be requesting relay for ipv4/6 if reachable on the other + // or may be starting up and not know if reachable or not + if (caps.indexOf(Router.CAPABILITY_REACHABLE) < 0 || + _context.random().nextInt(4) == 0) { + // leave it set to true; createPeerState() will copy to PS2, + // who will send the relay tag with ACK 0 + } else { + _introductionRequested = false; + if (_log.shouldWarn()) + _log.warn("Not offering to relay to router version " + ri.getVersion() + " caps " + caps + ": " + this); + } + } + } createPeerState(); //_sendHeaderEncryptKey2 calculated below } @@ -419,7 +457,7 @@ public void gotRelayTagRequest() { if (_log.shouldDebug()) - _log.debug("Got relay tag request"); + _log.debug("Got relay tag request on " + this); _introductionRequested = true; } @@ -877,6 +915,12 @@ RouterAddress ra = _transport.getCurrentExternalAddress(isIPv6); if (ra != null) _pstate.setOurAddress(ra.getIP(), ra.getPort()); + if (_introductionRequested) { + long tag = 1 + _context.random().nextLong(EstablishmentManager.MAX_TAG_VALUE); + setSentRelayTag(tag); + _pstate.setWeRelayToThemAs(tag); + } + _pstate.sendAck0(); } /** diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PacketHandler.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PacketHandler.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PacketHandler.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PacketHandler.java 2024-04-10 02:29:58.000000000 +0000 @@ -32,15 +32,10 @@ private final Log _log; private final UDPTransport _transport; private final EstablishmentManager _establisher; - private final InboundMessageFragments _inbound; private final PeerTestManager _testManager; - private final IntroductionManager _introManager; private volatile boolean _keepReading; private final Handler[] _handlers; - private final Map _failCache; private final BlockingQueue _inboundQueue; - private static final Object DUMMY = new Object(); - private final boolean _enableSSU1, _enableSSU2; private final int _networkID; private static final int TYPE_POISON = -99999; @@ -48,28 +43,14 @@ private static final int MAX_QUEUE_SIZE = 192; private static final int MIN_NUM_HANDLERS = 1; // unless < 32MB private static final int MAX_NUM_HANDLERS = 1; - /** - * Let packets be up to this much skewed. - * This is the same limit as in InNetMessagePool's MessageValidator. - * There's no use making it any larger, as messages will just be thrown out there. - */ - private static final long GRACE_PERIOD = Router.CLOCK_FUDGE_FACTOR + 30*1000; - static final long MAX_SKEW = 90*24*60*60*1000L; - private enum AuthType { NONE, INTRO, BOBINTRO, SESSION } - PacketHandler(RouterContext ctx, UDPTransport transport, boolean enableSSU1, boolean enableSSU2, EstablishmentManager establisher, InboundMessageFragments inbound, PeerTestManager testManager, IntroductionManager introManager) { _context = ctx; _log = ctx.logManager().getLog(PacketHandler.class); _transport = transport; - _enableSSU1 = enableSSU1; - _enableSSU2 = enableSSU2; _establisher = establisher; - _inbound = inbound; _testManager = testManager; - _introManager = introManager; - _failCache = new LHMCache(24); _networkID = ctx.router().getNetworkID(); long maxMemory = SystemVersion.getMaxMemory(); @@ -87,20 +68,7 @@ _handlers[i] = new Handler(); } - _context.statManager().createRateStat("udp.receivePacketSkew", "How long ago after the packet was sent did we receive it", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidUnkown", "How old the packet we dropped due to invalidity (unkown type) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidReestablish", "How old the packet we dropped due to invalidity (doesn't use existing key, not an establishment) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidEstablish", "How old the packet we dropped due to invalidity (establishment, bad key) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidEstablish.inbound", "How old the packet we dropped due to invalidity (even though we have an active inbound establishment with the peer) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidEstablish.outbound", "How old the packet we dropped due to invalidity (even though we have an active outbound establishment with the peer) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidEstablish.new", "How old the packet we dropped due to invalidity (even though we do not have any active establishment with the peer) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidInboundEstablish", "How old the packet we dropped due to invalidity (inbound establishment, bad key) was", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.droppedInvalidSkew", "How skewed the packet we dropped due to invalidity (valid except bad skew) was", "udp", UDPTransport.RATES); _context.statManager().createRateStat("udp.destroyedInvalidSkew", "Destroyed session due to bad skew", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.receivePacketSize.dataKnown", "Packet size of the given inbound packet type (period is the packet's lifetime)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.receivePacketSize.dataKnownAck", "Packet size of the given inbound packet type (period is the packet's lifetime)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.receivePacketSize.dataUnknown", "Packet size of the given inbound packet type (period is the packet's lifetime)", "udp", UDPTransport.RATES); - _context.statManager().createRateStat("udp.receivePacketSize.dataUnknownAck", "Packet size of the given inbound packet type (period is the packet's lifetime)", "udp", UDPTransport.RATES); } public synchronized void startup() { @@ -177,29 +145,8 @@ return rv; } - /** - * @since 0.9.42 - */ - private boolean validate(UDPPacket packet, SessionKey key) { - return packet.validate(key, _transport.getHMAC()); - } - - private enum PeerType { - /** the packet is from a peer we are establishing an outbound con to, but failed validation, so fallback */ - OUTBOUND_FALLBACK, - /** the packet is from a peer we are establishing an inbound con to, but failed validation, so fallback */ - INBOUND_FALLBACK, - /** the packet is not from anyone we know */ - NEW_PEER - } - private class Handler implements Runnable { - private final UDPPacketReader _reader; - public Handler() { - _reader = new UDPPacketReader(_context); - } - public void run() { while (_keepReading) { UDPPacket packet = receiveNext(); @@ -209,7 +156,7 @@ //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Received: " + packet); try { - handlePacket(_reader, packet); + handlePacket(packet); } catch (RuntimeException e) { if (_log.shouldLog(Log.ERROR)) _log.error("Internal error handling " + packet, e); @@ -232,7 +179,7 @@ *
    • No established or pending session found * */ - private void handlePacket(UDPPacketReader reader, UDPPacket packet) { + private void handlePacket(UDPPacket packet) { RemoteHostId rem = packet.getRemoteHost(); PeerState state = _transport.getPeerState(rem); if (state == null) { @@ -243,10 +190,7 @@ // Group 2: Inbound Establishment if (_log.shouldLog(Log.DEBUG)) _log.debug("Packet received IS for an inbound establishment"); - if (est.getVersion() == 2) - receiveSSU2Packet(rem, packet, (InboundEstablishState2) est); - else - receivePacket(reader, packet, est); + receiveSSU2Packet(rem, packet, (InboundEstablishState2) est); } else { //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Packet received is not for an inbound establishment"); @@ -255,566 +199,25 @@ // Group 3: Outbound Establishment if (_log.shouldLog(Log.DEBUG)) _log.debug("Packet received IS for an outbound establishment"); - if (oest.getVersion() == 2) - receiveSSU2Packet(packet, (OutboundEstablishState2) oest); - else - receivePacket(reader, packet, oest); + receiveSSU2Packet(packet, (OutboundEstablishState2) oest); } else { // Group 4: New conn or needs fallback if (_log.shouldLog(Log.DEBUG)) _log.debug("Packet received is not for an inbound or outbound establishment"); // ok, not already known establishment, try as a new one // Last chance for success, using our intro key - if (_enableSSU1) - receivePacket(reader, packet, PeerType.NEW_PEER); - else - receiveSSU2Packet(rem, packet, (InboundEstablishState2) null); + receiveSSU2Packet(rem, packet, (InboundEstablishState2) null); } } } else { // Group 1: Established //if (_log.shouldLog(Log.DEBUG)) // _log.debug("Packet received IS for an existing peer"); - if (state.getVersion() == 2) - ((PeerState2) state).receivePacket(rem, packet); - else - receivePacket(reader, packet, state); - } - } - - /////////// - // Begin SSU1-only methods (except group 4) - /////////// - - /** - * Group 1: Established conn - * Decrypt and validate the packet then call handlePacket() - * - * SSU1 only. - */ - private void receivePacket(UDPPacketReader reader, UDPPacket packet, PeerState state) { - AuthType auth = AuthType.NONE; - boolean isValid = validate(packet, state.getCurrentMACKey()); - if (!isValid) { - if (state.getNextMACKey() != null) - isValid = validate(packet, state.getNextMACKey()); - if (!isValid) { - if (_log.shouldDebug()) - _log.debug("Failed validation with existing con, trying as new con: " + packet); - - isValid = validate(packet, _transport.getIntroKey()); - if (isValid) { - // this is a stray packet from an inbound establishment - // process, so try our intro key - // (after an outbound establishment process, there wouldn't - // be any stray packets) - // These are generally PeerTest packets - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Validation with existing con failed, but validation as reestablish/stray passed"); - packet.decrypt(_transport.getIntroKey()); - auth = AuthType.INTRO; - } else { - InboundEstablishState est = _establisher.getInboundState(packet.getRemoteHost()); - if (est != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Packet from an existing peer IS for an inbound establishment"); - receivePacket(reader, packet, est, false); - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn("Validation with existing con failed, and validation as reestablish failed too. DROP " + packet); - _context.statManager().addRateData("udp.droppedInvalidReestablish", packet.getLifetime()); - } - return; - } - } else { - packet.decrypt(state.getNextCipherKey()); - auth = AuthType.SESSION; - } - } else { - packet.decrypt(state.getCurrentCipherKey()); - auth = AuthType.SESSION; - } - - handlePacket(reader, packet, state, null, null, auth); - } - - /** - * Group 4: New conn or failed validation - we have no Session Key. - * Here we attempt to validate the packet with our intro key, - * then decrypt the packet with our intro key, - * then call handlePacket(). - * - * This falls back to SSU2 for PeerType.NEW_PEER. - * If SSU1 is disabled, call receiveSSU2Packet() directly, don't call this. - * - * @param peerType OUTBOUND_FALLBACK, INBOUND_FALLBACK, or NEW_PEER - */ - private void receivePacket(UDPPacketReader reader, UDPPacket packet, PeerType peerType) { - boolean isValid = validate(packet, _transport.getIntroKey()); - if (!isValid) { - // Note that the vast majority of these are NOT corrupted packets, but - // packets for which we don't have the PeerState (i.e. SessionKey) - // Case 1: 48 byte destroy packet, we already closed - // Case 2: 369 byte session created packet, re-tx of one that failed validation - // (peer probably doesn't know his correct external port, esp. on <= 0.9.1 - - // Case 3: - // For peers that change ports, look for an existing session with the same IP - // If we find it, and the packet validates with its mac key, tell the transport - // to change the port, and handle the packet. - // All this since 0.9.3. - RemoteHostId remoteHost = packet.getRemoteHost(); - boolean alreadyFailed; - synchronized(_failCache) { - alreadyFailed = _failCache.get(remoteHost) != null; - } - if (!alreadyFailed) { - // For now, try SSU2 Session/Token Request processing here. - // After we've migrated the majority of the network over to SSU2, - // we can try SSU2 first. - if (_enableSSU2 && peerType == PeerType.NEW_PEER) { - int len = packet.getPacket().getLength(); - if (len >= SSU2Util.MIN_TOKEN_REQUEST_LEN) { - boolean handled = receiveSSU2Packet(remoteHost, packet, (InboundEstablishState2) null); - if (handled) - return; - } else if (len >= SSU2Util.MIN_DATA_LEN) { - byte[] k1 = _transport.getSSU2StaticIntroKey(); - long id = SSU2Header.decryptDestConnID(packet.getPacket(), k1); - PeerStateDestroyed dead = _transport.getRecentlyClosed(id); - if (dead != null) { - // Probably termination ack. - // Prevent attempted SSU1 fallback processing and adding to fail cache - if (_log.shouldDebug()) - _log.debug("Handling " + len + " byte packet from " + remoteHost + - " for recently closed ID " + id); - dead.receivePacket(remoteHost, packet); - return; - } - } - if (_log.shouldDebug()) - _log.debug("Continuing with SSU1 fallback processing, wasn't an SSU2 packet from " + remoteHost); - } - - // this is slow, that's why we cache it above. - List peers = _transport.getPeerStatesByIP(remoteHost); - if (!peers.isEmpty()) { - StringBuilder buf = new StringBuilder(256); - buf.append("Established peers with this IP: "); - boolean foundSamePort = false; - PeerState state = null; - int newPort = remoteHost.getPort(); - for (PeerState ps : peers) { - if (ps.getVersion() > 1) - continue; - boolean valid = false; - if (_log.shouldLog(Log.WARN)) { - long now = _context.clock().now(); - buf.append(ps.getRemoteHostId().toString()) - .append(" last sent: ").append(now - ps.getLastSendTime()) - .append(" last rcvd: ").append(now - ps.getLastReceiveTime()); - } - if (ps.getRemotePort() == newPort) { - foundSamePort = true; - } else if (validate(packet, ps.getCurrentMACKey())) { - packet.decrypt(ps.getCurrentCipherKey()); - reader.initialize(packet); - if (_log.shouldLog(Log.WARN)) - buf.append(" VALID type ").append(reader.readPayloadType()).append("; "); - valid = true; - if (state == null) - state = ps; - } else { - if (_log.shouldLog(Log.WARN)) - buf.append(" INVALID; "); - } - } - if (state != null && !foundSamePort) { - _transport.changePeerPort(state, newPort); - if (_log.shouldLog(Log.WARN)) { - buf.append(" CHANGED PORT TO ").append(newPort).append(" AND HANDLED"); - _log.warn(buf.toString()); - } - handlePacket(reader, packet, state, null, null, AuthType.SESSION); - return; - } - if (_log.shouldLog(Log.WARN)) - _log.warn(buf.toString()); - } - synchronized(_failCache) { - _failCache.put(remoteHost, DUMMY); - } - } - if (_log.shouldLog(Log.WARN)) - _log.warn("Cannot validate rcvd pkt (path) wasCached? " + alreadyFailed + ": " + packet); - - long lifetime = packet.getLifetime(); - _context.statManager().addRateData("udp.droppedInvalidEstablish", lifetime); - switch (peerType) { - case INBOUND_FALLBACK: - _context.statManager().addRateData("udp.droppedInvalidEstablish.inbound", lifetime, packet.getTimeSinceReceived()); - break; - case OUTBOUND_FALLBACK: - _context.statManager().addRateData("udp.droppedInvalidEstablish.outbound", lifetime, packet.getTimeSinceReceived()); - break; - case NEW_PEER: - _context.statManager().addRateData("udp.droppedInvalidEstablish.new", lifetime, packet.getTimeSinceReceived()); - break; - } - return; - } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Valid introduction packet received: " + packet); - } - - // Packets that get here are probably one of: - // 304 byte Session Request - // 96 byte Relay Request - // 60 byte Relay Response - // 80 byte Peer Test - packet.decrypt(_transport.getIntroKey()); - handlePacket(reader, packet, null, null, null, AuthType.INTRO); - } - - /** - * SSU1 only. - * - * @param state non-null - */ - private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state) { - receivePacket(reader, packet, state, true); - } - - /** - * Group 2: Inbound establishing conn - * Decrypt and validate the packet then call handlePacket() - * - * SSU1 only. - * - * @param state non-null - * @param allowFallback if it isn't valid for this establishment state, try as a non-establishment packet - */ - private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state, boolean allowFallback) { - if (_log.shouldLog(Log.DEBUG)) { - StringBuilder buf = new StringBuilder(128); - buf.append("Attempting to receive a packet on a known inbound state: "); - buf.append(state); - buf.append(" MAC key: ").append(state.getMACKey()); - buf.append(" intro key: ").append(_transport.getIntroKey()); - _log.debug(buf.toString()); - } - boolean isValid = false; - if (state.getMACKey() != null) { - isValid = validate(packet, state.getMACKey()); - if (isValid) { - if (_log.shouldDebug()) - _log.debug("Valid introduction packet received for inbound con: " + packet); - - packet.decrypt(state.getCipherKey()); - handlePacket(reader, packet, null, null, null, AuthType.SESSION); - return; - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn("Invalid introduction packet received for inbound con, falling back: " + packet); - } - } - if (allowFallback) { - // ok, we couldn't handle it with the established stuff, so fall back - // on earlier state packets - receivePacket(reader, packet, PeerType.INBOUND_FALLBACK); - } else { - _context.statManager().addRateData("udp.droppedInvalidInboundEstablish", packet.getLifetime()); - } - } - - /** - * Group 3: Outbound establishing conn - * Decrypt and validate the packet then call handlePacket() - * - * SSU1 only. - * - * @param state non-null - */ - private void receivePacket(UDPPacketReader reader, UDPPacket packet, OutboundEstablishState state) { - if (_log.shouldLog(Log.DEBUG)) { - StringBuilder buf = new StringBuilder(128); - buf.append("Attempting to receive a packet on a known outbound state: "); - buf.append(state); - buf.append(" MAC key: ").append(state.getMACKey()); - buf.append(" intro key: ").append(state.getIntroKey()); - _log.debug(buf.toString()); - } - - boolean isValid = false; - if (state.getMACKey() != null) { - isValid = validate(packet, state.getMACKey()); - if (isValid) { - // this should be the Session Confirmed packet - if (_log.shouldDebug()) - _log.debug("Valid introduction packet received for outbound established con: " + packet); - packet.decrypt(state.getCipherKey()); - handlePacket(reader, packet, null, state, null, AuthType.SESSION); - return; - } - } - - // keys not yet exchanged, lets try it with the peer's intro key - isValid = validate(packet, state.getIntroKey()); - if (isValid) { - if (_log.shouldDebug()) - _log.debug("Valid packet received for " + state + " with Bob's intro key: " + packet); - packet.decrypt(state.getIntroKey()); - // the only packet we should be getting with Bob's intro key is Session Created - handlePacket(reader, packet, null, state, null, AuthType.BOBINTRO); - return; - } else { - if (_log.shouldLog(Log.WARN)) - _log.warn("Invalid introduction packet received for outbound established con with old intro key, falling back: " + packet); - } - - // ok, we couldn't handle it with the established stuff, so fall back - // on earlier state packets - receivePacket(reader, packet, PeerType.OUTBOUND_FALLBACK); - } - - /** - * The last step. The packet was decrypted with some key. Now get the message type - * and send it to one of four places: The EstablishmentManager, IntroductionManager, - * PeerTestManager, or InboundMessageFragments. - * - * SSU1 only. - * - * @param state non-null if fully established - * @param outState non-null if outbound establishing in process - * @param inState unused always null, TODO use for 48-byte destroys during inbound establishment - * @param auth what type of authentication succeeded - */ - private void handlePacket(UDPPacketReader reader, UDPPacket packet, PeerState state, - OutboundEstablishState outState, InboundEstablishState inState, - AuthType auth) { - reader.initialize(packet); - long recvOn = packet.getBegin(); - long sendOn = reader.readTimestamp() * 1000; - // Positive when we are ahead of them - long skew = recvOn - sendOn; - int type = reader.readPayloadType(); - // if it's a bad type, the whole packet is probably corrupt - boolean typeOK = type <= UDPPacket.MAX_PAYLOAD_TYPE; - boolean skewOK = skew < MAX_SKEW && skew > (0 - MAX_SKEW) && typeOK; - - // update skew whether or not we will be dropping the packet for excessive skew - if (state != null) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received packet from " + state.getRemoteHostId().toString() + " with skew " + skew); - if (auth == AuthType.SESSION && typeOK && (skewOK || state.getMessagesReceived() <= 0)) - state.adjustClockSkew(skew); - } - _context.statManager().addRateData("udp.receivePacketSkew", skew); - - if (!_enableSSU2 && !_context.clock().getUpdatedSuccessfully()) { - // adjust the clock one time in desperation - _context.clock().setOffset(0 - skew, true); - if (skew != 0) { - String source; - if (state != null) - source = state.getRemotePeer().toBase64(); - else if (outState != null) - source = outState.getRemoteHostId().toString(); - else - source = packet.getRemoteHost().toString(); - _log.logAlways(Log.WARN, "NTP failure, SSU1 adjusted clock by " + DataHelper.formatDuration(Math.abs(skew)) + - " source " + source); - skew = 0; - } - } - - if (skew > GRACE_PERIOD) { - _context.statManager().addRateData("udp.droppedInvalidSkew", skew); - if (state != null && skew > 4 * GRACE_PERIOD && state.getPacketsReceived() <= 0) { - _transport.sendDestroy(state, SSU2Util.REASON_SKEW); - _transport.dropPeer(state, true, "Clock skew"); - if (state.getRemotePort() == 65520) { - // distinct port of buggy router - _context.banlist().banlistRouterForever(state.getRemotePeer(), - _x("Excessive clock skew: {0}"), - DataHelper.formatDuration(skew)); - } else { - _context.banlist().banlistRouter(DataHelper.formatDuration(skew), - state.getRemotePeer(), - _x("Excessive clock skew: {0}")); - } - _context.statManager().addRateData("udp.destroyedInvalidSkew", skew); - if (_log.shouldWarn()) - _log.warn("Dropped conn, packet too far in the past: " + new Date(sendOn) + ": " + packet + - " PeerState: " + state); - } else { - if (_log.shouldWarn()) - _log.warn("Packet too far in the past: " + new Date(sendOn) + ": " + packet + - " PeerState: " + state); - } - return; - } else if (skew < 0 - GRACE_PERIOD) { - _context.statManager().addRateData("udp.droppedInvalidSkew", 0-skew); - if (state != null && skew < 0 - (4 * GRACE_PERIOD) && state.getPacketsReceived() <= 0) { - _transport.sendDestroy(state, SSU2Util.REASON_SKEW); - _transport.dropPeer(state, true, "Clock skew"); - if (state.getRemotePort() == 65520) { - // distinct port of buggy router - _context.banlist().banlistRouterForever(state.getRemotePeer(), - _x("Excessive clock skew: {0}"), - DataHelper.formatDuration(0 - skew)); - } else { - _context.banlist().banlistRouter(DataHelper.formatDuration(0 - skew), - state.getRemotePeer(), - _x("Excessive clock skew: {0}")); - } - _context.statManager().addRateData("udp.destroyedInvalidSkew", 0-skew); - if (_log.shouldWarn()) - _log.warn("Dropped conn, packet too far in the future: " + new Date(sendOn) + ": " + packet + - " PeerState: " + state); - } else { - if (_log.shouldWarn()) - _log.warn("Packet too far in the future: " + new Date(sendOn) + ": " + packet + - " PeerState: " + state); - } - return; - } - - RemoteHostId from = packet.getRemoteHost(); - - switch (type) { - case UDPPacket.PAYLOAD_TYPE_SESSION_REQUEST: - if (auth == AuthType.BOBINTRO) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - _establisher.receiveSessionRequest(from, inState, reader); - break; - case UDPPacket.PAYLOAD_TYPE_SESSION_CONFIRMED: - if (auth != AuthType.SESSION) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - _establisher.receiveSessionConfirmed(from, inState, reader); - break; - case UDPPacket.PAYLOAD_TYPE_SESSION_CREATED: - // this is the only type that allows BOBINTRO - if (auth != AuthType.BOBINTRO && auth != AuthType.SESSION) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - _establisher.receiveSessionCreated(from, outState, reader); - break; - case UDPPacket.PAYLOAD_TYPE_DATA: - if (auth != AuthType.SESSION) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - if (outState != null) - state = _establisher.receiveData(outState); - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received new DATA packet from " + state + ": " + packet); - UDPPacketReader.DataReader dr = reader.getDataReader(); - if (state != null) { - if (_log.shouldLog(Log.DEBUG)) { - StringBuilder msg = new StringBuilder(512); - msg.append("Receive ").append(System.identityHashCode(packet)); - msg.append(" from ").append(state.getRemotePeer().toBase64()).append(" ").append(state.getRemoteHostId()); - try { - int count = dr.readFragmentCount(); - for (int i = 0; i < count; i++) { - msg.append(" msg ").append(dr.readMessageId(i)); - msg.append(":").append(dr.readMessageFragmentNum(i)); - if (dr.readMessageIsLast(i)) - msg.append("*"); - } - } catch (DataFormatException dfe) {} - msg.append(": ").append(dr.toString()); - _log.debug(msg.toString()); - } - //packet.beforeReceiveFragments(); - _inbound.receiveData(state, dr); - _context.statManager().addRateData("udp.receivePacketSize.dataKnown", packet.getPacket().getLength(), packet.getLifetime()); - } else { - // doesn't happen - _context.statManager().addRateData("udp.receivePacketSize.dataUnknown", packet.getPacket().getLength(), packet.getLifetime()); - } - try { - if (dr.readFragmentCount() <= 0) - _context.statManager().addRateData("udp.receivePacketSize.dataUnknownAck", packet.getPacket().getLength(), packet.getLifetime()); - } catch (DataFormatException dfe) {} - break; - case UDPPacket.PAYLOAD_TYPE_TEST: - if (auth == AuthType.BOBINTRO) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Received test packet: " + reader + " from " + from); - _testManager.receiveTest(from, state, auth == AuthType.SESSION, reader); - break; - case UDPPacket.PAYLOAD_TYPE_RELAY_REQUEST: - if (auth == AuthType.BOBINTRO) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - if (_log.shouldDebug()) - _log.debug("Received relay request packet: " + reader + " from " + from); - _introManager.receiveRelayRequest(from, reader); - break; - case UDPPacket.PAYLOAD_TYPE_RELAY_INTRO: - if (auth != AuthType.SESSION) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - if (_log.shouldDebug()) - _log.debug("Received relay intro packet: " + reader + " from " + from); - _introManager.receiveRelayIntro(from, reader); - break; - case UDPPacket.PAYLOAD_TYPE_RELAY_RESPONSE: - if (auth == AuthType.BOBINTRO) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - break; - } - if (_log.shouldDebug()) - _log.debug("Received relay response packet: " + reader + " from " + from); - _establisher.receiveRelayResponse(from, reader); - break; - case UDPPacket.PAYLOAD_TYPE_SESSION_DESTROY: - if (auth == AuthType.BOBINTRO) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - } else if (auth != AuthType.SESSION) - _establisher.receiveSessionDestroy(from); // drops - else if (outState != null) - _establisher.receiveSessionDestroy(from, outState); - else if (state != null) - _establisher.receiveSessionDestroy(from, state); - else - _establisher.receiveSessionDestroy(from); // drops - break; - default: - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping type " + type + " auth " + auth + ": " + packet); - _context.statManager().addRateData("udp.droppedInvalidUnknown", packet.getLifetime()); - return; + ((PeerState2) state).receivePacket(rem, packet); } } } - //// End SSU1-only methods //// - - //// Begin SSU2 Handling //// - - /** * Decrypt the header and hand off to the state for processing. * Packet is trial-decrypted, so fallback @@ -1091,19 +494,4 @@ } return true; } - - - //// End SSU2 Handling //// - - - /** - * Mark a string for extraction by xgettext and translation. - * Use this only in static initializers. - * It does not translate! - * @return s - * @since 0.9.20 - */ - private static final String _x(String s) { - return s; - } } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerState.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerState.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerState.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerState.java 2024-04-10 02:29:58.000000000 +0000 @@ -812,6 +812,7 @@ * @since 0.9.52 */ protected synchronized void messagePartiallyReceived(long now) { + _lastReceiveTime = now; if (_wantACKSendSince <= 0) { _wantACKSendSince = now; new ACKTimer(); @@ -1177,8 +1178,7 @@ if (_sendWindowBytes > MAX_SEND_WINDOW_BYTES) _sendWindowBytes = MAX_SEND_WINDOW_BYTES; long now = _context.clock().now(); - _lastReceiveTime = now; - _lastSendFullyTime = _lastReceiveTime; + _lastSendFullyTime = now; synchronized(_sendWindowBytesRemainingLock) { _sendWindowBytesRemaining += bytesACKed; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerState2.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerState2.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerState2.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerState2.java 2024-04-10 02:29:58.000000000 +0000 @@ -115,6 +115,8 @@ /** + * If inbound, caller MUST immediately call setWeRelayToThemAs() (if nonzero) and sendAck0(). + * * @param rtt from the EstablishState, or 0 if not available */ public PeerState2(RouterContext ctx, UDPTransport transport, @@ -135,12 +137,9 @@ _sentMessages = new ConcurrentHashMap>(32); _sentMessagesLastExpired = _keyEstablishedTime; if (isInbound) { - // Send immediate ack of Session Confirmed + // Prep for immediate ack of Session Confirmed _receivedMessages.set(0); - try { - UDPPacket ack = transport.getBuilder2().buildACK(this); - transport.send(ack); - } catch (IOException ioe) {} + // ACK 0 now sent in sendAck0() below } else { // For outbound, SessionConfirmed is packet 0 _packetNumber.set(1); @@ -148,6 +147,32 @@ _ackTimer = new ACKTimer(); } + /** + * Send immediate ACK 0 of Session Confirmed. Inbound only. + * Bundle relay tag if requested, see InboundEstablishState2. + * + * @since 0.9.62 + */ + void sendAck0() { + if (!_isInbound) + return; + long tag = getWeRelayToThemAs(); + try { + UDPPacket pkt; + if (tag > 0) { + SSU2Payload.Block block = new SSU2Payload.RelayTagBlock(tag); + pkt = _transport.getBuilder2().buildPacket(Collections.emptyList(), + Collections.singletonList(block), + this); + if (_log.shouldInfo()) + _log.info("Sending ack 0 with tag " + tag + " on " + this); + } else { + pkt = _transport.getBuilder2().buildACK(this); + } + _transport.send(pkt); + } catch (IOException ioe) {} + } + // SSU 1 overrides @Override diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java 2024-04-10 02:29:58.000000000 +0000 @@ -826,8 +826,17 @@ status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_OK : Status.IPV4_OK_IPV6_UNKNOWN; } } else if (test.getReceiveBobTime() > 0) { - // we received a message from bob (4) but no messages from charlie - status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_FIREWALLED : Status.IPV4_FIREWALLED_IPV6_UNKNOWN; + // We received a message from bob (4) but no messages from charlie + // i2pd bobs pick firewalled charlies, if we don't hear from them we call it unknown, + // otherwise we get a lot of false positives, almost always on IPv6. + // This appears to be a i2pd bug on the charlie side? + if (isIPv6 && PENDING_IP.equals(test.getCharlieIP())) { + if (_log.shouldWarn()) + _log.warn("Test complete, no response from firewalled Charlie, will retest"); + status = Status.UNKNOWN; + } else { + status = isIPv6 ? Status.IPV4_UNKNOWN_IPV6_FIREWALLED : Status.IPV4_FIREWALLED_IPV6_UNKNOWN; + } } else { // we never received anything from bob or charlie, // ignoring us, or unable to get a Charlie to respond @@ -1665,10 +1674,19 @@ } } else { // i2pd Bob picks firewalled Charlie, allow it - if (_log.shouldWarn()) - _log.warn("Charlie IP not found: " + test + '\n' + ra); - charlieIP = PENDING_IP; - charliePort = PENDING_PORT; + // but only if B cap is published. i2pd through 0.9.61 would pick address without B cap + // and i2pd charlie would agree without B cap + String caps = ra.getOption(UDPAddress.PROP_CAPACITY); + if (caps != null && caps.indexOf(UDPAddress.CAPACITY_TESTING) >= 0) { + if (_log.shouldWarn()) + _log.warn("Charlie IP not found: " + test + '\n' + ra); + charlieIP = PENDING_IP; + charliePort = PENDING_PORT; + } else { + // fail + if (_log.shouldWarn()) + _log.warn("Bob picked Charlie without B cap: " + test + '\n' + ra); + } } } else { if (_log.shouldWarn()) diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/SSU2Payload.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/SSU2Payload.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/SSU2Payload.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/SSU2Payload.java 2024-04-10 02:29:58.000000000 +0000 @@ -197,14 +197,20 @@ if (ftot == 0) throw new IOException("Bad fragment count for ROUTERINFO: " + ftot); if (fnum == 0 && ftot == 1) { - RouterInfo alice = new RouterInfo(); ByteArrayInputStream bais; if (gz) { byte decompressed[] = DataHelper.decompress(payload, i + 2, len - 2); + if (decompressed.length > RouterInfo.MAX_UNCOMPRESSED_SIZE) + throw new DataFormatException("RI too big: " + decompressed.length); bais = new ByteArrayInputStream(decompressed); } else { + if (len - 2 > RouterInfo.MAX_UNCOMPRESSED_SIZE) + throw new DataFormatException("RI too big: " + (len - 2)); bais = new ByteArrayInputStream(payload, i + 2, len - 2); } + if (bais.available() >= 3*1024) + flood = false; + RouterInfo alice = new RouterInfo(); alice.readBytes(bais, true); cb.gotRI(alice, isHandshake, flood); } else { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/SSU2Util.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/SSU2Util.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/SSU2Util.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/SSU2Util.java 2024-04-10 02:29:58.000000000 +0000 @@ -71,13 +71,6 @@ public static final int MIN_SESSION_REQUEST_LEN = MIN_HANDSHAKE_DATA_LEN; /** 88 */ public static final int MIN_SESSION_CREATED_LEN = MIN_HANDSHAKE_DATA_LEN; - /** - * 380 - * Any RI, even compressed, will be at least 400 bytes. - * It has a minimum 387 byte ident and 40 byte sig, neither is compressible. - * Use 300 just to be safe for compression. - */ - public static final int MIN_SESSION_CONFIRMED_LEN = SHORT_HEADER_SIZE + KEY_LEN + MAC_LEN + 300 + MAC_LEN; /** 3 byte block header */ public static final int FIRST_FRAGMENT_HEADER_SIZE = SSU2Payload.BLOCK_HEADER_SIZE; diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java 2024-04-10 02:29:58.000000000 +0000 @@ -248,8 +248,8 @@ _socket.receive(dpacket); //} int size = dpacket.getLength(); - if (_log.shouldLog(Log.INFO)) - _log.info("After blocking socket.receive: packet is " + size + " bytes on " + System.identityHashCode(packet)); + //if (_log.shouldDebug()) + // _log.debug("After blocking socket.receive: packet is " + size + " bytes on " + System.identityHashCode(packet)); packet.resetBegin(); // and block after we know how much we read but before @@ -261,7 +261,7 @@ if (_context.commSystem().isDummy()) { // testing packet.release(); - } else if (size > 0) { + } else if (size >= SSU2Util.MIN_DATA_LEN) { //FIFOBandwidthLimiter.Request req = _context.bandwidthLimiter().requestInbound(size, "UDP receiver"); //_context.bandwidthLimiter().requestInbound(req, size, "UDP receiver"); FIFOBandwidthLimiter.Request req = @@ -280,11 +280,9 @@ receive(packet); //_context.statManager().addRateData("udp.receivePacketSize", size); } else { - _context.statManager().addRateData("udp.receiveHolePunch", 1); - // nat hole punch packets are 0 bytes - if (_log.shouldLog(Log.INFO)) - _log.info("Received a 0 byte udp packet from " + dpacket.getAddress() + ":" + dpacket.getPort()); - _transport.getEstablisher().receiveHolePunch(dpacket.getAddress(), dpacket.getPort()); + // SSU1 had 0 byte hole punch, SSU2 does not + if (_log.shouldWarn()) + _log.warn("Dropping short " + size + " byte udp packet from " + dpacket.getAddress() + ":" + dpacket.getPort()); packet.release(); } } catch (IOException ioe) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/UDPTransport.java i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/UDPTransport.java --- i2p-2.4.0/router/java/src/net/i2p/router/transport/udp/UDPTransport.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/transport/udp/UDPTransport.java 2024-04-10 02:29:58.000000000 +0000 @@ -275,10 +275,8 @@ */ private static final String MIN_SIGTYPE_VERSION = "0.9.17"; - /** - * IPv6 Peer Testing supported - */ - private static final String MIN_V6_PEER_TEST_VERSION = "0.9.27"; + // SSU2 stable + private static final String MIN_PEER_TEST_VERSION = "0.9.59"; // various state bitmaps @@ -4215,11 +4213,9 @@ RouterInfo peerInfo = _context.netDb().lookupRouterInfoLocally(peer.getRemotePeer()); if (peerInfo == null) continue; - if (isIPv6) { - String v = peerInfo.getVersion(); - if (VersionComparator.comp(v, MIN_V6_PEER_TEST_VERSION) < 0) - continue; - } + String v = peerInfo.getVersion(); + if (VersionComparator.comp(v, MIN_PEER_TEST_VERSION) < 0) + continue; ip = null; List addrs = getTargetAddresses(peerInfo); for (RouterAddress addr : addrs) { diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java i2p-2.5.0/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java --- i2p-2.4.0/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java 2024-04-10 02:29:58.000000000 +0000 @@ -262,9 +262,12 @@ case DeliveryInstructions.DELIVERY_MODE_LOCAL: if (_log.shouldLog(Log.DEBUG)) _log.debug("local delivery instructions for clove: " + data.getClass().getSimpleName()); - if (type == GarlicMessage.MESSAGE_TYPE) { + switch (type) { + case GarlicMessage.MESSAGE_TYPE: _receiver.receive((GarlicMessage)data); - } else if (type == DatabaseStoreMessage.MESSAGE_TYPE) { + break; + + case DatabaseStoreMessage.MESSAGE_TYPE: // Treat db store explicitly here (not in HandleFloodfillDatabaseStoreMessageJob), // since we don't want to republish (or flood) // unnecessarily. Reply tokens ignored. @@ -318,7 +321,9 @@ + ") for: " + dsm.getKey()); _context.inNetMessagePool().add(dsm, null, null, _msgIDBloomXor); } - } else if (_client != null && type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { + break; + + case DatabaseSearchReplyMessage.MESSAGE_TYPE: // DSRMs show up here now that replies are encrypted // TODO: Strip in IterativeLookupJob etc. instead, depending on // LS or RI and client or expl., so that we can safely follow references @@ -336,24 +341,37 @@ } ****/ _context.inNetMessagePool().add(orig, null, null, _msgIDBloomXor); - } else if (type == DataMessage.MESSAGE_TYPE) { + break; + + case DataMessage.MESSAGE_TYPE: // a data message targetting the local router is how we send load tests (real // data messages target destinations) _context.statManager().addRateData("tunnel.handleLoadClove", 1); data = null; //_context.inNetMessagePool().add(data, null, null); - } else if (_client != null && type != DeliveryStatusMessage.MESSAGE_TYPE && - type != OutboundTunnelBuildReplyMessage.MESSAGE_TYPE) { - // drop it, since the data we receive shouldn't include other stuff, - // as that might open an attack vector + break; + + case DeliveryStatusMessage.MESSAGE_TYPE: + case OutboundTunnelBuildReplyMessage.MESSAGE_TYPE: + _context.inNetMessagePool().add(data, null, null, _msgIDBloomXor); + break; + + default: + // drop it, since the data we receive shouldn't include other stuff, + // as that might open an attack vector + if (_client != null) { _context.statManager().addRateData("tunnel.dropDangerousClientTunnelMessage", 1, data.getType()); _log.error("Dropped dangerous message received down a tunnel for " + _clientNickname + " (" + _client.toBase32() + ") : " + data, new Exception("cause")); - } else { - _context.inNetMessagePool().add(data, null, null, _msgIDBloomXor); - } + } else { + _log.error("Dropped dangerous message received down an expl. tunnel " + + data, new Exception("cause")); + } + break; + + } // switch (type) return; case DeliveryInstructions.DELIVERY_MODE_DESTINATION: diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java i2p-2.5.0/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java --- i2p-2.4.0/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/tunnel/OutboundTunnelEndpoint.java 2024-04-10 02:29:58.000000000 +0000 @@ -2,7 +2,6 @@ import net.i2p.data.Hash; import net.i2p.data.TunnelId; -import net.i2p.data.i2np.DatabaseStoreMessage; import net.i2p.data.i2np.I2NPMessage; import net.i2p.data.i2np.TunnelDataMessage; import net.i2p.router.OutNetMessage; @@ -21,7 +20,6 @@ private final HopProcessor _processor; private final FragmentHandler _handler; private final OutboundMessageDistributor _outDistributor; - private int _lsdsm, _ridsm, _i2npmsg, _totalmsg; public OutboundTunnelEndpoint(RouterContext ctx, HopConfig config, HopProcessor processor) { _context = ctx; @@ -30,7 +28,6 @@ _processor = processor; _handler = new RouterFragmentHandler(ctx, new DefragmentedHandler()); _outDistributor = new OutboundMessageDistributor(ctx, OutNetMessage.PRIORITY_PARTICIPATING); - _totalmsg = _lsdsm = _ridsm = _i2npmsg = 0; } public void dispatch(TunnelDataMessage msg, Hash recvFrom) { @@ -59,7 +56,6 @@ private class DefragmentedHandler implements FragmentHandler.DefragmentedReceiver { public void receiveComplete(I2NPMessage msg, Hash toRouter, TunnelId toTunnel) { - _totalmsg++; if (toRouter == null) { // Delivery type LOCAL is not supported at the OBEP // We don't have any use for it yet. @@ -73,41 +69,6 @@ + " to be forwarded on to " + toRouter.toBase64().substring(0,4) + (toTunnel != null ? ":" + toTunnel.getTunnelId() : "")); - if (toTunnel == null) { - int msgtype = msg.getType(); - if (msgtype == DatabaseStoreMessage.MESSAGE_TYPE) { - DatabaseStoreMessage dsm = (DatabaseStoreMessage)msg; - if (!dsm.getEntry().isLeaseSet()) { - _ridsm++; - _context.statManager().addRateData("tunnel.outboundTunnelEndpointFwdRIDSM", 1); - if (_log.shouldLog(Log.WARN)) - _log.warn("OBEP directly forwarding RI DSM (count: " - + _ridsm + "/" + _totalmsg + ") from tunnel id " - + _config.getReceiveTunnelId() - + " to router " - + toRouter.toBase64().substring(0,4) - + " with message: " + dsm); - } else { - _lsdsm++; - if (_log.shouldLog(Log.INFO)) - _log.info("OBEP directly forwarding LS DSM (count: " - + _lsdsm + "/" + _totalmsg + ") from tunnel id " - + _config.getReceiveTunnelId() - + " to router " - + toRouter.toBase64().substring(0,4) - + " with message: " + dsm); - } - } else { - _i2npmsg++; - if (_log.shouldLog(Log.INFO)) - _log.info("OBEP directly forwarding I2NP Message (count: " - + _i2npmsg + "/" + _totalmsg + ") from tunnel id " - + _config.getReceiveTunnelId() - + " to router " - + toRouter.toBase64().substring(0,4) - + " with message: " + msg); - } - } int size = msg.getMessageSize(); // don't drop it if we are the target boolean toUs = _context.routerHash().equals(toRouter); diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java i2p-2.5.0/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java --- i2p-2.4.0/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java 2024-04-10 02:29:58.000000000 +0000 @@ -226,8 +226,6 @@ ctx.statManager().createRateStat("tunnel.handleLoadClove", "When do we receive load test cloves", "Tunnels", new long[] { 60*60*1000 }); // following is for PumpedTunnelGateway ctx.statManager().createRateStat("tunnel.dropGatewayOverflow", "Dropped message at GW, queue full", "Tunnels", new long[] { 60*60*1000 }); - ctx.statManager().createRateStat("tunnel.inboundI2NPGarlicRIDSM", "IBMD Storing Garlic RI DSM", - "Tunnels", new long[] { 10*60*1000, 60*60*1000 }); ctx.statManager().createRateStat("tunnel.outboundTunnelEndpointFwdRIDSM", "OBTE Forwarding RI DSM", "Tunnels", new long[] { 10*60*1000, 60*60*1000 }); } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/tunnel/pool/TestJob.java i2p-2.5.0/router/java/src/net/i2p/router/tunnel/pool/TestJob.java --- i2p-2.4.0/router/java/src/net/i2p/router/tunnel/pool/TestJob.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/tunnel/pool/TestJob.java 2024-04-10 02:29:58.000000000 +0000 @@ -76,20 +76,19 @@ if (ctx.router().gracefulShutdownInProgress()) return; // don't reschedule _found = false; - // note: testing with exploratory tunnels always, even if the tested tunnel - // is a client tunnel (per _cfg.getDestination()) - // should we test with the tunnel that we exposed the creation with? - // (accessible as _cfg.getPairedTunnel()) - _replyTunnel = null; - _outTunnel = null; + boolean isExpl = _pool.getSettings().isExploratory(); if (_cfg.isInbound()) { _replyTunnel = _cfg; - // TODO if testing is re-enabled, pick closest to far end - _outTunnel = ctx.tunnelManager().selectOutboundTunnel(); + if (isExpl) + _outTunnel = ctx.tunnelManager().selectOutboundTunnel(); + else + _outTunnel = ctx.tunnelManager().selectOutboundTunnel(_pool.getSettings().getDestination()); _otherTunnel = (PooledTunnelCreatorConfig) _outTunnel; } else { - // TODO if testing is re-enabled, pick closest to far end - _replyTunnel = ctx.tunnelManager().selectInboundTunnel(); + if (isExpl) + _replyTunnel = ctx.tunnelManager().selectInboundTunnel(); + else + _replyTunnel = ctx.tunnelManager().selectInboundTunnel(_pool.getSettings().getDestination()); _outTunnel = _cfg; _otherTunnel = (PooledTunnelCreatorConfig) _replyTunnel; } @@ -109,7 +108,7 @@ m.setMessageId(ctx.random().nextLong(I2NPMessage.MAX_ID_VALUE)); ReplySelector sel = new ReplySelector(m.getMessageId(), testExpiration); OnTestReply onReply = new OnTestReply(); - OnTestTimeout onTimeout = new OnTestTimeout(); + OnTestTimeout onTimeout = new OnTestTimeout(now); OutNetMessage msg = ctx.messageRegistry().registerPending(sel, onReply, onTimeout); onReply.setSentMessage(msg); sendTest(m, testPeriod); @@ -122,37 +121,42 @@ // remembering that key+tag so that we can decrypt it later. this means we can do the // garlic encryption without any ElGamal (yay) final RouterContext ctx = getContext(); - MessageWrapper.OneTimeSession sess; - if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { - // to client. false means don't force AES - sess = MessageWrapper.generateSession(ctx, _pool.getSettings().getDestination(), testPeriod, false); - } else { - // to router. AES or ChaCha. - sess = MessageWrapper.generateSession(ctx, testPeriod); - } - if (sess == null) { - scheduleRetest(); - return; - } - GarlicMessage msg; - if (sess.tag != null) { - // AES - _encryptTag = sess.tag; - msg = MessageWrapper.wrap(ctx, m, sess.key, sess.tag); + if (ctx.random().nextInt(4) != 0) { + MessageWrapper.OneTimeSession sess; + if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { + // to client. false means don't force AES + sess = MessageWrapper.generateSession(ctx, _pool.getSettings().getDestination(), testPeriod, false); + } else { + // to router. AES or ChaCha. + sess = MessageWrapper.generateSession(ctx, testPeriod); + } + if (sess == null) { + scheduleRetest(); + return; + } + if (sess.tag != null) { + // AES + _encryptTag = sess.tag; + m = MessageWrapper.wrap(ctx, m, sess.key, sess.tag); + } else { + // ratchet + _ratchetEncryptTag = sess.rtag; + m = MessageWrapper.wrap(ctx, m, sess.key, sess.rtag); + } + if (m == null) { + // overloaded / unknown peers / etc + scheduleRetest(); + return; + } } else { - // ratchet - _ratchetEncryptTag = sess.rtag; - msg = MessageWrapper.wrap(ctx, m, sess.key, sess.rtag); - } - if (msg == null) { - // overloaded / unknown peers / etc - scheduleRetest(); - return; + // Periodically send unencrypted DSM to provide cover for netdb replies + if (_log.shouldDebug()) + _log.debug("Sending garlic test unencrypted"); } _id = __id.getAndIncrement(); if (_log.shouldLog(Log.DEBUG)) _log.debug("Sending garlic test #" + _id + " of " + _outTunnel + " / " + _replyTunnel); - ctx.tunnelDispatcher().dispatchOutbound(msg, _outTunnel.getSendTunnelId(0), + ctx.tunnelDispatcher().dispatchOutbound(m, _outTunnel.getSendTunnelId(0), _replyTunnel.getReceiveTunnelId(0), _replyTunnel.getPeer(0)); } @@ -327,17 +331,17 @@ private class OnTestTimeout extends JobImpl { private final long _started; - public OnTestTimeout() { + public OnTestTimeout(long now) { super(TestJob.this.getContext()); - _started = getContext().clock().now(); + _started = now; } public String getName() { return "Tunnel test timeout"; } public void runJob() { - //if (_log.shouldLog(Log.WARN)) - // _log.warn("Tunnel test #" + _id + " timeout: found? " + _found); - if (!_found) { + if (_log.shouldDebug()) + _log.debug("Tunnel test #" + _id + " timeout: found? " + _found); + if (!_found && (_encryptTag != null || _ratchetEncryptTag != null)) { // don't clog up the SKM with old one-tag tagsets SessionKeyManager skm; if (_cfg.isInbound() && !_pool.getSettings().isExploratory()) { @@ -364,6 +368,8 @@ rskm.consumeTag(_ratchetEncryptTag); } } + } + if (!_found) { testFailed(getContext().clock().now() - _started); } } diff -Nru i2p-2.4.0/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java i2p-2.5.0/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java --- i2p-2.4.0/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java 2024-04-10 02:29:58.000000000 +0000 @@ -42,7 +42,9 @@ */ public abstract class TunnelPeerSelector extends ConnectChecker { - private static final String DEFAULT_EXCLUDE_CAPS = String.valueOf(Router.CAPABILITY_BW12)+String.valueOf(Router.CAPABILITY_CONGESTION_SEVERE);//+String.valueOf(Router.CAPABILITY_CONGESTION_MODERATE); + private static final String DEFAULT_EXCLUDE_CAPS = String.valueOf(Router.CAPABILITY_BW12) + + String.valueOf(Router.CAPABILITY_CONGESTION_SEVERE) + + String.valueOf(Router.CAPABILITY_NO_TUNNELS); protected TunnelPeerSelector(RouterContext context) { super(context); @@ -231,8 +233,14 @@ if (info == null) return true; + // reduce load on floodfills + String caps = info.getCapabilities(); + if (isExploratory && + caps.indexOf(FloodfillNetworkDatabaseFacade.CAPABILITY_FLOODFILL) >= 0 && + ctx.random().nextInt(4) != 0) + return true; + if (filterUnreachable(isInbound, isExploratory)) { - String caps = info.getCapabilities(); if (caps.indexOf(Router.CAPABILITY_UNREACHABLE) >= 0) return true; } @@ -340,8 +348,8 @@ return ctx.getProperty("router.excludePeerCaps", DEFAULT_EXCLUDE_CAPS); } - /** Short ECIES tunnel build messages (1.5.0) */ - private static final String MIN_VERSION = "0.9.51"; + /** SSU2 fixes (2.1.0), Congestion fixes (2.2.0) */ + private static final String MIN_VERSION = "0.9.58"; /** * Should the peer be excluded based on its published caps? diff -Nru i2p-2.4.0/router/java/test/junit/net/i2p/router/client/LocalClientManager.java i2p-2.5.0/router/java/test/junit/net/i2p/router/client/LocalClientManager.java --- i2p-2.4.0/router/java/test/junit/net/i2p/router/client/LocalClientManager.java 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/java/test/junit/net/i2p/router/client/LocalClientManager.java 2024-04-10 02:29:58.000000000 +0000 @@ -56,19 +56,16 @@ * @param flags ignored for local */ @Override - void distributeMessage(Destination fromDest, Destination toDest, Payload payload, + void distributeMessage(ClientConnectionRunner sender, Destination fromDest, Destination toDest, Payload payload, MessageId msgId, long messageNonce, long expiration, int flags) { // check if there is a runner for it - ClientConnectionRunner sender = getRunner(fromDest); ClientConnectionRunner runner = getRunner(toDest); if (runner != null) { if (dropX1000 > 0) { if (100 * 1000 * _ctx.random().nextFloat() < dropX1000) { System.out.println("Message " + msgId + " DROPPED randomly"); - if (sender != null) { - // pretend success - sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_SUCCESS); - } + // pretend success + sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_SUCCESS); } } if (latency > 0 || jitter > 0) { @@ -83,15 +80,12 @@ } } boolean ok = runner.receiveMessage(toDest, fromDest, payload); - if (sender != null) { - int rc = ok ? MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL : MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL; - sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, rc); - } + int rc = ok ? MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL : MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL; + sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, rc); } else { // remote. ignore. System.out.println("Message " + msgId + " is targeting a REMOTE destination - DROPPED"); - if (sender != null) - sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE); + sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE); } } @@ -113,10 +107,8 @@ public void timeReached() { boolean ok = r.receiveMessage(td, fd, pl); - if (s != null) { - int rc = ok ? MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL : MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL; - s.updateMessageDeliveryStatus(fd, id, nonce, rc); - } + int rc = ok ? MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL : MessageStatusMessage.STATUS_SEND_FAILURE_LOCAL; + s.updateMessageDeliveryStatus(fd, id, nonce, rc); } } diff -Nru i2p-2.4.0/router/locale/messages_cs.po i2p-2.5.0/router/locale/messages_cs.po --- i2p-2.4.0/router/locale/messages_cs.po 2023-12-21 01:43:33.000000000 +0000 +++ i2p-2.5.0/router/locale/messages_cs.po 2024-04-10 02:29:58.000000000 +0000 @@ -6,7 +6,7 @@ # # Translators: # zzzi2p, 2019 -# slrslr, 2021 +# slrslr, 2024 # msgid "" msgstr "" @@ -14,8 +14,8 @@ "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-12-18 13:32+0000\n" "PO-Revision-Date: 2019-12-19 14:09+0000\n" -"Last-Translator: slrslr, 2021\n" -"Language-Team: Czech (https://www.transifex.com/otf/teams/12694/cs/)\n" +"Last-Translator: slrslr, 2024\n" +"Language-Team: Czech (https://app.transifex.com/otf/teams/12694/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -45,7 +45,7 @@ #: ../java/src/net/i2p/router/CommSystemFacade.java:375 msgid "IPv4: Disabled; IPv6: OK" -msgstr "IPv4: Zakázáno, IPv6: OK" +msgstr "IPv4: Vypnuto, IPv6: OK" #: ../java/src/net/i2p/router/CommSystemFacade.java:376 msgid "IPv4: Symmetric NAT; IPv6: OK"