merge of '0bd9edccbe59dc0c8dddee2b45cde1af0f8551f2'

and '779311c9e2df158049abc2e0f56e4e9fcb071142'
This commit is contained in:
dream
2010-06-03 06:27:12 +00:00
30 changed files with 2003 additions and 1396 deletions

View File

@@ -49,7 +49,7 @@ do
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean poupdate.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 \
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ --keyword=_x \
-o ${i}t
if [ $? -ne 0 ]

View File

@@ -388,6 +388,7 @@ public class Peer implements Comparable
* Sets whether or not we are interested in pieces from this peer.
* Defaults to false. When interest is true and this peer unchokes
* us then we start downloading from it. Has no effect when not connected.
* @deprecated unused
*/
public void setInteresting(boolean interest)
{

View File

@@ -118,7 +118,7 @@ class PeerCheckerTask extends TimerTask
// Choke a percentage of them rather than all so it isn't so drastic...
// unless this torrent is over the limit all by itself.
boolean overBWLimitChoke = upload > 0 &&
((overBWLimit && random.nextInt(5) < 2) ||
((overBWLimit && random.nextBoolean()) ||
(coordinator.overUpBWLimit(uploaded)));
// If we are at our max uploaders and we have lots of other

View File

@@ -489,6 +489,13 @@ public class PeerCoordinator implements PeerListener
return false;
}
/**
* This should be somewhat less than the max conns per torrent,
* but not too much less, so a torrent doesn't get stuck near the end.
* @since 0.7.14
*/
private static final int END_GAME_THRESHOLD = 8;
/**
* Returns one of pieces in the given BitField that is still wanted or
* -1 if none of the given pieces are wanted.
@@ -525,7 +532,7 @@ public class PeerCoordinator implements PeerListener
// AND if there are almost no wanted pieces left (real end game).
// If we do end game all the time, we generate lots of extra traffic
// when the seeder is super-slow and all the peers are "caught up"
if (wantedPieces.size() > 4)
if (wantedPieces.size() > END_GAME_THRESHOLD)
return -1; // nothing to request and not in end game
// let's not all get on the same piece
Collections.shuffle(requested);

View File

@@ -29,7 +29,7 @@ public class SnarkManager implements Snark.CompleteListener {
private static SnarkManager _instance = new SnarkManager();
public static SnarkManager instance() { return _instance; }
/** map of (canonical) filename to Snark instance (unsynchronized) */
/** map of (canonical) filename of the .torrent file to Snark instance (unsynchronized) */
private final Map<String, Snark> _snarks;
private final Object _addSnarkLock;
private /* FIXME final FIXME */ File _configFile;
@@ -396,12 +396,30 @@ public class SnarkManager implements Snark.CompleteListener {
/** hardcoded for sanity. perhaps this should be customizable, for people who increase their ulimit, etc. */
private static final int MAX_FILES_PER_TORRENT = 512;
/** set of filenames that we are dealing with */
/** set of canonical .torrent filenames that we are dealing with */
public Set<String> listTorrentFiles() { synchronized (_snarks) { return new HashSet(_snarks.keySet()); } }
/**
* Grab the torrent given the (canonical) filename
* Grab the torrent given the (canonical) filename of the .torrent file
* @return Snark or null
*/
public Snark getTorrent(String filename) { synchronized (_snarks) { return (Snark)_snarks.get(filename); } }
/**
* Grab the torrent given the base name of the storage
* @return Snark or null
* @since 0.7.14
*/
public Snark getTorrentByBaseName(String filename) {
synchronized (_snarks) {
for (Snark s : _snarks.values()) {
if (s.storage.getBaseName().equals(filename))
return s;
}
}
return null;
}
public void addTorrent(String filename) { addTorrent(filename, false); }
public void addTorrent(String filename, boolean dontAutoStart) {
if ((!dontAutoStart) && !_util.connected()) {
@@ -595,8 +613,8 @@ public class SnarkManager implements Snark.CompleteListener {
} else if (info.getPieces() > Storage.MAX_PIECES) {
return _("Too many pieces in \"{0}\", limit is {1}, deleting it!", info.getName(), Storage.MAX_PIECES);
} else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) {
return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize(info.getPieceLength(0))) + ' ' +
_("Limit is {0}B", DataHelper.formatSize(Storage.MAX_PIECE_SIZE));
return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' +
_("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE));
} else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
System.out.println("torrent info: " + info.toString());
List lengths = info.getLengths();
@@ -689,7 +707,7 @@ public class SnarkManager implements Snark.CompleteListener {
public void torrentComplete(Snark snark) {
File f = new File(snark.torrent);
long len = snark.meta.getTotalLength();
addMessage(_("Download finished: \"{0}\"", f.getName()) + " (" + _("size: {0}B", DataHelper.formatSize(len)) + ')');
addMessage(_("Download finished: \"{0}\"", f.getName()) + " (" + _("size: {0}B", DataHelper.formatSize2(len)) + ')');
updateStatus(snark);
}

View File

@@ -315,12 +315,12 @@ public class Storage
if (!bitfield.get(pc))
rv = Math.min(psz - (start % psz), lengths[i]);
int pieces = metainfo.getPieces();
for (int j = pc + 1; j * psz < end && j < pieces; j++) {
for (int j = pc + 1; (((long)j) * psz) < end && j < pieces; j++) {
if (!bitfield.get(j)) {
if ((j+1)*psz < end)
if (((long)(j+1))*psz < end)
rv += psz;
else
rv += end - (j * psz);
rv += end - (((long)j) * psz);
}
}
return rv;
@@ -339,6 +339,18 @@ public class Storage
return bitfield;
}
/**
* The base file or directory name of the data,
* as specified in the .torrent file, but filtered to remove
* illegal characters. This is where the data actually is,
* relative to the snark base dir.
*
* @since 0.7.14
*/
public String getBaseName() {
return filterName(metainfo.getName());
}
/**
* Creates (and/or checks) all files from the metainfo file list.
*/

View File

@@ -547,9 +547,11 @@ public class I2PSnarkServlet extends Default {
l = l.substring(skip.length());
if (r.startsWith(skip))
r = r.substring(skip.length());
if (l.toLowerCase().startsWith("the "))
String llc = l.toLowerCase();
if (llc.startsWith("the ") || llc.startsWith("the."))
l = l.substring(4);
if (r.toLowerCase().startsWith("the "))
String rlc = r.toLowerCase();
if (rlc.startsWith("the ") || rlc.startsWith("the."))
r = r.substring(4);
return collator.compare(l, r);
}
@@ -681,7 +683,7 @@ public class I2PSnarkServlet extends Default {
out.write("<td align=\"left\" class=\"snarkTorrentName " + rowClass + "\">");
if (remaining == 0 || snark.meta.getFiles() != null) {
out.write("<a href=\"" + snark.meta.getName());
out.write("<a href=\"" + snark.storage.getBaseName());
if (snark.meta.getFiles() != null)
out.write("/");
out.write("\" title=\"");
@@ -695,7 +697,7 @@ public class I2PSnarkServlet extends Default {
if (snark.meta.getFiles() != null)
icon = "folder";
else
icon = toIcon(fullFilename);
icon = toIcon(snark.meta.getName());
out.write(toImg(icon));
out.write(filename);
if (remaining == 0 || snark.meta.getFiles() != null)
@@ -1091,6 +1093,9 @@ public class I2PSnarkServlet extends Default {
/** dummies for translation */
private static final String HOPS = ngettext("1 hop", "{0} hops");
private static final String TUNNELS = ngettext("1 tunnel", "{0} tunnels");
/** prevents the ngettext line below from getting tagged */
private static final String DUMMY0 = "{0} ";
private static final String DUMMY1 = "1 ";
/** modded from ConfigTunnelsHelper @since 0.7.14 */
private String renderOptions(int min, int max, String strNow, String selName, String name) {
@@ -1104,7 +1109,8 @@ public class I2PSnarkServlet extends Default {
buf.append("<option value=\"").append(i).append("\" ");
if (i == now)
buf.append("selected=\"true\" ");
buf.append(">").append(ngettext("1 " + name, "{0} " + name + 's', i));
// constants to prevent tagging
buf.append(">").append(ngettext(DUMMY1 + name, DUMMY0 + name + 's', i));
buf.append("</option>\n");
}
buf.append("</select>\n");
@@ -1208,18 +1214,13 @@ public class I2PSnarkServlet extends Default {
title = title.substring("/i2psnark/".length());
// Get the snark associated with this directory
Snark snark = null;
try {
String torrentName;
int slash = title.indexOf('/');
if (slash > 0)
torrentName = title.substring(0, slash) + ".torrent";
else
torrentName = title + ".torrent";
File dataDir = _manager.getDataDir();
String torrentAbsPath = (new File(dataDir, torrentName)).getCanonicalPath();
snark = _manager.getTorrent(torrentAbsPath);
} catch (IOException ioe) {}
String torrentName;
int slash = title.indexOf('/');
if (slash > 0)
torrentName = title.substring(0, slash);
else
torrentName = title;
Snark snark = _manager.getTorrentByBaseName(torrentName);
if (title.endsWith("/"))
title = title.substring(0, title.length() - 1);
title = _("Torrent") + ": " + title;
@@ -1371,7 +1372,7 @@ public class I2PSnarkServlet extends Default {
plc.endsWith(".ape"))
icon = "music";
else if (mime.startsWith("video/") || plc.endsWith(".mkv") || plc.endsWith(".m4v") ||
plc.endsWith(".mp4"))
plc.endsWith(".mp4") || plc.endsWith(".wmv"))
icon = "film";
else if (mime.equals("application/zip") || mime.equals("application/x-gtar") ||
mime.equals("application/compress") || mime.equals("application/gzip") ||

View File

@@ -8,16 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-25 21:14+0000\n"
"PO-Revision-Date: 2010-05-25 21:45+0000\n"
"POT-Creation-Date: 2010-05-27 14:45+0000\n"
"PO-Revision-Date: 2010-05-27 16:54+0000\n"
"Last-Translator: 4get <forget@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Russian\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:87
#, java-format
@@ -219,7 +218,7 @@ msgid "Refresh page"
msgstr "Обновить страницу"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:180
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
msgid "I2PSnark"
msgstr "I2PSnark"
@@ -228,7 +227,7 @@ msgid "Forum"
msgstr "Форум"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243
msgid "Status"
msgstr "Статус"
@@ -241,7 +240,7 @@ msgid "Show Peers"
msgstr "показать список пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1210
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
msgid "Torrent"
msgstr "Торрент"
@@ -291,13 +290,19 @@ msgstr "Всего"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
#, java-format
msgid "{0} torrents"
msgstr "{0} торрентов"
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "{0} торрент"
msgstr[1] "{0} торрента"
msgstr[2] "{0} торрентов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275
#, java-format
msgid "{0} connected peers"
msgstr "{0} подсоединенных пиров"
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "{0} подсоединенный пир"
msgstr[1] "{0} подсоединенных пиров"
msgstr[2] "{0} подсоединенных пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
#, java-format
@@ -305,13 +310,13 @@ msgid "Torrent file {0} does not exist"
msgstr "Торрент {0} не существует"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1399
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428
#, java-format
msgid "Torrent already running: {0}"
msgstr "Торрент уже запущен: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1401
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "Торрент уже в очереди: {0}"
@@ -409,330 +414,350 @@ msgid "Opening the I2P tunnel and starting all torrents."
msgstr "Соединяемся с I2P и запускаем все торренты."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
msgid "Unknown"
msgstr "Неизвестный"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:639
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641
msgid "TrackerErr"
msgstr "ОшибкаТрекера"
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:633
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:635
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:648
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000
msgid "peers"
msgstr "пир."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "{0} пир"
msgstr[1] "{0} пира"
msgstr[2] "{0} пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:647
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650
msgid "Seeding"
msgstr "Раздается"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:649
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
msgid "Complete"
msgstr "Завершен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:652
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
msgid "OK"
msgstr "Загружается"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:658
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
msgid "Stalled"
msgstr "Простаивает"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
msgid "No Peers"
msgstr "Нет Пиров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
msgid "Stopped"
msgstr "Остановлен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689
msgid "View files"
msgstr "Открыть директорию"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
msgid "Open file"
msgstr "Открыть файл"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:707
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:919
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:721
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933
msgid "Tracker"
msgstr "Трекер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:708
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:722
msgid "Details"
msgstr "Подробнее"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:742
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756
msgid "Stop the torrent"
msgstr "Остановить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758
msgid "Stop"
msgstr "Остановить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:750
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764
msgid "Start the torrent"
msgstr "Запустить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:752
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766
msgid "Start"
msgstr "Запустить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:757
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "Удалить торрент из списка и с диска"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:762
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776
#, java-format
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778
msgid "Remove"
msgstr "Удалить"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:768
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "Удалить торрент и стереть загруженные файлы"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:773
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
#, 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:775
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
msgid "Delete"
msgstr "Стереть"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
msgid "Seed"
msgstr "Сид"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "Uninteresting (У пира нет нужных нам частей торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "Uninterested (У нас нужных этому пиру частей торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:868
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "Add Torrent"
msgstr "Добавить Торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:883
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
msgid "From URL"
msgstr "Из URL"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:888
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:902
msgid "Add torrent"
msgstr "Добавить торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:905
#, java-format
msgid "Alternately, you can copy .torrent files to the directory {0}."
msgstr "Ну или вы можете скопировать .torrent-файлы в директорию {0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:893
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:907
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "Удаление .torrent-файла приведет к остановке торрента."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:910
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:924
msgid "Create Torrent"
msgstr "Создать Торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
msgid "Data to seed"
msgstr "Файлы для раздачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:917
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:931
msgid "File or directory to seed (must be within the specified path)"
msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935
msgid "Select a tracker"
msgstr "Выбрать трекер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:934
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
msgid "or"
msgstr "или"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951
msgid "Specify custom tracker announce URL"
msgstr "Задать URL анонсера вручную"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:940
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:954
msgid "Create torrent"
msgstr "Создать торрент"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:972
msgid "Configuration"
msgstr "Настройки"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:975
msgid "Data directory"
msgstr "Директория для файлов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:978
msgid "Directory to store torrents and data"
msgstr "Директория, где будут храниться торренты и загружаемые файлы"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980
msgid "Edit i2psnark.config and restart to change"
msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984
msgid "Auto start"
msgstr "Автозапуск"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
msgid "If checked, automatically start torrents that are added"
msgstr "Автоматически запускать торренты после добавления"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:997
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
msgid "Total uploader limit"
msgstr "Ограничение количества слотов отдачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1004
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
msgid "peers"
msgstr "пир."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
msgid "Up bandwidth limit"
msgstr "Ограничение скорости отдачи"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021
msgid "Half available bandwidth recommended."
msgstr "Рекомендуется использовать половину от доступной пропускной способности."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1023
msgid "View or change router bandwidth"
msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1013
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027
msgid "Use open trackers also"
msgstr "Дополнительно использовать открытые трекеры"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035
msgid "Open tracker announce URLs"
msgstr "URL открытых трекеров"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1033
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047
msgid "Inbound Settings"
msgstr "Входящие туннели"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1039
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
msgid "Outbound Settings"
msgstr "Исходящие туннели"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
msgid "I2CP host"
msgstr "Адрес I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065
msgid "I2CP port"
msgstr "Порт I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "I2CP options"
msgstr "Параметры I2CP"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082
msgid "Save configuration"
msgstr "Сохранить настройки"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1075
msgid "hop"
msgstr "хоп"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "{0} хоп"
msgstr[1] "{0} хопа"
msgstr[2] "{0} хопов"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076
msgid "tunnel"
msgstr "туннель"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1093
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "{0} туннель"
msgstr[1] "{0} туннеля"
msgstr[2] "{0} туннелей"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1078
msgid "hops"
msgstr "хопа(-ов)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107
#, java-format
msgid "1 "
msgid_plural "{0} "
msgstr[0] "{0} "
msgstr[1] "{0} "
msgstr[2] "{0} "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
msgid "tunnels"
msgstr "туннеля(-ей)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1222
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Up to higher level directory"
msgstr "Перейти в директорию уровнем выше"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1227
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "File"
msgstr "Файл"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1227
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Size"
msgstr "Размер"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1251
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
msgid "Directory"
msgstr "Директория"
# This debug error message intentionally left in English
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
msgid "Torrent not found?"
msgstr "Torrent not found?"
# This debug error message intentionally left in English
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1266
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
msgid "File not found in torrent?"
msgstr "File not found in torrent?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1273
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
msgid "complete"
msgstr "скачано"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1274
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "bytes remaining"
msgstr "байт осталось"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352
msgid "Bytes"
msgstr "байт"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1379
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
#, java-format
msgid "Torrent fetched from {0}"
msgstr "Получен торрент из: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1407
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "Торрент полученный из {0} некорректен"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1412
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1441
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "Не удалось получить торрент из: {0}"
#~ msgid "{0} torrents"
#~ msgstr "{0} торрентов"
#~ msgid "hops"
#~ msgstr "хопа(-ов)"
#~ msgid "tunnels"
#~ msgstr "туннеля(-ей)"
#~ msgid "Bytes"
#~ msgstr "байт"
#~ msgid "Cannot change the I2CP settings while torrents are active"
#~ msgstr "Невозможно изменить настройки I2CP пока есть активные торренты"

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 12:41+0000\n"
"PO-Revision-Date: 2010-03-05 21:58+0800\n"
"POT-Creation-Date: 2010-05-29 02:34+0000\n"
"PO-Revision-Date: 2010-05-29 10:55+0800\n"
"Last-Translator: walking <walking@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
@@ -18,654 +18,726 @@ msgstr ""
"X-Poedit-Language: Chinese\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:84
#: ../java/src/org/klomp/snark/SnarkManager.java:87
#, java-format
msgid "Adding torrents in {0} minutes"
msgstr "{0}分钟内完成添加"
#: ../java/src/org/klomp/snark/SnarkManager.java:242
#: ../java/src/org/klomp/snark/SnarkManager.java:251
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr ""
msgstr "总上传种子数限制已更新为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:244
#: ../java/src/org/klomp/snark/SnarkManager.java:253
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr ""
msgstr "最低上传种子数限制为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:256
#: ../java/src/org/klomp/snark/SnarkManager.java:265
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr "上传带宽限制改为 {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:258
#: ../java/src/org/klomp/snark/SnarkManager.java:267
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "最小上传带宽限制为 {0} KBps"
#: ../java/src/org/klomp/snark/SnarkManager.java:302
msgid "Cannot change the I2CP settings while torrents are active"
msgstr "正在下载/上传无法更改I2CP设置"
#: ../java/src/org/klomp/snark/SnarkManager.java:314
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:308
#: ../java/src/org/klomp/snark/SnarkManager.java:320
msgid "Disconnecting old I2CP destination"
msgstr "正在断开旧的I2CP目标"
#: ../java/src/org/klomp/snark/SnarkManager.java:312
#: ../java/src/org/klomp/snark/SnarkManager.java:324
#, java-format
msgid "I2CP settings changed to {0}"
msgstr "I2CP设置改为{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:316
#: ../java/src/org/klomp/snark/SnarkManager.java:328
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "无法通过新设置连接恢复I2CP的旧设置"
#: ../java/src/org/klomp/snark/SnarkManager.java:320
#: ../java/src/org/klomp/snark/SnarkManager.java:332
msgid "Unable to reconnect with the old settings!"
msgstr "旧设置也无法连接!"
#: ../java/src/org/klomp/snark/SnarkManager.java:322
#: ../java/src/org/klomp/snark/SnarkManager.java:334
msgid "Reconnected on the new I2CP destination"
msgstr "重新连接新I2CP目标"
#: ../java/src/org/klomp/snark/SnarkManager.java:333
#: ../java/src/org/klomp/snark/SnarkManager.java:345
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr "\"{0}\"的I2CP监听端口已启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:344
#: ../java/src/org/klomp/snark/SnarkManager.java:356
msgid "Enabled autostart"
msgstr "启用自动启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:346
#: ../java/src/org/klomp/snark/SnarkManager.java:358
msgid "Disabled autostart"
msgstr "禁用自动启动"
#: ../java/src/org/klomp/snark/SnarkManager.java:352
#: ../java/src/org/klomp/snark/SnarkManager.java:364
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr "启用OpenTracker-重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:354
#: ../java/src/org/klomp/snark/SnarkManager.java:366
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr "禁用OpenTracker - 重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:361
#: ../java/src/org/klomp/snark/SnarkManager.java:373
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr "OpenTracker列表已改变 - 重新启动种子后生效"
#: ../java/src/org/klomp/snark/SnarkManager.java:368
#: ../java/src/org/klomp/snark/SnarkManager.java:380
msgid "Configuration unchanged."
msgstr "设置未改变"
#: ../java/src/org/klomp/snark/SnarkManager.java:378
#: ../java/src/org/klomp/snark/SnarkManager.java:390
#, java-format
msgid "Unable to save the config to {0}"
msgstr "无法保存设置到{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:396
#: ../java/src/org/klomp/snark/SnarkManager.java:408
msgid "Connecting to I2P"
msgstr "正在连接到I2P"
#: ../java/src/org/klomp/snark/SnarkManager.java:399
#: ../java/src/org/klomp/snark/SnarkManager.java:411
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr "连接I2P时发生错误 - 请检查I2CP设置!"
#: ../java/src/org/klomp/snark/SnarkManager.java:408
#: ../java/src/org/klomp/snark/SnarkManager.java:420
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr "错误:无法添加种子{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:430
#: ../java/src/org/klomp/snark/SnarkManager.java:442
#, java-format
msgid "Cannot open \"{0}\""
msgstr "无法打开 \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:443
#: ../java/src/org/klomp/snark/SnarkManager.java:455
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only"
msgstr "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器文件将仅发布至 I2P 内的 Open Tracker 服务器。"
#: ../java/src/org/klomp/snark/SnarkManager.java:445
#: ../java/src/org/klomp/snark/SnarkManager.java:457
#, java-format
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!"
msgstr "警告 - 忽略\"{0}\"文件中I2P网络外的Tracker服务器OpenTracker已禁用启动此种子前您必须启用OpenTracker。"
#: ../java/src/org/klomp/snark/SnarkManager.java:464
#: ../java/src/org/klomp/snark/SnarkManager.java:476
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr "无效种子 \"{0}\" "
#: ../java/src/org/klomp/snark/SnarkManager.java:479
#: ../java/src/org/klomp/snark/SnarkManager.java:491
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr "已添加并启动种子:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:481
#: ../java/src/org/klomp/snark/SnarkManager.java:493
#, java-format
msgid "Torrent added: \"{0}\""
msgstr "已添加种子:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:578
#: ../java/src/org/klomp/snark/SnarkManager.java:590
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr "\"{0}\" ({1}) 含有太多文件,删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:580
#: ../java/src/org/klomp/snark/SnarkManager.java:592
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!"
#: ../java/src/org/klomp/snark/SnarkManager.java:582
#: ../java/src/org/klomp/snark/SnarkManager.java:594
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr "\"{0}\" 中没有数据片,删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:584
#: ../java/src/org/klomp/snark/SnarkManager.java:596
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!"
#: ../java/src/org/klomp/snark/SnarkManager.java:586
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。"
#: ../java/src/org/klomp/snark/SnarkManager.java:587
#: ../java/src/org/klomp/snark/SnarkManager.java:599
#, java-format
msgid "Limit is {0}B"
msgstr "限额为 {0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:595
#: ../java/src/org/klomp/snark/SnarkManager.java:607
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:611
#: ../java/src/org/klomp/snark/SnarkManager.java:623
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr "错误:无法删除种子{0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:632
#: ../java/src/org/klomp/snark/SnarkManager.java:644
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr "种子已停止:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:647
#: ../java/src/org/klomp/snark/SnarkManager.java:659
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr "种子已删除:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:680
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "Download finished: \"{0}\""
msgstr "下载已完成:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:680
#: ../java/src/org/klomp/snark/SnarkManager.java:692
#, java-format
msgid "size: {0}B"
msgstr "大小:{0}B"
#: ../java/src/org/klomp/snark/SnarkManager.java:708
#: ../java/src/org/klomp/snark/SnarkManager.java:720
msgid "Unable to connect to I2P!"
msgstr "无法连接至I2P!"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:169
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "I2PSnark - 匿名BitTorrent客户端"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:95
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:178
msgid "Refresh page"
msgstr "刷新页面"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:97
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:180
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
msgid "I2PSnark"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:99
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:182
msgid "Forum"
msgstr "论坛"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:125
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:208
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243
msgid "Status"
msgstr "状态"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:131
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:214
msgid "Hide Peers"
msgstr "隐藏用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:134
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:217
msgid "Show Peers"
msgstr "显示用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:139
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:222
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1225
msgid "Torrent"
msgstr "种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:141
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:224
msgid "ETA"
msgstr ""
msgstr "预计剩余时间"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:143
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226
msgid "Downloaded"
msgstr "已下载"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:145
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
msgid "Uploaded"
msgstr "已上传"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:147
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
msgid "Down Rate"
msgstr "下载速度"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:149
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:232
msgid "Up Rate"
msgstr "上传速度"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:156
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:239
msgid "Stop all torrents and the I2P tunnel"
msgstr "停止全部种子及I2P隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:158
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:241
msgid "Stop All"
msgstr "停止全部"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:163
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
msgid "Start all torrents and the I2P tunnel"
msgstr "启动全部种子及I2P隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:165
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:248
msgid "Start All"
msgstr "启动全部"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:182
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:265
msgid "No torrents loaded."
msgstr "未载入任何种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:270
msgid "Totals"
msgstr "总计"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:189
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
#, java-format
msgid "{0} torrents"
msgstr "{0} 个种子"
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "{0}个种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:192
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275
#, java-format
msgid "{0} connected peers"
msgstr "{0} 已连接用户"
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "{0}个已连接用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:227
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
#, java-format
msgid "Torrent file {0} does not exist"
msgstr "种子文件{0}不存在"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:237
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1428
#, java-format
msgid "Torrent already running: {0}"
msgstr "种子已启动:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:239
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1005
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1430
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "种子排队中:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:243
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
#, java-format
msgid "Copying torrent to {0}"
msgstr "正在复制种子到{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "Unable to copy the torrent to {0}"
msgstr "无法复制种子文件到{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:329
#, java-format
msgid "from {0}"
msgstr "来源{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
#, java-format
msgid "Fetching {0}"
msgstr "正在获取{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341
msgid "Invalid URL - must start with http://"
msgstr "无效链接 - 必须以http:// 开头"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:288
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:371
#, java-format
msgid "Starting up torrent {0}"
msgstr "正在启动种子{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:308
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:391
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:409
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "种子文件已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:415
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425
#, java-format
msgid "Data file deleted: {0}"
msgstr "数据文件已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:417
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:427
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "无法删除数据文件:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:436
#, java-format
msgid "Data dir deleted: {0}"
msgstr "数据文件夹已删除:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:384
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
msgid "Error creating torrent - you must select a tracker"
msgstr "创建种子时发生错误 - 您必须选择一个Tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:399
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:482
#, java-format
msgid "Torrent created for \"{0}\""
msgstr "种子创建成功\"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:485
#, 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:404
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:487
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr "创建种子时发生错误 \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr "无法为不存在的数据文件创建种子:{0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:410
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
msgid "Error creating torrent - you must enter a file or directory"
msgstr "创建种子时发生错误 - 必须指定文件或文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:413
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr "正在停用所有种子并关闭I2P隧道。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:422
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
msgid "I2P tunnel closed."
msgstr "I2P隧道已关闭"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:425
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
msgid "Opening the I2P tunnel and starting all torrents."
msgstr "正在打开I2P隧道并启动所有种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:505
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:683
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
msgid "Unknown"
msgstr "未知"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:516
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:636
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:641
msgid "TrackerErr"
msgstr "Tracker错误"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:522
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:531
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:875
msgid "peers"
msgstr "用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:634
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:648
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:662
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "{0}个用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:524
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:650
msgid "Seeding"
msgstr "正做种"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
msgid "Complete"
msgstr "完成"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:533
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:656
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:661
msgid "OK"
msgstr "确定"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:539
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:669
msgid "Stalled"
msgstr "等待"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:541
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:672
msgid "No Peers"
msgstr "没有用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:543
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
msgid "Stopped"
msgstr "已停用"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:556
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:689
msgid "View files"
msgstr "浏览文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:558
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
msgid "Open file"
msgstr "打开文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:721
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933
msgid "Tracker"
msgstr "Tracker服务器"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:722
msgid "Details"
msgstr "详情"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756
msgid "Stop the torrent"
msgstr "停止种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:619
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758
msgid "Stop"
msgstr "停止"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:625
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:764
msgid "Start the torrent"
msgstr "启动种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:627
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766
msgid "Start"
msgstr "启动"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:632
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:771
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "取消下载任务并删除对应种子文件。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:776
#, java-format
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:639
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:778
msgid "Remove"
msgstr "移除"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:782
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "删除种子及所下载的文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:648
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
#, 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:650
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
msgid "Delete"
msgstr "删除"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:832
msgid "Seed"
msgstr "种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:711
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:850
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "无需要部分"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:713
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "拒绝请求"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:727
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "无需要部分"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:729
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:868
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "拒绝请求"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:756
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "Add Torrent"
msgstr "添加种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:758
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
msgid "From URL"
msgstr "从URL"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:763
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:902
msgid "Add torrent"
msgstr "添加种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:766
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:905
#, java-format
msgid "Alternately, you can copy .torrent files to the directory {0}."
msgstr "或者您可以将.torrent文件复制到以下目录{0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:768
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:907
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "删除种子文件将导致中止该下载任务。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:924
msgid "Create Torrent"
msgstr "创建种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:788
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
msgid "Data to seed"
msgstr "做种数据"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:792
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:931
msgid "File or directory to seed (must be within the specified path)"
msgstr "做种文件或文件夹(必须下面为Snark指定的文件夹中)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:796
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:935
msgid "Select a tracker"
msgstr "选择一个Tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:809
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
msgid "or"
msgstr "或"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:951
msgid "Specify custom tracker announce URL"
msgstr "指定Open Tracker发布链接"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:815
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:954
msgid "Create torrent"
msgstr "创建种子"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:972
msgid "Configuration"
msgstr "设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:975
msgid "Data directory"
msgstr "数据文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:839
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:978
msgid "Directory to store torrents and data"
msgstr "种子及被做种文件的保存位置。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:841
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:980
msgid "Edit i2psnark.config and restart to change"
msgstr "编辑 i2psnark.config 并重启Snark后生效"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:984
msgid "Auto start"
msgstr "自动启动"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
msgid "If checked, automatically start torrents that are added"
msgstr "选中后Snark将自动启动已添加的所有种子。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:872
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
msgid "Total uploader limit"
msgstr ""
msgstr "限制总上传种子数为"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
msgid "peers"
msgstr "用户"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
msgid "Up bandwidth limit"
msgstr "上传带宽限制"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:882
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1021
msgid "Half available bandwidth recommended."
msgstr "推荐设置为可用带宽的一半。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:884
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1023
msgid "View or change router bandwidth"
msgstr "浏览或修改路由器带宽"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:888
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1027
msgid "Use open trackers also"
msgstr "同时使用OpenTracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:892
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1031
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:896
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1035
msgid "Open tracker announce URLs"
msgstr "Open Tracker发布链接"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:907
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1047
msgid "Inbound Settings"
msgstr "入站设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
msgid "Outbound Settings"
msgstr "出站设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
msgid "I2CP host"
msgstr "I2CP主机"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:912
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065
msgid "I2CP port"
msgstr "I2CP端口"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:925
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "I2CP options"
msgstr "I2CP选项"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:930
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082
msgid "Save configuration"
msgstr "保存设置"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "{0}跳"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1093
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "{0}隧道"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107
#, java-format
msgid "1 "
msgid_plural "{0} "
msgstr[0] ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
msgid "Up to higher level directory"
msgstr "上一层文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "File"
msgstr "文件"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
msgid "Size"
msgstr "大小"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
msgid "Directory"
msgstr "文件夹"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
msgid "Torrent not found?"
msgstr "种子未找到"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
msgid "File not found in torrent?"
msgstr "种子中没有发现文件?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
msgid "complete"
msgstr "完成"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
msgid "bytes remaining"
msgstr "剩余字节数"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
#, java-format
msgid "Torrent fetched from {0}"
msgstr "从{0}获取种子成功"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "{0}的种子中有错误"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1441
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "从{0}获得种子失败"
#~ msgid "Cannot change the I2CP settings while torrents are active"
#~ msgstr "正在下载/上传无法更改I2CP设置"
#~ msgid "{0} torrents"
#~ msgstr "{0} 个种子"
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
#~ msgstr ""
#~ "【匿名性警告】\"{0}\" 中含有非I2P Tracker程序将从Tracker列表中将其删除。"

View File

@@ -51,7 +51,7 @@ do
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean updater.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 \
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
-o ${i}t
if [ $? -ne 0 ]

File diff suppressed because it is too large Load Diff

View File

@@ -82,7 +82,7 @@ do
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean updater.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 \
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
--keyword=handler._ --keyword=formhandler._ \
--keyword=net.i2p.router.web.Messages.getString \

View File

@@ -145,7 +145,10 @@ public class ConfigNetHandler extends FormHandler {
}
_context.router().setConfigSetting(UDPTransport.PROP_SOURCES, _udpAutoIP);
// Todo: Catch local IPs right here rather than complaining later
_context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_HOST, uhost);
if (uhost.length() > 0)
_context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_HOST, uhost);
else
_context.router().removeConfigSetting(UDPTransport.PROP_EXTERNAL_HOST);
if ((!oldUdp.equals(_udpAutoIP)) || (!oldUHost.equals(uhost))) {
addFormNotice(_("Updating IP address"));
restartRequired = true;

View File

@@ -42,11 +42,15 @@ public class ConfigUpdateHandler extends FormHandler {
public static final String PROP_ZIP_URL = "router.updateUnsignedURL";
public static final String PROP_UPDATE_URL = "router.updateURL";
/**
* Changed as of release 0.7.14 from .sud to .su2
* Update hosts must maintain both for several releases
*/
public static final String DEFAULT_UPDATE_URL =
"http://echelon.i2p/i2p/i2pupdate.sud\r\n" +
"http://stats.i2p/i2p/i2pupdate.sud\r\n" +
"http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
"http://update.postman.i2p/i2pupdate.sud" ;
"http://echelon.i2p/i2p/i2pupdate.su2\r\n" +
"http://stats.i2p/i2p/i2pupdate.su2\r\n" +
"http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" +
"http://update.postman.i2p/i2pupdate.su2" ;
public static final String PROP_TRUSTED_KEYS = "router.trustedUpdateKeys";

View File

@@ -79,19 +79,21 @@ public class GraphHelper extends HelperBase {
+ "&amp;width=" + (3 * _width)
+ "&amp;height=" + (3 * _height)
+ "\" / target=\"_blank\">");
String title = _("Combined bandwidth graph");
_out.write("<img class=\"statimage\" width=\""
+ (_width + 83) + "\" height=\"" + (_height + 92)
+ "\" src=\"viewstat.jsp?stat=bw.combined"
+ "&amp;periodCount=" + _periodCount
+ "&amp;width=" + _width
+ "&amp;height=" + (_height - 14)
+ "\" alt=\"Combined bandwidth graph\" title=\"Combined bandwidth graph\"></a>\n");
+ "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
}
for (Iterator iter = ordered.iterator(); iter.hasNext(); ) {
SummaryListener lsnr = (SummaryListener)iter.next();
Rate r = lsnr.getRate();
String title = r.getRateStat().getName() + " for " + DataHelper.formatDuration(_periodCount * r.getPeriod());
// e.g. "statname for 60m"
String title = _("{0} for {1}", r.getRateStat().getName(), DataHelper.formatDuration(_periodCount * r.getPeriod()));
_out.write("<a href=\"viewstat.jsp?stat="
+ r.getRateStat().getName()
+ "&amp;showEvents=" + _showEvents

View File

@@ -51,6 +51,11 @@ public abstract class HelperBase {
return Messages.getString(s, o, _context);
}
/** two params @since 0.7.14 */
public String _(String s, Object o, Object o2) {
return Messages.getString(s, o, o2, _context);
}
/** translate (ngettext) @since 0.7.14 */
public String _(int n, String s, String p) {
return Messages.getString(n, s, p, _context);

View File

@@ -30,6 +30,11 @@ public class Messages extends Translate {
return Translate.getString(s, o, ctx, BUNDLE_NAME);
}
/** two params @since 0.7.14 */
public static String getString(String s, Object o, Object o2, I2PAppContext ctx) {
return Translate.getString(s, o, o2, ctx, BUNDLE_NAME);
}
/** translate (ngettext) @since 0.7.14 */
public static String getString(int n, String s, String p, I2PAppContext ctx) {
return Translate.getString(n, s, p, ctx, BUNDLE_NAME);

View File

@@ -170,6 +170,7 @@ public class StatSummarizer implements Runnable {
def.setTimePeriod(start/1000, 0);
def.setLowerLimit(0d);
def.setBaseValue(1024);
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
String title = _("Bandwidth usage");
if (!hideTitle)
def.setTitle(title);

View File

@@ -80,6 +80,7 @@ class SummaryRenderer {
String title;
String p = DataHelper.formatDuration(_listener.getRate().getPeriod());
if (showEvents)
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
title = name + ' ' + _("events in {0}", p);
else
title = name + ' ' + _("averaged for {0}", p);
@@ -96,7 +97,11 @@ class SummaryRenderer {
} else {
// include the average value
plotName = dsNames[0];
descr = _listener.getRate().getRateStat().getDescription();
// The descriptions are not tagged in the createRateStat calls
// (there are over 500 of them)
// but the descriptions for the default graphs are tagged in
// Strings.java
descr = _(_listener.getRate().getRateStat().getDescription());
}
def.datasource(plotName, path, plotName, "AVERAGE", "MEMORY");
def.area(plotName, Color.BLUE, descr + "@r");

View File

@@ -96,5 +96,12 @@ class Dummy {
_("itag1");
_("itag2");
// Descriptions for the stats that are graphed by default
// There are over 500 stats currently defined, we aren't going to tag them all
_("Low-level bandwidth receive rate"); // bw.recvRate
_("Low-level bandwidth send rate"); // bw.sendRate
_("How many peers we are actively talking with"); // router.activePeers
// router.memoryUsed currently has the max size in the description so it can't be tagged
}
}

View File

@@ -8,16 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-05-25 21:14+0000\n"
"PO-Revision-Date: 2010-05-26 04:20+0000\n"
"POT-Creation-Date: 2010-05-27 14:44+0000\n"
"PO-Revision-Date: 2010-05-27 16:56+0000\n"
"Last-Translator: 4get <forget@mail.i2p>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Russian\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
#: ../../../router/java/src/net/i2p/router/Blocklist.java:126
@@ -2136,21 +2135,21 @@ msgstr "Настройки зондирующих туннелей сохран
msgid "Error saving the configuration (applied but not saved) - please see the error logs."
msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в журнал ошибок"
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:11
msgid "hop"
msgstr "хоп"
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:12
msgid "tunnel"
msgstr "туннель"
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14
msgid "hops"
msgstr "хопа"
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "{0} хоп"
msgstr[1] "{0} хопа"
msgstr[2] "{0} хопов"
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15
msgid "tunnels"
msgstr "туннелей"
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "{0} туннель"
msgstr[1] "{0} туннеля"
msgstr[2] "{0} туннелей"
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
@@ -4976,6 +4975,10 @@ msgstr "обзор туннелей"
msgid "I2P Tunnel Summary"
msgstr "Обзор туннелей I2P"
#~ msgid "hops"
#~ msgstr "хопа"
#~ msgid "tunnels"
#~ msgstr "туннелей"
#~ msgid "Tunnels in/out"
#~ msgstr "Туннели (вх./исх.)"

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-05 12:44+0000\n"
"PO-Revision-Date: 2010-03-05 21:37+0800\n"
"POT-Creation-Date: 2010-05-29 02:35+0000\n"
"PO-Revision-Date: 2010-05-29 12:51+0800\n"
"Last-Translator: walking <walking@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"MIME-Version: 1.0\n"
@@ -17,79 +17,109 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Chinese\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:197
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:199
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr "搜索"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:201
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203
msgid "Search within filtered list"
msgstr "在过滤结果中搜索"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205
msgid "Filtered list"
msgstr "过滤结果列表"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:207
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209
msgid "no matches"
msgstr "无匹配项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212
msgid "Addressbook"
msgstr "地址簿"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214
msgid "contains no entries"
msgstr "包含 0 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216
msgid "contains 1 entry"
msgstr "包含 1 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218
#, java-format
msgid "contains {0} entries"
msgstr "包含 {0} 个项目"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:226
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228
#, java-format
msgid "Showing {0} of {1}"
msgstr "显示 {0} 个项目共 {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:257
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:364
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "添加"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:261
msgid "Destination added."
msgstr "目标已添加"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
msgid "Replace"
msgstr "替换"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr "主机名称{0}已存在于地址簿中,本次操作未更新。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Delete"
msgstr "删除"
#, java-format
msgid "Host name {0} is already in addressbook with a different destination. Click \"Replace\" to overwrite."
msgstr "域名{0}已以不同目标密钥的存在于地址簿中,点击“替换”进行覆盖"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:275
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277
#, java-format
msgid "Destination added for {0}."
msgstr "目标密钥已添加为{0}。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279
#, java-format
msgid "Destination changed for {0}."
msgstr "目标已更新为{0}。"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
msgid "Invalid Base 64 destination."
msgstr "无效的Base64目标密钥"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
msgid "Please enter a host name and destination"
msgstr "请输入主机名称与目标"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "删除选中项"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302
#, java-format
msgid "Destination {0} deleted."
msgstr "目标 {0} 已删除"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} 个目标已删除"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:283
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
msgid "Addressbook saved."
msgstr "地址簿已保存"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:286
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
msgid "ERROR: Could not write addressbook file."
msgstr "错误:无法写入地址簿文件"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."
@@ -97,8 +127,8 @@ msgstr "提交数据无效,可能的原因是您使用了浏览器中的“前
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Save"
msgstr "保存"
@@ -108,8 +138,8 @@ msgstr "配置已保存"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
msgid "Reload"
msgstr "刷新"
@@ -213,7 +243,7 @@ msgid "Name"
msgstr "名称"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:360
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
msgid "Destination"
msgstr "目标"
@@ -225,15 +255,19 @@ msgstr "标记为删除"
msgid "address helper link"
msgstr "地址簿助手链接"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:343
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Cancel"
msgstr "取消"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
msgstr "此地址簿为空"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:354
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
msgid "Add new destination"
msgstr "添加新目标"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
msgstr "主机名称"
@@ -393,3 +427,6 @@ msgstr "所以订阅一些网站的最新地址簿是个不错的主意。"
msgid "See the FAQ for a list of subscription URLs."
msgstr "其他来源的订阅链接参见I2P站点的 <a href=\"http://www.i2p2.i2p/faq_zh.html\">FAQ</a>"
#~ msgid "Delete"
#~ msgstr "删除"

View File

@@ -51,7 +51,7 @@ do
# To start a new translation, copy the header from an old translation to the new .po file,
# then ant distclean updater.
find $JPATHS -name *.java > $TMPFILE
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 \
xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
--keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
-o ${i}t
if [ $? -ne 0 ]

View File

@@ -255,8 +255,7 @@
<defaultexcludes default="true"/>
</target>
<!-- A few reeleases only, then back to updater. Jetty fix for snark in 0.7.14 -->
<target name="pkg" depends="distclean, updaterWithJettyFixes, preppkg, installer" />
<target name="pkg" depends="distclean, updater, preppkg, installer" />
<target name="pkgclean" depends="deletepkg-temp">
<delete>
@@ -582,6 +581,15 @@
<jar destfile="./pkg-temp/installer/exec.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Exec.class">
<manifest><attribute name="Main-Class" value="net.i2p.util.Exec" /></manifest>
</jar>
<!--
Force 1.5 pack200 output
Doesnt work!
http://jira.codehaus.org/browse/IZPACK-404
http://forums.sun.com/thread.jspa?threadID=773439
http://bfo.co.uk/blog/2010/05/13/combining_ant_jar_signatures_and_pack200.html
<property name="com.sun.java.util.jar.pack.package.majver" value="150" />
<property name="com.sun.java.util.jar.pack.package.minver" value="7" />
-->
<izpack input="${basedir}/installer/install.xml" output="${basedir}/install.jar" installerType="standard" basedir="${basedir}" />
<ant target="installerexe" />

View File

@@ -1,3 +1,21 @@
2010-06-02 zzz
* graphs.jsp: Tag some more
* Translation: Set xgettext add-comments option
* UDP: Fix a bug from a blank i2np.udp.host config
causing frequent RouterInfo updates and incorrect
addition of introducers, caused by config.jsp handling
* Update: Change default update URLs to .su2 for pack200
2010-06-01 zzz
* i2psnark:
- More listing fixes
- Revert choker change
- Start end game a little sooner
* Installer: Disable pack200 in updater again, doesn't work
on Java 1.5
* Remove jetty from updater - it's been in for a few
releases, and i2psnark now has its own listHTML method
2010-05-27 zzz
* Translate: Add GNU ngettext (plurals) support
@@ -30,7 +48,7 @@
2010-05-19 zzz
* Data: Remove lots of unnecessary initializers
* susidns: More validataion when adding entry
* susidns: More validatation when adding entry
2010-05-15 zzz
* Console:

View File

@@ -9,11 +9,14 @@
<author name="I2P" email="http://forum.i2p2.de/"/>
</authors>
<url>http://www.i2p2.de/</url>
<javaversion>1.5</javaversion>
<!-- use pack200 compression, saves about 33%
see http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/pack200.html
-->
Unpack fails on java 1.5
see http://jira.codehaus.org/browse/IZPACK-404
<pack200 />
-->
<!-- adding this element will make the installer attempt to launch itself with administrator permissions,
but see http://www.nabble.com/Classpath-security-issues-on-Vista-td22456230.html

View File

@@ -234,7 +234,7 @@ textarea {
img {
border: none;
margin: 4px 8px 4px 4px;
margin: 3px 8px 5px 4px;
vertical-align: middle;
opacity: 1.0;
line-height: 100%;

View File

@@ -18,10 +18,10 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 13;
public final static long BUILD = 16;
/** for example "-test" */
public final static String EXTRA = "";
public final static String EXTRA = "-rc";
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
public static void main(String args[]) {
System.out.println("I2P Router version: " + FULL_VERSION);

View File

@@ -1181,7 +1181,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
}
private boolean explicitAddressSpecified() {
return (_context.getProperty(PROP_EXTERNAL_HOST) != null);
String h = _context.getProperty(PROP_EXTERNAL_HOST);
// Bug in config.jsp prior to 0.7.14, sets an empty host config
return h != null && h.length() > 0;
}
/**
@@ -2146,6 +2148,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
}
}
/**
* Todo: Move since some of these apply to NTCP also, and the whole thing
* is hidden if i2np.udp.enable=false
*/
private final String getKey() {
StringBuilder buf = new StringBuilder(1024);
buf.append("<h3>").append(_("Definitions")).append("</h3><div class=\"configure\">" +