diff --git a/LICENSE.txt b/LICENSE.txt index 53e248f9b07603e7f2221d873f2f91a9a9a211fc..a4bd67dcf1d27197eb682e436bb61be263b3a836 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -236,3 +236,7 @@ distributions. See the source package for the additional license information. SAM Python Library: Public domain. + + I2PSnark: + "Man with hat over face" graphic licensed under a Creative Commons 2.0 license. + Original photo by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155 diff --git a/Slackware/i2p-base/rc.i2p_def b/Slackware/i2p-base/rc.i2p_def index 8e059c23d6d0fccb8d2151197eb3bbb295dec9ff..075e9e8472279bdde4daeef3005fba4f39233d40 100644 --- a/Slackware/i2p-base/rc.i2p_def +++ b/Slackware/i2p-base/rc.i2p_def @@ -2,15 +2,32 @@ # Start/stop i2p service. i2p_start() { - /bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory start )" + # Check if router is up first! + /bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory status )" > /dev/null + if [ ! $? -eq 0 ] ; then { + # I2p is already running, so tell the user. + echo "I2P is already running..." + i2p_status + } + else + { + # Just in-case there are leftover junk in /tmp... + rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping + # Now that all junk is cleaned up, start. + /bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory start )" + } + fi } i2p_stop() { /bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory stop )" + rm -Rf `grep /tmp/hsperfdata_root/* -le i2p` /tmp/i2p-*.tmp /tmp/router.ping } i2p_restart() { - /bin/su - -c "( export PATH=\"$PATH:/usr/lib/java/bin:/usr/lib/java/jre/bin\"; directory restart)" + # We want a FULL cycle here, not the wrappers idea of this! + i2p_stop + i2p_start } i2p_status() { diff --git a/Slackware/i2p/i2p.SlackBuild b/Slackware/i2p/i2p.SlackBuild index fc95ce3791dbbb174fd9ef0927ff8b227b17f4ad..3ae2075c8cb3dd2392f00860efa93f05930b0a27 100755 --- a/Slackware/i2p/i2p.SlackBuild +++ b/Slackware/i2p/i2p.SlackBuild @@ -85,23 +85,26 @@ cp -a ../i2p $PKG/$INSTALL_DIR/ mkdir -p $PKG/install ############################################################################# -# Preconfigureation to make package smaller +# Preconfigureation to make package smaller, and... +# we keep as much as reasonable in the installation directory. +# This makes the install map fairly well to the standard installation. +# It also makes it easier to find the log and pid files! ############################################################################# cd $PKG/$INSTALL_DIR/i2p # wrapper.config $INSTALL_PATH and $SYSTEM_java_io_tmpdir -sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" wrapper.config > a -sed "s|\$SYSTEM_java_io_tmpdir|/var/tmp|g" a > wrapper.config +sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" wrapper.config > a +sed "s|\$SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > wrapper.config # eepget %INSTALL_PATH -sed "s|\$INSTALL_PATH|$INSTALL_DIR/i2p|g" eepget > a +sed "s|\$INSTALL_PATH|/$INSTALL_DIR/i2p|g" eepget > a rm eepget mv a eepget # runplain.sh %INSTALL_PATH and %SYSTEM_java_io_tmpdir -sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" runplain.sh > a -sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > runplain.sh +sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" runplain.sh > a +sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > runplain.sh # i2prouter %INSTALL_PATH and %SYSTEM_java_io_tmpdir -sed "s|%INSTALL_PATH|$INSTALL_DIR/i2p|g" i2prouter > a -sed "s|%SYSTEM_java_io_tmpdir|/var/tmp|g" a > i2prouter +sed "s|%INSTALL_PATH|/$INSTALL_DIR/i2p|g" i2prouter > a +sed "s|%SYSTEM_java_io_tmpdir|/$INSTALL_DIR/i2p|g" a > i2prouter chmod 744 ./i2prouter chmod 744 ./osid diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index e284cc1721f3fed80bb6d62afc81e984237c1cc4..d3a04df1fbbcea023580802d8f296ad6f006b04a 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -133,7 +133,6 @@ public class I2PSnarkServlet extends Default { // bypass the horrid Resource.getListHTML() String pathInfo = req.getPathInfo(); String pathInContext = URI.addPaths(path, pathInfo); - req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8"); Resource resource = getResource(pathInContext); @@ -141,7 +140,7 @@ public class I2PSnarkServlet extends Default { resp.sendError(HttpResponse.__404_Not_Found); } else { String base = URI.addPaths(req.getRequestURI(), "/"); - String listing = getListHTML(resource, base, true, method.equals("POST") ? req.getParameterMap() : null); + String listing = getListHTML(resource, base, true); if (listing != null) resp.getWriter().write(listing); else // shouldn't happen @@ -503,7 +502,7 @@ public class I2PSnarkServlet extends Default { File torrentFile = new File(baseFile.getParent(), baseFile.getName() + ".torrent"); if (torrentFile.exists()) throw new IOException("Cannot overwrite an existing .torrent file: " + torrentFile.getPath()); - _manager.saveTorrentStatus(info, s.getBitField(), null); // so addTorrent won't recheck + _manager.saveTorrentStatus(info, s.getBitField()); // so addTorrent won't recheck // DirMonitor could grab this first, maybe hold _snarks lock? FileOutputStream out = new FileOutputStream(torrentFile); out.write(info.getTorrentData()); @@ -530,8 +529,6 @@ public class I2PSnarkServlet extends Default { _manager.stopTorrent(snark.torrent, false); } if (_manager.util().connected()) { - // Give the stopped announces time to get out - try { Thread.sleep(2000); } catch (InterruptedException ie) {} _manager.util().disconnect(); _manager.addMessage(_("I2P tunnel closed.")); } @@ -1216,9 +1213,7 @@ public class I2PSnarkServlet extends Default { /** @since 0.7.14 */ private static String urlify(String s) { StringBuilder buf = new StringBuilder(256); - // browsers seem to work without doing this but let's be strict - String link = s.replace("&", "&"); - buf.append("<a href=\"").append(link).append("\">").append(link).append("</a>"); + buf.append("<a href=\"").append(s).append("\">").append(s).append("</a>"); return buf.toString(); } @@ -1257,11 +1252,10 @@ public class I2PSnarkServlet extends Default { * @param r The Resource * @param base The base URL * @param parent True if the parent directory should be included - * @param postParams map of POST parameters or null if not a POST * @return String of HTML * @since 0.7.14 */ - private String getListHTML(Resource r, String base, boolean parent, Map postParams) + private String getListHTML(Resource r, String base, boolean parent) throws IOException { if (!r.isDirectory()) @@ -1286,10 +1280,6 @@ public class I2PSnarkServlet extends Default { else torrentName = title; Snark snark = _manager.getTorrentByBaseName(torrentName); - - if (snark != null && postParams != null) - savePriorities(snark, postParams); - if (title.endsWith("/")) title = title.substring(0, title.length() - 1); title = _("Torrent") + ": " + title; @@ -1307,19 +1297,12 @@ public class I2PSnarkServlet extends Default { .append(_("Up to higher level directory")).append("</A>\n"); } - buf.append("</div><div class=\"page\"><div class=\"mainsection\">"); - boolean showPriority = snark != null && !snark.storage.complete(); - if (showPriority) - buf.append("<form action=\"").append(base).append("\" method=\"POST\">\n"); - buf.append("<TABLE BORDER=0 class=\"snarkTorrents\" cellpadding=\"5px 10px\">" + + buf.append("</div><div class=\"page\"><div class=\"mainsection\">" + + "<TABLE BORDER=0 class=\"snarkTorrents\" cellpadding=\"5px 10px\">" + "<thead><tr><th>").append(_("File")).append("</th><th>").append(_("Size")) - .append("</th><th>").append(_("Status")).append("</th>"); - if (showPriority) - buf.append("<th>").append(_("Priority")).append("</th>"); - buf.append("</tr></thead>\n"); + .append("</th><th>").append(_("Status")).append("</th></tr></thead>"); //DateFormat dfmt=DateFormat.getDateTimeInstance(DateFormat.MEDIUM, // DateFormat.MEDIUM); - boolean showSaveButton = false; for (int i=0 ; i< ls.length ; i++) { String encoded=URI.encodePath(ls[i]); @@ -1357,8 +1340,7 @@ public class I2PSnarkServlet extends Default { complete = true; status = toImg("tick") + _("Complete"); } else { - status = - (snark.storage.getPriority(f.getCanonicalPath()) < 0 ? toImg("cancel") : toImg("clock")) + + status = toImg("clock") + (100 * (length - remaining) / length) + "% " + _("complete") + " (" + DataHelper.formatSize2(remaining) + _("bytes remaining") + ")"; } @@ -1402,40 +1384,9 @@ public class I2PSnarkServlet extends Default { buf.append("</TD><TD class=\"").append(rowClass).append(" snarkFileStatus\">"); //buf.append(dfmt.format(new Date(item.lastModified()))); buf.append(status); - buf.append("</TD>"); - if (showPriority) { - buf.append("<td>"); - File f = item.getFile(); - if ((!complete) && (!item.isDirectory()) && f != null) { - int pri = snark.storage.getPriority(f.getCanonicalPath()); - buf.append("<input type=\"radio\" value=\"5\" name=\"pri.").append(f.getCanonicalPath()).append("\" "); - if (pri > 0) - buf.append("checked=\"true\""); - buf.append('>').append(_("High")); - - buf.append("<input type=\"radio\" value=\"0\" name=\"pri.").append(f.getCanonicalPath()).append("\" "); - if (pri == 0) - buf.append("checked=\"true\""); - buf.append('>').append(_("Normal")); - - buf.append("<input type=\"radio\" value=\"-9\" name=\"pri.").append(f.getCanonicalPath()).append("\" "); - if (pri < 0) - buf.append("checked=\"true\""); - buf.append('>').append(_("Do not download")); - showSaveButton = true; - } - buf.append("</td>"); - } - buf.append("</TR>\n"); - } - if (showSaveButton) { - buf.append("<thead><tr><th colspan=\"3\"> </th><th align=\"center\"><input type=\"submit\" value=\""); - buf.append(_("Save priorities")); - buf.append("\" name=\"foo\" ></th></tr></thead>\n"); + buf.append("</TD></TR>\n"); } buf.append("</TABLE>\n"); - if (showPriority) - buf.append("</form>"); buf.append("</div></div></BODY></HTML>\n"); return buf.toString(); @@ -1501,26 +1452,6 @@ public class I2PSnarkServlet extends Default { return "<img alt=\"\" height=\"16\" width=\"16\" src=\"/i2psnark/_icons/" + icon + ".png\"> "; } - /** @since 0.8.1 */ - private void savePriorities(Snark snark, Map postParams) { - Set<Map.Entry> entries = postParams.entrySet(); - for (Map.Entry entry : entries) { - String key = (String)entry.getKey(); - if (key.startsWith("pri.")) { - try { - String file = key.substring(4); - String val = ((String[])entry.getValue())[0]; // jetty arrays - int pri = Integer.parseInt(val); - snark.storage.setPriority(file, pri); - //System.err.println("Priority now " + pri + " for " + file); - } catch (Throwable t) { t.printStackTrace(); } - } - } - if (snark.coordinator != null) - snark.coordinator.updatePiecePriorities(); - _manager.saveTorrentStatus(snark.storage.getMetaInfo(), snark.storage.getBitField(), snark.storage.getFilePriorities()); - } - /** inner class, don't bother reindenting */ private static class FetchAndAdd implements Runnable { diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po index e39ae0970dbbb426169881b252daa353d849a0a3..b649d8c589e5bc2f7e0ca0a90f6b16faa08d619f 100644 --- a/apps/i2psnark/locale/messages_zh.po +++ b/apps/i2psnark/locale/messages_zh.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2psnark\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-01 04:52+0000\n" -"PO-Revision-Date: 2010-07-01 12:53+0800\n" +"POT-Creation-Date: 2010-10-04 02:45+0000\n" +"PO-Revision-Date: 2010-10-04 12:00+0800\n" "Last-Translator: walking <walking@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" "MIME-Version: 1.0\n" @@ -224,7 +224,6 @@ msgid "Torrents" msgstr "种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837 msgid "I2PSnark" msgstr "" @@ -233,63 +232,65 @@ msgstr "" msgid "Refresh page" msgstr "刷新页面" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193 +msgid "<img border=\"0\" src=\"/themes/console/snark/images/arrow_refresh.png\"> I2PSnark" +msgstr "" + #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:195 msgid "Forum" msgstr "论坛" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289 -msgid "Status" -msgstr "状态" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Torrent Status\">Status" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"种子状态\">状态" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246 -msgid "Hide Peers" -msgstr "隐藏用户" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"Toggle Peer Visibility\" alt=\"Hide Peers\">" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/showpeers.png\" title=\"隐藏节点\" alt=\"隐藏节点\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249 -msgid "Show Peers" -msgstr "显示用户" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"Toggle Peer Visibility\" alt=\"Show Peers\">" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/hidepeers.png\" title=\"显示节点\" alt=\"显示节点\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271 -msgid "Torrent" -msgstr "种子" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"Loaded Torrents\">Torrent" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/torrent.png\" title=\"载入的种子\">种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256 -msgid "ETA" -msgstr "预计剩余时间" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"Estimated Download Time\">ETA" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/eta.png\" title=\"预计剩余时间\">预计剩余时间" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258 -msgid "Downloaded" -msgstr "已下载" +msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Data Downloaded\">RX" +msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载数据量\">下载" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260 -msgid "Uploaded" -msgstr "已上传" +msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Data Uploaded\">TX" +msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传数据量\">上传" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262 -msgid "Down Rate" -msgstr "下载速度" +msgid "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"Download Speed\">Rate" +msgstr "<img border=\"0\" src=\"/themes/console/images/inbound.png\" title=\"下载速度\">下载速度" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264 -msgid "Up Rate" -msgstr "上传速度" +msgid "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"Upload Speed\">Rate" +msgstr "<img border=\"0\" src=\"/themes/console/images/outbound.png\" title=\"上传速度\">上传速度" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271 msgid "Stop all torrents and the I2P tunnel" msgstr "停止全部种子及I2P隧道" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273 -msgid "Stop All" -msgstr "停止全部" +msgid "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"Stop All Torrents\" alt=\"Stop All\">" +msgstr "<img src=\"/themes/console/snark/images/stop_all.png\" title=\"全部停止\" alt=\"全部停止\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:278 msgid "Start all torrents and the I2P tunnel" msgstr "启动全部种子及I2P隧道" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:280 -msgid "Start All" -msgstr "启动全部" +msgid "<img src=\"/themes/console/snark/images/start_all.png\" title=\"Start All Torrents\" alt=\"Start All\">" +msgstr "<img src=\"/themes/console/snark/images/start_all.png\" title=\"全部开始\" alt=\"全部开始\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297 msgid "No torrents loaded." @@ -317,13 +318,13 @@ msgid "Torrent file {0} does not exist" msgstr "种子文件{0}不存在" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1481 #, java-format msgid "Torrent already running: {0}" msgstr "种子已启动:{0}" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483 #, java-format msgid "Torrent already in the queue: {0}" msgstr "种子排队中:{0}" @@ -450,7 +451,7 @@ msgid "Seeding" msgstr "正做种" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682 -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1317 msgid "Complete" msgstr "完成" @@ -486,24 +487,24 @@ msgid "Tracker" msgstr "Tracker服务器" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 -msgid "Details" -msgstr "详情" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/details.png\">" +msgstr "" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785 msgid "Stop the torrent" msgstr "停止种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787 -msgid "Stop" -msgstr "停止" +msgid "<img src=\"/themes/console/snark/images/stop.png\" title=\"Stop Torrent\" alt=\"Stop\">" +msgstr "<img src=\"/themes/console/snark/images/stop.png\" title=\"停止下载\" alt=\"停止\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793 msgid "Start the torrent" msgstr "启动种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:795 -msgid "Start" -msgstr "启动" +msgid "<img src=\"/themes/console/snark/images/start.png\" title=\"Start Torrent\" alt=\"Start\">" +msgstr "<img src=\"/themes/console/snark/images/start.png\" title=\"开始下载\" alt=\"开始\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800 msgid "Remove the torrent from the active list, deleting the .torrent file" @@ -518,8 +519,8 @@ msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded msgstr "您确定要删除文件“{0}.torrent”(下载的数据文件不会被删除)?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807 -msgid "Remove" -msgstr "移除" +msgid "<img src=\"/themes/console/snark/images/remove.png\" title=\"Remove Torrent\" alt=\"Remove\">" +msgstr "<img src=\"/themes/console/snark/images/remove.png\" title=\"删除种子\" alt=\"删除种子\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811 msgid "Delete the .torrent file and the associated data file(s)" @@ -534,8 +535,8 @@ msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloade msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818 -msgid "Delete" -msgstr "删除" +msgid "<img src=\"/themes/console/snark/images/delete.png\" title=\"Delete Torrent + Data\" alt=\"Delete\">" +msgstr "<img src=\"/themes/console/snark/images/delete.png\" title=\"删除种子 + 数据\" alt=\"删除种子 + 数据\">" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:861 msgid "Seed" @@ -558,8 +559,8 @@ msgid "Choking (We are not allowing the peer to request pieces)" msgstr "拒绝请求" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927 -msgid "Add Torrent" -msgstr "添加种子" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">Add Torrent" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/add.png\">添加种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:929 msgid "From URL" @@ -571,16 +572,16 @@ msgstr "添加种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937 #, java-format -msgid "Alternately, you can copy .torrent files to the directory {0}." -msgstr "或者您可以将.torrent文件复制到以下目录{0}." +msgid "You can also copy .torrent files to: <code>{0}" +msgstr "或者您可以将.torrent文件复制到<code>{0}." #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939 -msgid "Removing a .torrent file will cause the torrent to stop." -msgstr "删除种子文件将导致中止该下载任务。" +msgid "Removing a .torrent will cause it to stop." +msgstr "删除种子文件将导致该下载任务中止。" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958 -msgid "Create Torrent" -msgstr "创建种子" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">Create Torrent" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/create.png\">创建种子" #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961 @@ -596,8 +597,8 @@ msgid "Select a tracker" msgstr "选择一个Tracker" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982 -msgid "or" -msgstr "或" +msgid "or " +msgstr "或 " #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 msgid "Specify custom tracker announce URL" @@ -609,8 +610,8 @@ msgstr "创建种子" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133 -msgid "Configuration" -msgstr "设置" +msgid "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">Configuration" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/config.png\">设置" #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009 msgid "Data directory" @@ -709,53 +710,103 @@ msgid "1 tunnel" msgid_plural "{0} tunnels" msgstr[0] "{0}隧道" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283 -msgid "Up to higher level directory" -msgstr "上一层文件夹" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271 +msgid "Torrent" +msgstr "种子" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +msgid "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"File\" alt=\"File\"> " +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/file.png\" title=\"文件\" alt=\"文件\"> " -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288 -msgid "File" -msgstr "文件" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278 +msgid "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"FileSize\" alt=\"FileSize\">Size" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/size.png\" title=\"文件大小\" alt=\"文件大小\">大小" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288 -msgid "Size" -msgstr "大小" +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279 +msgid "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"Download Status\">Status" +msgstr "<img border=\"0\" src=\"/themes/console/snark/images/status.png\" title=\"下载状态\">状态" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301 msgid "Directory" msgstr "文件夹" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1306 msgid "Torrent not found?" msgstr "种子未找到" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314 msgid "File not found in torrent?" msgstr "种子中没有发现文件?" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320 msgid "complete" msgstr "完成" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321 msgid "bytes remaining" msgstr "剩余字节数" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1456 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1373 +msgid "Up to higher level directory" +msgstr "上一层文件夹" + +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461 #, java-format msgid "Torrent fetched from {0}" msgstr "从{0}获取种子成功" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1484 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489 #, java-format msgid "Torrent at {0} was not valid" msgstr "{0}的种子中有错误" -#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489 +#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1494 #, java-format msgid "Torrent was not retrieved from {0}" msgstr "从{0}获得种子失败" +#~ msgid "Status" +#~ msgstr "状态" +#~ msgid "Hide Peers" +#~ msgstr "隐藏用户" +#~ msgid "Show Peers" +#~ msgstr "显示用户" +#~ msgid "ETA" +#~ msgstr "预计剩余时间" +#~ msgid "Downloaded" +#~ msgstr "已下载" +#~ msgid "Uploaded" +#~ msgstr "已上传" +#~ msgid "Down Rate" +#~ msgstr "下载速度" +#~ msgid "Up Rate" +#~ msgstr "上传速度" +#~ msgid "Stop All" +#~ msgstr "停止全部" +#~ msgid "Start All" +#~ msgstr "启动全部" +#~ msgid "Details" +#~ msgstr "详情" +#~ msgid "Stop" +#~ msgstr "停止" +#~ msgid "Start" +#~ msgstr "启动" +#~ msgid "Remove" +#~ msgstr "移除" +#~ msgid "Delete" +#~ msgstr "删除" +#~ msgid "Add Torrent" +#~ msgstr "添加种子" +#~ msgid "Create Torrent" +#~ msgstr "创建种子" +#~ msgid "or" +#~ msgstr "或" +#~ msgid "Configuration" +#~ msgstr "设置" +#~ msgid "File" +#~ msgstr "文件" +#~ msgid "Size" +#~ msgstr "大小" #~ msgid "Cannot change the I2CP settings while torrents are active" #~ msgstr "正在下载/上传,无法更改I2CP设置" #~ msgid "{0} torrents" diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po index 0955d4e0c1f0d90df5d6da3b6a05c72c120a0371..f6efbfd3b85d751f2990a4d213be4875d6dfdc5e 100644 --- a/apps/i2ptunnel/locale/messages_zh.po +++ b/apps/i2ptunnel/locale/messages_zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P i2ptunnel\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-01 04:52+0000\n" +"POT-Creation-Date: 2010-10-04 02:45+0000\n" "PO-Revision-Date: 2010-05-29 10:57+0800\n" "Last-Translator: walking <walking@mail.i2p>\n" "Language-Team: foo <foo@bar>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" -#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:493 +#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:492 #, java-format msgid "" "To visit the destination in your host database, click <a href=\"{0}\">here</" @@ -35,55 +35,55 @@ msgstr "" "请点击下面的链接通过【跳转(Jump)】服务提供的【地址助手】链接跳转至域名对应的" "主机:" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:369 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:372 msgid "New Tunnel" msgstr "新建隧道" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:389 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392 msgid "Standard client" msgstr "标准客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:390 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393 msgid "HTTP client" msgstr "HTTP 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:391 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394 msgid "IRC client" msgstr "IRC 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395 msgid "Standard server" msgstr "标准服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396 msgid "HTTP server" msgstr "HTTP 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397 msgid "SOCKS 4/4a/5 proxy" msgstr "SOCKS4/4A/5 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 msgid "SOCKS IRC proxy" msgstr "SOCKS IRC 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399 msgid "CONNECT/SSL/HTTPS proxy" msgstr "CONNECT/SSL/HTTPS 代理" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400 msgid "IRC server" msgstr "IRC 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:401 msgid "Streamr client" msgstr "Streamr 客户端" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:402 msgid "Streamr server" msgstr "Streamr 服务器" -#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400 +#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:403 msgid "HTTP bidir" msgstr "双向http" diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index ad0d9dc7c3efc99a3e296f91dd949fb19af64d4c..100e7619973a4824d3022c8d533e3f730d6668e9 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-29 14:53+0000\n" +"POT-Creation-Date: 2010-10-04 02:45+0000\n" "PO-Revision-Date: \n" "Last-Translator: walking <walking@mail.i2p>\n" "Language-Team: \n" @@ -28,6 +28,7 @@ msgstr "按路由器 HASH 封杀: {0}" msgid "Banned by router hash" msgstr "已按路由 HASH 封杀" +#. Temporary reason, until the job finishes #: ../../../router/java/src/net/i2p/router/Blocklist.java:673 msgid "IP banned" msgstr "IP封锁" @@ -45,6 +46,8 @@ msgstr "拒绝共享:准备退出" msgid "Rejecting tunnels: High message delay" msgstr "拒绝共享:高消息延迟" +#. hard to do {0} from here +#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:177 msgid "Rejecting most tunnels: High number of requests" msgstr "收紧共享:高请求量" @@ -53,14 +56,21 @@ msgstr "收紧共享:高请求量" msgid "Rejecting tunnels: Limit reached" msgstr "拒绝共享:隧道数限额" +#. .067KBps +#. * also limited to 90% - see below +#. always leave at least 4KBps free when allowing #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:301 msgid "Rejecting tunnels: Bandwidth limit" msgstr "拒绝共享:带宽限额" +#. hard to do {0} from here +#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:371 msgid "Rejecting most tunnels: Bandwidth limit" msgstr "收紧共享:带宽限额" +#. hard to do {0} from here +#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels"); #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375 msgid "Accepting most tunnels" msgstr "接收多数隧道" @@ -69,53 +79,58 @@ msgstr "接收多数隧道" msgid "Accepting tunnels" msgstr "接收共享隧道" +#. NPE, too early +#. if (_context.router().getRouterInfo().getBandwidthTier().equals("K")) +#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low"); +#. else #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:487 msgid "Rejecting tunnels" msgstr "拒绝参与共享隧道" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:49 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:48 msgid "Ensure that nothing blocks outbound HTTP, check <a target=\"_top\" href=\"logs.jsp\">logs</a> and if nothing helps, read the <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> about reseeding manually." msgstr "请保证HTTP通信没有受阻,检查 <a target=\"_top\" href=\"logs.jsp\">日志</a> ,如果问题仍无法解决,请参照 <a target=\"_top\" href=\"http://www.i2p2.de/faq.html\">FAQ</a> 进行手动补种。" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:81 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:80 msgid "Reseeding" msgstr "正在补种(引导网络启动)..." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:145 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:144 msgid "Reseeding: fetching seed URL." msgstr "正在补种:获取补种连接..." -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150 msgid "Last reseed failed fully (failed reading seed URL)." msgstr "上次补种尝试失败(读取补种URL失败)。" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:177 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176 msgid "Last reseed failed fully (no routerInfo URLs at seed URL)." msgstr "上次补种尝试失败(补种服务器未返回任何路由信息URL)。" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:190 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:189 #, java-format msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)." msgstr "正在补种:从补种服务器获取路由信息({0}成功,{1}失败)。" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:211 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210 #, java-format msgid "Last reseed failed partly ({0}% of {1})." msgstr "上次补种部分失败({0}%失败,共{1})" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:216 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:215 #, java-format msgid "Last reseed failed ({0}% of {1})." msgstr "上次补种失败({0}%失败,共{1})" -#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:226 +#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:225 msgid "Last reseed failed fully (exception caught)." msgstr "上次补种失败(exception caught)." -#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:498 +#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510 msgid "NetDb entry" msgstr "NetDb 项目" +#. This used to be "no common transports" but it is almost always no transports at all #: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70 msgid "No transports (hidden or starting up?)" msgstr "无数据传输(隐身或正在启动)" @@ -124,347 +139,357 @@ msgstr "无数据传输(隐身或正在启动)" msgid "Unreachable on any transport" msgstr "各传输方式均不可达" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:503 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:508 msgid "Router Transport Addresses" msgstr "路由传输地址" -#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:514 #, java-format msgid "{0} is used for outbound connections only" msgstr "{0} 仅被用作出站连接" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:380 -#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:594 -#, java-format -msgid "Excessive clock skew: {0}" -msgstr "严重时滞:{0}" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:691 -msgid "NTCP connections" -msgstr "NTCP连接" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:692 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1879 -msgid "Limit" -msgstr "限制" - -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:693 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1880 -msgid "Timeout" -msgstr "超时" +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528 +#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 +msgid "Definitions" +msgstr "定义" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:696 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1883 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2146 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Peer" msgstr "节点" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:697 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2147 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529 +msgid "The remote peer, identified by router hash" +msgstr "以路由Hash区分的远程节点" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889 msgid "Dir" msgstr "类别" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:698 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1888 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2155 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531 +msgid "Inbound connection" +msgstr "进站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533 +msgid "Outbound connection" +msgstr "出站连接" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535 +msgid "They offered to introduce us (help other peers traverse our firewall)" +msgstr "对方节点为中继帮助我方穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537 +msgid "We offered to introduce them (help other peers traverse their firewall)" +msgstr "我方为中继帮助其他节点穿越防火墙" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +msgid "How long since a packet has been received / sent" +msgstr "最近一次数据传输距现在的时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890 msgid "Idle" msgstr "空闲" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:699 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2156 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "In/Out" msgstr "入/出" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:700 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2157 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539 +msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" +msgstr "进/出站平滑传输率(Kbyte/s)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +msgid "How long ago this connection was established" +msgstr "连接建立时间" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 msgid "Up" msgstr "寿命" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:701 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2158 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902 msgid "Skew" msgstr "时滞" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:702 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1917 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541 +msgid "The difference between the peer's clock and your own" +msgstr "节点与本地时钟间的时滞" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542 +msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" +msgstr "拥塞窗口,即每次确认前可发送的字节量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543 +msgid "The number of sent messages awaiting acknowledgement" +msgstr "等待确认的已发送数据包数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544 +msgid "The maximum number of concurrent messages to send" +msgstr "并发消息的最大发送量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545 +msgid "The number of pending sends which exceed congestion window" +msgstr "超过拥塞窗口的待发送数量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546 +msgid "The slow start threshold" +msgstr "慢启动门槛" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547 +msgid "The round trip time in milliseconds" +msgstr "往返时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912 +msgid "Dev" +msgstr "偏差" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548 +msgid "The standard deviation of the round trip time in milliseconds" +msgstr "环行时间的标准差单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549 +msgid "The retransmit timeout in milliseconds" +msgstr "重传输超时时间单位毫秒" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550 +msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" +msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919 msgid "TX" msgstr "发包" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:703 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551 +msgid "The total number of packets sent to the peer" +msgstr "向节点发送的数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921 msgid "RX" msgstr "接包" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:704 +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552 +msgid "The total number of packets received from the peer" +msgstr "从节点接收到数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 +msgid "Dup TX" +msgstr "重发包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553 +msgid "The total number of packets retransmitted to the peer" +msgstr "向节点发送的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926 +msgid "Dup RX" +msgstr "重接包" + +#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554 +msgid "The total number of duplicate packets received from the peer" +msgstr "从节点接收到的重复数据包总量" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627 +#, java-format +msgid "Excessive clock skew: {0}" +msgstr "严重时滞:{0}" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710 +msgid "NTCP connections" +msgstr "NTCP连接" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1881 +msgid "Limit" +msgstr "限制" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1882 +msgid "Timeout" +msgstr "超时" + +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723 msgid "Out Queue" msgstr "出队" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:705 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724 msgid "Backlogged?" msgstr "积压?" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1942 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1944 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Inbound" msgstr "入站" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1944 +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82 msgid "Outbound" msgstr "出站" -#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:768 +#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787 msgid "peers" msgstr "节点" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1878 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1880 msgid "UDP connections" msgstr "UDP连接" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 msgid "Sort by peer hash" msgstr "按节点Hash" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889 msgid "Direction/Introduction" msgstr "方向" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 msgid "Sort by idle inbound" msgstr "出站空闲" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893 msgid "Sort by idle outbound" msgstr "入站空闲" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 msgid "Sort by inbound rate" msgstr "按入站速度" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898 msgid "Sort by outbound rate" msgstr "按出站速度" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1899 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 msgid "Sort by connection uptime" msgstr "按连接时间" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903 msgid "Sort by clock skew" msgstr "按时滞" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1904 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 msgid "Sort by congestion window" msgstr "按拥塞窗口" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908 msgid "Sort by slow start threshold" msgstr "按启动门槛" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1909 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 msgid "Sort by round trip time" msgstr "按往返时间" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1910 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2165 -msgid "Dev" -msgstr "偏差" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 msgid "Sort by round trip time deviation" msgstr "按RTT偏差" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915 msgid "Sort by retransmission timeout" msgstr "按重传输超时时间" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1916 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 msgid "Sort by outbound maximum transmit unit" msgstr "按出站最大传输单元" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 msgid "Sort by packets sent" msgstr "按已发送数据包" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 msgid "Sort by packets received" msgstr "按已接收数据包" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170 -msgid "Dup TX" -msgstr "重发包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1923 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 msgid "Sort by packets retransmitted" msgstr "按重传数据包" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924 -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171 -msgid "Dup RX" -msgstr "重接包" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927 msgid "Sort by packets received more than once" msgstr "按重复数据包" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1948 msgid "We offered to introduce them" msgstr "中继客户" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1948 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950 msgid "They offered to introduce us" msgstr "中继" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1952 +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954 msgid "Choked" msgstr "" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1957 -msgid "fail(s)" -msgstr "失败" - #: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962 +msgid "1 fail" +msgstr "失败 1 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964 +#, java-format +msgid "{0} fails" +msgstr "失败 {0} 次" + +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162 msgid "Banned" msgstr "已封锁" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2094 +#. buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n"); +#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2102 msgid "SUMMARY" msgstr "总结" -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2145 -#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257 -msgid "Definitions" -msgstr "定义" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2146 -msgid "The remote peer, identified by router hash" -msgstr "以路由Hash区分的远程节点" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2148 -msgid "Inbound connection" -msgstr "进站连接" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2150 -msgid "Outbound connection" -msgstr "出站连接" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2152 -msgid "They offered to introduce us (help other peers traverse our firewall)" -msgstr "对方节点为中继帮助我方穿越防火墙" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2154 -msgid "We offered to introduce them (help other peers traverse their firewall)" -msgstr "我方为中继帮助其他节点穿越防火墙" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2155 -msgid "How long since a packet has been received / sent" -msgstr "最近一次数据传输距现在的时间" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2156 -msgid "The smoothed inbound / outbound transfer rate (KBytes per second)" -msgstr "进/出站平滑传输率(Kbyte/s)" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2157 -msgid "How long ago this connection was established" -msgstr "连接建立时间" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2158 -msgid "The difference between the peer's clock and your own" -msgstr "节点与本地时钟间的时滞" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2159 -msgid "The congestion window, which is how many bytes can be sent without an acknowledgement" -msgstr "拥塞窗口,即每次确认前可发送的字节量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2160 -msgid "The number of sent messages awaiting acknowledgement" -msgstr "等待确认的已发送数据包数量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2161 -msgid "The maximum number of concurrent messages to send" -msgstr "并发消息的最大发送量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2162 -msgid "The number of pending sends which exceed congestion window" -msgstr "超过拥塞窗口的待发送数量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2163 -msgid "The slow start threshold" -msgstr "慢启动门槛" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2164 -msgid "The round trip time in milliseconds" -msgstr "往返时间单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2165 -msgid "The standard deviation of the round trip time in milliseconds" -msgstr "环行时间的标准差单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2166 -msgid "The retransmit timeout in milliseconds" -msgstr "重传输超时时间单位毫秒" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2167 -msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)" -msgstr "当前发送数据包的最大大小/预计接收数据包的最大大小(字节)" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168 -msgid "The total number of packets sent to the peer" -msgstr "向节点发送的数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169 -msgid "The total number of packets received from the peer" -msgstr "从节点接收到数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170 -msgid "The total number of packets retransmitted to the peer" -msgstr "向节点发送的重复数据包总量" - -#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171 -msgid "The total number of duplicate packets received from the peer" -msgstr "从节点接收到的重复数据包总量" - #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145 msgid "Dropping tunnel requests: Too slow" msgstr "忽略共享请求:速度太慢" +#. don't even bother, since we are so overloaded locally #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352 msgid "Dropping tunnel requests: Overloaded" msgstr "忽略共享请求:路由过载" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:523 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:525 msgid "Rejecting tunnels: Request overload" msgstr "拒绝共享:请求过多" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:548 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:550 msgid "Rejecting tunnels: Connection limit" msgstr "拒绝共享:连接受限" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:742 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:744 msgid "Dropping tunnel requests: High load" msgstr "忽略共享请求:高负载" -#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:751 +#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:753 msgid "Dropping tunnel requests: Queue time" msgstr "忽略共享请求:队列积压" +#. Automatically generated pseudo-java for xgettext - do not edit +#. Translators may wish to translate a few of these, do not bother to translate all of them!! #: ../java/build/Countries.java:3 msgid "Andorra" msgstr "安道尔" @@ -525,874 +550,874 @@ msgstr "澳大利亚" msgid "Aruba" msgstr "阿鲁巴" -#: ../java/build/Countries.java:19 +#: ../java/build/Countries.java:18 msgid "Azerbaijan" msgstr "阿塞拜疆" -#: ../java/build/Countries.java:20 +#: ../java/build/Countries.java:19 msgid "Bosnia and Herzegovina" msgstr "波黑" -#: ../java/build/Countries.java:21 +#: ../java/build/Countries.java:20 msgid "Barbados" msgstr "巴巴多斯" -#: ../java/build/Countries.java:22 +#: ../java/build/Countries.java:21 msgid "Bangladesh" msgstr "孟加拉" -#: ../java/build/Countries.java:23 +#: ../java/build/Countries.java:22 msgid "Belgium" msgstr "比利时" -#: ../java/build/Countries.java:24 +#: ../java/build/Countries.java:23 msgid "Burkina Faso" msgstr "布基纳法索" -#: ../java/build/Countries.java:25 +#: ../java/build/Countries.java:24 msgid "Bulgaria" msgstr "保加利亚" -#: ../java/build/Countries.java:26 +#: ../java/build/Countries.java:25 msgid "Bahrain" msgstr "巴林" -#: ../java/build/Countries.java:27 +#: ../java/build/Countries.java:26 msgid "Burundi" msgstr "不丹" -#: ../java/build/Countries.java:28 +#: ../java/build/Countries.java:27 msgid "Benin" msgstr "贝宁" -#: ../java/build/Countries.java:29 +#: ../java/build/Countries.java:28 msgid "Bermuda" msgstr "百慕大" -#: ../java/build/Countries.java:30 +#: ../java/build/Countries.java:29 msgid "Brunei Darussalam" msgstr "文莱达鲁萨兰" -#: ../java/build/Countries.java:31 +#: ../java/build/Countries.java:30 msgid "Bolivia" msgstr "玻利维亚" -#: ../java/build/Countries.java:32 +#: ../java/build/Countries.java:31 msgid "Brazil" msgstr "巴西" -#: ../java/build/Countries.java:33 +#: ../java/build/Countries.java:32 msgid "Bahamas" msgstr "巴哈马" -#: ../java/build/Countries.java:34 +#: ../java/build/Countries.java:33 msgid "Bhutan" msgstr "不丹" -#: ../java/build/Countries.java:35 +#: ../java/build/Countries.java:34 msgid "Bouvet Island" msgstr "布韦群岛" -#: ../java/build/Countries.java:36 +#: ../java/build/Countries.java:35 msgid "Botswana" msgstr "伯兹瓦纳" -#: ../java/build/Countries.java:37 +#: ../java/build/Countries.java:36 msgid "Belarus" msgstr "白俄罗斯" -#: ../java/build/Countries.java:38 +#: ../java/build/Countries.java:37 msgid "Belize" msgstr "伯利兹" -#: ../java/build/Countries.java:39 +#: ../java/build/Countries.java:38 msgid "Canada" msgstr "加拿大" -#: ../java/build/Countries.java:40 +#: ../java/build/Countries.java:39 msgid "The Democratic Republic of the Congo" msgstr "刚果" -#: ../java/build/Countries.java:41 +#: ../java/build/Countries.java:40 msgid "Central African Republic" msgstr "中非" -#: ../java/build/Countries.java:42 +#: ../java/build/Countries.java:41 msgid "Congo" msgstr "Congo" -#: ../java/build/Countries.java:43 +#: ../java/build/Countries.java:42 msgid "Switzerland" msgstr "瑞士" -#: ../java/build/Countries.java:44 +#: ../java/build/Countries.java:43 msgid "Cote D'Ivoire" msgstr "象牙海岸" -#: ../java/build/Countries.java:45 +#: ../java/build/Countries.java:44 msgid "Cook Islands" msgstr "库克群岛" -#: ../java/build/Countries.java:46 +#: ../java/build/Countries.java:45 msgid "Chile" msgstr "智利" -#: ../java/build/Countries.java:47 +#: ../java/build/Countries.java:46 msgid "Cameroon" msgstr "喀麦隆" -#: ../java/build/Countries.java:48 +#: ../java/build/Countries.java:47 msgid "China" msgstr "中国" -#: ../java/build/Countries.java:49 +#: ../java/build/Countries.java:48 msgid "Colombia" msgstr "哥伦比亚" -#: ../java/build/Countries.java:50 +#: ../java/build/Countries.java:49 msgid "Costa Rica" msgstr "哥斯达黎加" -#: ../java/build/Countries.java:51 +#: ../java/build/Countries.java:50 msgid "Serbia and Montenegro" msgstr "塞尔维亚与黑山" -#: ../java/build/Countries.java:52 +#: ../java/build/Countries.java:51 msgid "Cuba" msgstr "古巴" -#: ../java/build/Countries.java:53 +#: ../java/build/Countries.java:52 msgid "Cape Verde" msgstr "佛得角" -#: ../java/build/Countries.java:54 +#: ../java/build/Countries.java:53 msgid "Cyprus" msgstr "塞浦路斯" -#: ../java/build/Countries.java:55 +#: ../java/build/Countries.java:54 msgid "Czech Republic" msgstr "捷克" -#: ../java/build/Countries.java:56 +#: ../java/build/Countries.java:55 msgid "Germany" msgstr "德国" -#: ../java/build/Countries.java:57 +#: ../java/build/Countries.java:56 msgid "Djibouti" msgstr "吉布提" -#: ../java/build/Countries.java:58 +#: ../java/build/Countries.java:57 msgid "Denmark" msgstr "丹麦" -#: ../java/build/Countries.java:59 +#: ../java/build/Countries.java:58 msgid "Dominica" msgstr "多米尼" -#: ../java/build/Countries.java:60 +#: ../java/build/Countries.java:59 msgid "Dominican Republic" msgstr "多米尼加联邦" -#: ../java/build/Countries.java:61 +#: ../java/build/Countries.java:60 msgid "Algeria" msgstr "阿尔及利亚" -#: ../java/build/Countries.java:62 +#: ../java/build/Countries.java:61 msgid "Ecuador" msgstr "厄瓜多尔" -#: ../java/build/Countries.java:63 +#: ../java/build/Countries.java:62 msgid "Estonia" msgstr "爱沙尼亚" -#: ../java/build/Countries.java:64 +#: ../java/build/Countries.java:63 msgid "Egypt" msgstr "埃及" -#: ../java/build/Countries.java:65 +#: ../java/build/Countries.java:64 msgid "Eritrea" msgstr "厄立特里亚" -#: ../java/build/Countries.java:66 +#: ../java/build/Countries.java:65 msgid "Spain" msgstr "西班牙" -#: ../java/build/Countries.java:67 +#: ../java/build/Countries.java:66 msgid "Ethiopia" msgstr "埃塞俄比亚" -#: ../java/build/Countries.java:68 +#: ../java/build/Countries.java:67 msgid "Finland" msgstr "芬兰" -#: ../java/build/Countries.java:69 +#: ../java/build/Countries.java:68 msgid "Fiji" msgstr "斐济" -#: ../java/build/Countries.java:70 +#: ../java/build/Countries.java:69 msgid "Falkland Islands (Malvinas)" msgstr "福克兰群岛" -#: ../java/build/Countries.java:71 +#: ../java/build/Countries.java:70 msgid "Federated States of Micronesia" msgstr "密克罗尼西亚" -#: ../java/build/Countries.java:72 +#: ../java/build/Countries.java:71 msgid "Faroe Islands" msgstr "法罗群岛" -#: ../java/build/Countries.java:73 +#: ../java/build/Countries.java:72 msgid "France" msgstr "法国" -#: ../java/build/Countries.java:74 +#: ../java/build/Countries.java:73 msgid "Gabon" msgstr "加蓬" -#: ../java/build/Countries.java:75 +#: ../java/build/Countries.java:74 msgid "United Kingdom" msgstr "英国" -#: ../java/build/Countries.java:76 +#: ../java/build/Countries.java:75 msgid "Grenada" msgstr "格林纳达" -#: ../java/build/Countries.java:77 +#: ../java/build/Countries.java:76 msgid "Georgia" msgstr "格鲁吉亚" -#: ../java/build/Countries.java:78 +#: ../java/build/Countries.java:77 msgid "French Guiana" msgstr "圭亚那" -#: ../java/build/Countries.java:79 +#: ../java/build/Countries.java:78 msgid "Ghana" msgstr "加纳" -#: ../java/build/Countries.java:80 +#: ../java/build/Countries.java:79 msgid "Gibraltar" msgstr "直布罗陀" -#: ../java/build/Countries.java:81 +#: ../java/build/Countries.java:80 msgid "Greenland" msgstr "格陵兰群岛" -#: ../java/build/Countries.java:82 +#: ../java/build/Countries.java:81 msgid "Gambia" msgstr "冈比亚" -#: ../java/build/Countries.java:83 +#: ../java/build/Countries.java:82 msgid "Guinea" msgstr "几内亚" -#: ../java/build/Countries.java:84 +#: ../java/build/Countries.java:83 msgid "Guadeloupe" msgstr "瓜德罗普岛" -#: ../java/build/Countries.java:85 +#: ../java/build/Countries.java:84 msgid "Equatorial Guinea" msgstr "赤道几内亚" -#: ../java/build/Countries.java:86 +#: ../java/build/Countries.java:85 msgid "Greece" msgstr "希腊" -#: ../java/build/Countries.java:87 +#: ../java/build/Countries.java:86 msgid "South Georgia and the South Sandwich Islands" msgstr "南乔治亚岛和南桑德韦奇岛" -#: ../java/build/Countries.java:88 +#: ../java/build/Countries.java:87 msgid "Guatemala" msgstr "危地马拉" -#: ../java/build/Countries.java:89 +#: ../java/build/Countries.java:88 msgid "Guam" msgstr "关岛" -#: ../java/build/Countries.java:90 +#: ../java/build/Countries.java:89 msgid "Guinea-Bissau" msgstr "几内亚比绍" -#: ../java/build/Countries.java:91 +#: ../java/build/Countries.java:90 msgid "Guyana" msgstr "圭亚那" -#: ../java/build/Countries.java:92 +#: ../java/build/Countries.java:91 msgid "Hong Kong" msgstr "香港" -#: ../java/build/Countries.java:93 +#: ../java/build/Countries.java:92 msgid "Honduras" msgstr "洪都拉斯" -#: ../java/build/Countries.java:94 +#: ../java/build/Countries.java:93 msgid "Croatia" msgstr "克罗蒂亚" -#: ../java/build/Countries.java:95 +#: ../java/build/Countries.java:94 msgid "Haiti" msgstr "海地" -#: ../java/build/Countries.java:96 +#: ../java/build/Countries.java:95 msgid "Hungary" msgstr "匈牙利" -#: ../java/build/Countries.java:97 +#: ../java/build/Countries.java:96 msgid "Indonesia" msgstr "印尼" -#: ../java/build/Countries.java:98 +#: ../java/build/Countries.java:97 msgid "Ireland" msgstr "爱尔兰" -#: ../java/build/Countries.java:99 +#: ../java/build/Countries.java:98 msgid "Israel" msgstr "以色列" -#: ../java/build/Countries.java:101 +#: ../java/build/Countries.java:99 msgid "India" msgstr "印度" -#: ../java/build/Countries.java:102 +#: ../java/build/Countries.java:100 msgid "British Indian Ocean Territory" msgstr "英属印度洋地区" -#: ../java/build/Countries.java:103 +#: ../java/build/Countries.java:101 msgid "Iraq" msgstr "伊拉克" -#: ../java/build/Countries.java:104 +#: ../java/build/Countries.java:102 msgid "Islamic Republic of Iran" msgstr "伊朗" -#: ../java/build/Countries.java:105 +#: ../java/build/Countries.java:103 msgid "Iceland" msgstr "冰岛" -#: ../java/build/Countries.java:106 +#: ../java/build/Countries.java:104 msgid "Italy" msgstr "意大利" -#: ../java/build/Countries.java:108 +#: ../java/build/Countries.java:105 msgid "Jamaica" msgstr "牙买加" -#: ../java/build/Countries.java:109 +#: ../java/build/Countries.java:106 msgid "Jordan" msgstr "约旦" -#: ../java/build/Countries.java:110 +#: ../java/build/Countries.java:107 msgid "Japan" msgstr "日本" -#: ../java/build/Countries.java:111 +#: ../java/build/Countries.java:108 msgid "Kenya" msgstr "肯尼亚" -#: ../java/build/Countries.java:112 +#: ../java/build/Countries.java:109 msgid "Kyrgyzstan" msgstr "吉尔吉斯斯坦" -#: ../java/build/Countries.java:113 +#: ../java/build/Countries.java:110 msgid "Cambodia" msgstr "柬埔塞" -#: ../java/build/Countries.java:114 +#: ../java/build/Countries.java:111 msgid "Kiribati" msgstr "基里巴斯" -#: ../java/build/Countries.java:115 +#: ../java/build/Countries.java:112 msgid "Comoros" msgstr "科摩罗" -#: ../java/build/Countries.java:116 +#: ../java/build/Countries.java:113 msgid "Saint Kitts and Nevis" msgstr "圣克里斯多福与尼维斯" -#: ../java/build/Countries.java:117 +#: ../java/build/Countries.java:114 msgid "Republic of Korea" msgstr "韩国" -#: ../java/build/Countries.java:118 +#: ../java/build/Countries.java:115 msgid "Kuwait" msgstr "科威特" -#: ../java/build/Countries.java:119 +#: ../java/build/Countries.java:116 msgid "Cayman Islands" msgstr "开曼群岛" -#: ../java/build/Countries.java:120 +#: ../java/build/Countries.java:117 msgid "Kazakhstan" msgstr "哈萨克斯坦" -#: ../java/build/Countries.java:121 +#: ../java/build/Countries.java:118 msgid "Lao People's Democratic Republic" msgstr "老挝" -#: ../java/build/Countries.java:122 +#: ../java/build/Countries.java:119 msgid "Lebanon" msgstr "黎巴嫩" -#: ../java/build/Countries.java:123 +#: ../java/build/Countries.java:120 msgid "Saint Lucia" msgstr "圣露西亚岛" -#: ../java/build/Countries.java:124 +#: ../java/build/Countries.java:121 msgid "Liechtenstein" msgstr "列支敦士登" -#: ../java/build/Countries.java:125 +#: ../java/build/Countries.java:122 msgid "Sri Lanka" msgstr "斯里兰卡" -#: ../java/build/Countries.java:126 +#: ../java/build/Countries.java:123 msgid "Liberia" msgstr "利比里亚" -#: ../java/build/Countries.java:127 +#: ../java/build/Countries.java:124 msgid "Lesotho" msgstr "莱索托" -#: ../java/build/Countries.java:128 +#: ../java/build/Countries.java:125 msgid "Lithuania" msgstr "立陶宛" -#: ../java/build/Countries.java:129 +#: ../java/build/Countries.java:126 msgid "Luxembourg" msgstr "卢森堡" -#: ../java/build/Countries.java:130 +#: ../java/build/Countries.java:127 msgid "Latvia" msgstr "拉脱维亚" -#: ../java/build/Countries.java:131 +#: ../java/build/Countries.java:128 msgid "Libyan Arab Jamahiriya" msgstr "利比亚" -#: ../java/build/Countries.java:132 +#: ../java/build/Countries.java:129 msgid "Morocco" msgstr "摩洛哥" -#: ../java/build/Countries.java:133 +#: ../java/build/Countries.java:130 msgid "Monaco" msgstr "摩纳哥" -#: ../java/build/Countries.java:134 +#: ../java/build/Countries.java:131 msgid "Republic of Moldova" msgstr "摩尔多瓦" -#: ../java/build/Countries.java:137 +#: ../java/build/Countries.java:132 msgid "Madagascar" msgstr "马达加斯加" -#: ../java/build/Countries.java:138 +#: ../java/build/Countries.java:133 msgid "Marshall Islands" msgstr "马绍尔群岛" -#: ../java/build/Countries.java:139 +#: ../java/build/Countries.java:134 msgid "The Former Yugoslav Republic of Macedonia" msgstr "前南斯拉夫之马其顿共和国" -#: ../java/build/Countries.java:140 +#: ../java/build/Countries.java:135 msgid "Mali" msgstr "马里" -#: ../java/build/Countries.java:141 +#: ../java/build/Countries.java:136 msgid "Myanmar" msgstr "缅甸" -#: ../java/build/Countries.java:142 +#: ../java/build/Countries.java:137 msgid "Mongolia" msgstr "蒙古" -#: ../java/build/Countries.java:143 +#: ../java/build/Countries.java:138 msgid "Macao" msgstr "澳门" -#: ../java/build/Countries.java:144 +#: ../java/build/Countries.java:139 msgid "Northern Mariana Islands" msgstr "北马里亚纳群岛" -#: ../java/build/Countries.java:145 +#: ../java/build/Countries.java:140 msgid "Martinique" msgstr "马提尼克岛" -#: ../java/build/Countries.java:146 +#: ../java/build/Countries.java:141 msgid "Mauritania" msgstr "毛里塔尼亚" -#: ../java/build/Countries.java:147 +#: ../java/build/Countries.java:142 msgid "Montserrat" msgstr "蒙特塞拉特" -#: ../java/build/Countries.java:148 +#: ../java/build/Countries.java:143 msgid "Malta" msgstr "马尔他" -#: ../java/build/Countries.java:149 +#: ../java/build/Countries.java:144 msgid "Mauritius" msgstr "毛里求斯" -#: ../java/build/Countries.java:150 +#: ../java/build/Countries.java:145 msgid "Maldives" msgstr "马尔代夫" -#: ../java/build/Countries.java:151 +#: ../java/build/Countries.java:146 msgid "Malawi" msgstr "马拉维" -#: ../java/build/Countries.java:152 +#: ../java/build/Countries.java:147 msgid "Mexico" msgstr "墨西哥" -#: ../java/build/Countries.java:153 +#: ../java/build/Countries.java:148 msgid "Malaysia" msgstr "马来西亚" -#: ../java/build/Countries.java:154 +#: ../java/build/Countries.java:149 msgid "Mozambique" msgstr "莫桑比克" -#: ../java/build/Countries.java:155 +#: ../java/build/Countries.java:150 msgid "Namibia" msgstr "纳米比亚" -#: ../java/build/Countries.java:156 +#: ../java/build/Countries.java:151 msgid "New Caledonia" msgstr "新喀里多尼亚" -#: ../java/build/Countries.java:157 +#: ../java/build/Countries.java:152 msgid "Niger" msgstr "尼日尔" -#: ../java/build/Countries.java:158 +#: ../java/build/Countries.java:153 msgid "Norfolk Island" msgstr "尼加拉瓜" -#: ../java/build/Countries.java:159 +#: ../java/build/Countries.java:154 msgid "Nigeria" msgstr "尼日利亚" -#: ../java/build/Countries.java:160 +#: ../java/build/Countries.java:155 msgid "Nicaragua" msgstr "尼加拉瓜" -#: ../java/build/Countries.java:161 +#: ../java/build/Countries.java:156 msgid "Netherlands" msgstr "荷兰" -#: ../java/build/Countries.java:162 +#: ../java/build/Countries.java:157 msgid "Norway" msgstr "挪威" -#: ../java/build/Countries.java:163 +#: ../java/build/Countries.java:158 msgid "Nepal" msgstr "尼泊尔" -#: ../java/build/Countries.java:164 +#: ../java/build/Countries.java:159 msgid "Nauru" msgstr "瑙鲁" -#: ../java/build/Countries.java:165 +#: ../java/build/Countries.java:160 msgid "Niue" msgstr "纽埃岛" -#: ../java/build/Countries.java:166 +#: ../java/build/Countries.java:161 msgid "New Zealand" msgstr "新西兰" -#: ../java/build/Countries.java:167 +#: ../java/build/Countries.java:162 msgid "Oman" msgstr "阿曼" -#: ../java/build/Countries.java:168 +#: ../java/build/Countries.java:163 msgid "Panama" msgstr "巴拿马" -#: ../java/build/Countries.java:169 +#: ../java/build/Countries.java:164 msgid "Peru" msgstr "秘鲁" -#: ../java/build/Countries.java:170 +#: ../java/build/Countries.java:165 msgid "French Polynesia" msgstr "玻利尼西亚" -#: ../java/build/Countries.java:171 +#: ../java/build/Countries.java:166 msgid "Papua New Guinea" msgstr "巴布亚新几内亚" -#: ../java/build/Countries.java:172 +#: ../java/build/Countries.java:167 msgid "Philippines" msgstr "菲律宾" -#: ../java/build/Countries.java:173 +#: ../java/build/Countries.java:168 msgid "Pakistan" msgstr "巴基斯坦" -#: ../java/build/Countries.java:174 +#: ../java/build/Countries.java:169 msgid "Poland" msgstr "波兰" -#: ../java/build/Countries.java:175 +#: ../java/build/Countries.java:170 msgid "Saint Pierre and Miquelon" msgstr "圣皮埃尔岛和密克隆" -#: ../java/build/Countries.java:176 +#: ../java/build/Countries.java:171 msgid "Puerto Rico" msgstr "波多黎各" -#: ../java/build/Countries.java:177 +#: ../java/build/Countries.java:172 msgid "Palestinian Territory" msgstr "巴勒斯坦地区" -#: ../java/build/Countries.java:178 +#: ../java/build/Countries.java:173 msgid "Portugal" msgstr "葡萄牙" -#: ../java/build/Countries.java:179 +#: ../java/build/Countries.java:174 msgid "Palau" msgstr "帕劳" -#: ../java/build/Countries.java:180 +#: ../java/build/Countries.java:175 msgid "Paraguay" msgstr "巴拉圭" -#: ../java/build/Countries.java:181 +#: ../java/build/Countries.java:176 msgid "Qatar" msgstr "卡塔尔" -#: ../java/build/Countries.java:182 +#: ../java/build/Countries.java:177 msgid "Reunion" msgstr "留尼汪岛" -#: ../java/build/Countries.java:183 +#: ../java/build/Countries.java:178 msgid "Romania" msgstr "罗马尼亚" -#: ../java/build/Countries.java:184 +#: ../java/build/Countries.java:179 msgid "Serbia" msgstr "塞尔维亚" -#: ../java/build/Countries.java:185 +#: ../java/build/Countries.java:180 msgid "Russian Federation" msgstr "俄联邦" -#: ../java/build/Countries.java:186 +#: ../java/build/Countries.java:181 msgid "Rwanda" msgstr "卢旺达" -#: ../java/build/Countries.java:187 +#: ../java/build/Countries.java:182 msgid "Saudi Arabia" msgstr "沙特阿拉伯" -#: ../java/build/Countries.java:188 +#: ../java/build/Countries.java:183 msgid "Solomon Islands" msgstr "所罗门群岛" -#: ../java/build/Countries.java:189 +#: ../java/build/Countries.java:184 msgid "Seychelles" msgstr "塞舌尔" -#: ../java/build/Countries.java:190 +#: ../java/build/Countries.java:185 msgid "Sudan" msgstr "苏丹" -#: ../java/build/Countries.java:191 +#: ../java/build/Countries.java:186 msgid "Sweden" msgstr "瑞典" -#: ../java/build/Countries.java:192 +#: ../java/build/Countries.java:187 msgid "Singapore" msgstr "新加坡" -#: ../java/build/Countries.java:193 +#: ../java/build/Countries.java:188 msgid "Slovenia" msgstr "斯洛文尼亚" -#: ../java/build/Countries.java:194 +#: ../java/build/Countries.java:189 msgid "Slovakia" msgstr "斯洛伐克" -#: ../java/build/Countries.java:195 +#: ../java/build/Countries.java:190 msgid "Sierra Leone" msgstr "塞拉利昂" -#: ../java/build/Countries.java:196 +#: ../java/build/Countries.java:191 msgid "San Marino" msgstr "圣马力诺" -#: ../java/build/Countries.java:197 +#: ../java/build/Countries.java:192 msgid "Senegal" msgstr "塞内加尔" -#: ../java/build/Countries.java:198 +#: ../java/build/Countries.java:193 msgid "Somalia" msgstr "索马里" -#: ../java/build/Countries.java:199 +#: ../java/build/Countries.java:194 msgid "Suriname" msgstr "苏里南" -#: ../java/build/Countries.java:200 +#: ../java/build/Countries.java:195 msgid "Sao Tome and Principe" msgstr "圣多美与普林西比共和国" -#: ../java/build/Countries.java:201 +#: ../java/build/Countries.java:196 msgid "El Salvador" msgstr "萨尔瓦多" -#: ../java/build/Countries.java:202 +#: ../java/build/Countries.java:197 msgid "Syrian Arab Republic" msgstr "叙利亚" -#: ../java/build/Countries.java:203 +#: ../java/build/Countries.java:198 msgid "Swaziland" msgstr "斯威士兰" -#: ../java/build/Countries.java:204 +#: ../java/build/Countries.java:199 msgid "Turks and Caicos Islands" msgstr "特克斯和凯科斯群岛" -#: ../java/build/Countries.java:205 +#: ../java/build/Countries.java:200 msgid "Chad" msgstr "乍得" -#: ../java/build/Countries.java:206 +#: ../java/build/Countries.java:201 msgid "French Southern Territories" msgstr "法属南半球领地" -#: ../java/build/Countries.java:207 +#: ../java/build/Countries.java:202 msgid "Togo" msgstr "多哥" -#: ../java/build/Countries.java:208 +#: ../java/build/Countries.java:203 msgid "Thailand" msgstr "泰国" -#: ../java/build/Countries.java:209 +#: ../java/build/Countries.java:204 msgid "Tajikistan" msgstr "塔吉克斯坦" -#: ../java/build/Countries.java:210 +#: ../java/build/Countries.java:205 msgid "Tokelau" msgstr "托克劳群岛" -#: ../java/build/Countries.java:211 +#: ../java/build/Countries.java:206 msgid "Timor-Leste" msgstr "东帝汶" -#: ../java/build/Countries.java:212 +#: ../java/build/Countries.java:207 msgid "Turkmenistan" msgstr "土库曼斯坦" -#: ../java/build/Countries.java:213 +#: ../java/build/Countries.java:208 msgid "Tunisia" msgstr "突尼斯" -#: ../java/build/Countries.java:214 +#: ../java/build/Countries.java:209 msgid "Tonga" msgstr "汤加" -#: ../java/build/Countries.java:215 +#: ../java/build/Countries.java:210 msgid "Turkey" msgstr "土耳其" -#: ../java/build/Countries.java:216 +#: ../java/build/Countries.java:211 msgid "Trinidad and Tobago" msgstr "特立尼达和多巴哥" -#: ../java/build/Countries.java:217 +#: ../java/build/Countries.java:212 msgid "Tuvalu" msgstr "图瓦鲁" -#: ../java/build/Countries.java:218 +#: ../java/build/Countries.java:213 msgid "Taiwan" msgstr "台湾" -#: ../java/build/Countries.java:219 +#: ../java/build/Countries.java:214 msgid "United Republic of Tanzania" msgstr "坦桑尼亚" -#: ../java/build/Countries.java:220 +#: ../java/build/Countries.java:215 msgid "Ukraine" msgstr "乌克兰" -#: ../java/build/Countries.java:221 +#: ../java/build/Countries.java:216 msgid "Uganda" msgstr "乌干达" -#: ../java/build/Countries.java:222 +#: ../java/build/Countries.java:217 msgid "United States Minor Outlying Islands" msgstr "美国本土外小岛屿" -#: ../java/build/Countries.java:223 +#: ../java/build/Countries.java:218 msgid "United States" msgstr "美国" -#: ../java/build/Countries.java:224 +#: ../java/build/Countries.java:219 msgid "Uruguay" msgstr "乌拉圭" -#: ../java/build/Countries.java:225 +#: ../java/build/Countries.java:220 msgid "Uzbekistan" msgstr "乌兹别克斯坦" -#: ../java/build/Countries.java:226 +#: ../java/build/Countries.java:221 msgid "Holy See (Vatican City State)" msgstr "梵地冈" -#: ../java/build/Countries.java:227 +#: ../java/build/Countries.java:222 msgid "Saint Vincent and the Grenadines" msgstr "圣文森特和格林纳丁斯" -#: ../java/build/Countries.java:228 +#: ../java/build/Countries.java:223 msgid "Venezuela" msgstr "委内瑞拉" -#: ../java/build/Countries.java:229 -#: ../java/build/Countries.java:230 +#: ../java/build/Countries.java:224 +#: ../java/build/Countries.java:225 msgid "Virgin Islands" msgstr "维京群岛" -#: ../java/build/Countries.java:231 +#: ../java/build/Countries.java:226 msgid "Viet Nam" msgstr "越南" -#: ../java/build/Countries.java:232 +#: ../java/build/Countries.java:227 msgid "Vanuatu" msgstr "瓦努阿图" -#: ../java/build/Countries.java:233 +#: ../java/build/Countries.java:228 msgid "Wallis and Futuna" msgstr "瓦利斯群岛和富图纳群岛" -#: ../java/build/Countries.java:234 +#: ../java/build/Countries.java:229 msgid "Samoa" msgstr "东萨摩亚" -#: ../java/build/Countries.java:235 +#: ../java/build/Countries.java:230 msgid "Yemen" msgstr "也门" -#: ../java/build/Countries.java:236 +#: ../java/build/Countries.java:231 msgid "Mayotte" msgstr "马约特" -#: ../java/build/Countries.java:237 +#: ../java/build/Countries.java:232 msgid "South Africa" msgstr "南非" -#: ../java/build/Countries.java:238 +#: ../java/build/Countries.java:233 msgid "Zambia" msgstr "赞比亚" -#: ../java/build/Countries.java:239 +#: ../java/build/Countries.java:234 msgid "Zimbabwe" msgstr "津巴布韦" -#: ../java/src/net/i2p/router/web/CSSHelper.java:54 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:30 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:32 +#: ../java/src/net/i2p/router/web/CSSHelper.java:57 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:34 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:36 #: ../java/strings/Strings.java:29 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234 msgid "I2P Router Console" @@ -1403,12 +1428,12 @@ msgid "Error updating the configuration - please see the error logs" msgstr "配置更新出错 - 请查看错误日志" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:263 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266 msgid "Configuration saved successfully" msgstr "设置保存成功" #: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:265 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268 msgid "Error saving the configuration (applied but not saved) - please see the error logs" msgstr "配置保存出错(已应用但未保存) - 参见错误日志" @@ -1452,6 +1477,7 @@ msgstr "插件 {0} 已停用" msgid "Error stopping plugin {0}" msgstr "停用插件 {0} 时发生错误" +#. label (IE) #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:119 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:189 msgid "Start" @@ -1479,8 +1505,8 @@ msgstr "客户程序索引无效" #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:389 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:387 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:379 msgid "Client" msgstr "客户" @@ -1588,8 +1614,8 @@ msgid "Plugin" msgstr "插件" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:165 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180 msgid "Version" msgstr "版本" @@ -1622,15 +1648,15 @@ msgid "Stop" msgstr "停止" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196 -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:58 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:312 msgid "Check for updates" msgstr "检查更新" #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:220 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:237 msgid "Update" msgstr "更新" @@ -1720,6 +1746,7 @@ msgid "WARN" msgstr "" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:199 msgid "Network" msgstr "网络" @@ -1728,7 +1755,8 @@ msgid "Service" msgstr "服务" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376 #: ../java/strings/Strings.java:72 msgid "Tunnels" msgstr "隧道" @@ -1751,15 +1779,15 @@ msgid "Logging" msgstr "日志" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255 #: ../java/strings/Strings.java:67 msgid "Peers" msgstr "节点" #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:298 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:382 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142 msgid "Stats" msgstr "统计" @@ -1768,7 +1796,7 @@ msgid "Advanced" msgstr "高级" #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48 -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:261 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:35 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515 @@ -1783,79 +1811,81 @@ msgstr "保存修改" msgid "Rechecking router reachability..." msgstr "正在重检查路由连通性..." -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:150 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153 msgid "Updating IP address" msgstr "正在更新IP地址" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:168 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171 msgid "Disabling TCP completely" msgstr "正在彻底禁用TCP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:172 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175 msgid "Updating inbound TCP address to" msgstr "正在更新进站TCP地址至" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:176 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179 msgid "Disabling inbound TCP" msgstr "正在禁用入站TCP" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:178 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181 msgid "Updating inbound TCP address to auto" msgstr "正在更新入站TCP地址至" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:187 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 msgid "Updating inbound TCP port to" msgstr "正在更新入站TCP端口至" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193 msgid "Updating inbound TCP port to auto" msgstr "正在更新入站TCP端口至" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "Updating UDP port from" msgstr "正在更新UDP端口由" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:202 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205 msgid "to" msgstr "至" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:218 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221 msgid "Gracefully restarting into Hidden Router Mode" msgstr "正在平滑重启路由进入隐身模式" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:220 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223 msgid "Gracefully restarting to exit Hidden Router Mode" msgstr "正在平滑重启路由退出隐身模式" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:229 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232 msgid "Enabling UPnP, restart required to take effect" msgstr "正在启用UPnP,程序重启后生效" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:231 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234 msgid "Disabling UPnP, restart required to take effect" msgstr "正在禁用UPnP,程序重启后生效" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:239 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242 msgid "Enabling laptop mode" msgstr "正在启用笔记本模式" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:241 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244 msgid "Disabling laptop mode" msgstr "正在禁用笔记本模式" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:247 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250 msgid "Requiring SSU introducers" msgstr "正在获取SSU中介" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:288 +#. There's a few changes that don't really require restart (e.g. enabling inbound TCP) +#. But it would be hard to get right, so just do a restart. +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:291 msgid "Gracefully restarting I2P to change published router address" msgstr "正在平滑重启路由重新发布路由地址" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314 msgid "Updating bandwidth share percentage" msgstr "正在更新共享带宽比例" -#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:394 +#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:397 msgid "Updated bandwidth limits" msgstr "带宽限制更新完毕" @@ -1869,7 +1899,12 @@ msgstr "未知" #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169 msgid "bits per second" -msgstr "比特/秒" +msgstr "Bit/s" + +#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170 +#, java-format +msgid "or {0} bytes per month maximum" +msgstr "或最多 {0} Byte/月(假设始终 7 天 x 24小时开机)" #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314 @@ -1917,12 +1952,15 @@ msgstr "速度值无效" msgid "Bad capacity value" msgstr "容量值无效" +#. Normal browsers send value, IE sends button label #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:57 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:292 msgid "Shutdown immediately" msgstr "立刻关闭" +#. ctx.router().shutdown(Router.EXIT_HARD); // never returns +#. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36 msgid "Cancel shutdown" msgstr "取消关闭" @@ -1935,6 +1973,8 @@ msgstr "取消重启" msgid "Restart immediately" msgstr "立刻重启" +#. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns +#. give the UI time to respond #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43 msgid "Restart" msgstr "重 启" @@ -2106,6 +2146,8 @@ msgstr "统计数据过滤器及地址更新失败" msgid "Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>" msgstr "曲线图列表已更新,更新后的内容可能需要最多 60s 的时间才能在这里及 <a href=\"graphs.jsp\">统计图表</a>页面中反映出来。" +#. the count isn't really correct anyway, since we don't check for actual changes +#. addFormNotice("Updated settings for " + updated + " pools."); #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:137 msgid "Updated settings for all pools." msgstr "隧道池更新完毕" @@ -2119,21 +2161,18 @@ 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 "隧道" - +#. * dummies for translation #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14 -msgid "hops" -msgstr "跳点" +#, java-format +msgid "1 hop" +msgid_plural "{0} hops" +msgstr[0] "{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} 隧道" #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 @@ -2161,18 +2200,23 @@ msgstr "性能警告 - 设置中包括长隧道" msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." msgstr "性能警告 - 设置中包括大量隧道" +#. buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n"); +#. tunnel depth #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87 msgid "Length" msgstr "长度" +#. tunnel depth variance #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104 msgid "Randomization" msgstr "随机" +#. tunnel quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128 msgid "Quantity" msgstr "数量" +#. tunnel backup quantity #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145 msgid "Backup quantity" msgstr "备用数量" @@ -2221,52 +2265,52 @@ msgstr "俄语" msgid "Swedish" msgstr "瑞士语" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:65 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88 msgid "Update available, attempting to download now" msgstr "有更新可用,正在尝试下载" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:67 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90 msgid "Update available, click button on left to download" msgstr "有更新可用,点左侧按钮下载" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:73 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96 msgid "No update available" msgstr "无更新" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104 msgid "Updating news URL to" msgstr "正在更新新闻链接至" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:89 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112 msgid "Updating proxy host to" msgstr "正在更新代理主机至" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:97 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120 msgid "Updating proxy port to" msgstr "正在更新代理端口至" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:110 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133 msgid "Updating refresh frequency to" msgstr "正在更新更新频率为" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140 msgid "Updating update policy to" msgstr "正在更新更新策略为" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:126 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149 msgid "Updating update URLs." msgstr "正在更新更新链接至" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:135 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158 msgid "Updating trusted keys." msgstr "正在更新可信公钥为" -#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:143 +#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166 msgid "Updating unsigned update URL to" msgstr "正在更新未签名软件链接至" #: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88 -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "Never" msgstr "从不" @@ -2290,66 +2334,76 @@ msgstr "仅下载、验证并重启" msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit." msgstr "表单提交无效,可能的原因是您使用了“后退”或“刷新”按钮。请重新提交。" -#: ../java/src/net/i2p/router/web/GraphHelper.java:128 +#: ../java/src/net/i2p/router/web/GraphHelper.java:82 +msgid "Combined bandwidth graph" +msgstr "复合带宽图" + +#. e.g. "statname for 60m" +#: ../java/src/net/i2p/router/web/GraphHelper.java:96 +#, java-format +msgid "{0} for {1}" +msgstr "过去 {1} 统计 {0}" + +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Configure Graph Display" msgstr "图表显示设置" -#: ../java/src/net/i2p/router/web/GraphHelper.java:128 +#: ../java/src/net/i2p/router/web/GraphHelper.java:130 msgid "Select Stats" msgstr "选择统计项" -#: ../java/src/net/i2p/router/web/GraphHelper.java:130 +#: ../java/src/net/i2p/router/web/GraphHelper.java:132 msgid "Periods" msgstr "周期" -#: ../java/src/net/i2p/router/web/GraphHelper.java:131 +#: ../java/src/net/i2p/router/web/GraphHelper.java:133 msgid "Plot averages" msgstr "事件均值" -#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +#: ../java/src/net/i2p/router/web/GraphHelper.java:134 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332 msgid "or" msgstr "或" -#: ../java/src/net/i2p/router/web/GraphHelper.java:132 +#: ../java/src/net/i2p/router/web/GraphHelper.java:134 msgid "plot events" msgstr "事件数量" -#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +#: ../java/src/net/i2p/router/web/GraphHelper.java:135 msgid "Image sizes" msgstr "图像尺寸" -#: ../java/src/net/i2p/router/web/GraphHelper.java:133 +#: ../java/src/net/i2p/router/web/GraphHelper.java:135 msgid "width" msgstr "宽度" -#: ../java/src/net/i2p/router/web/GraphHelper.java:134 +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 msgid "height" msgstr "高度" -#: ../java/src/net/i2p/router/web/GraphHelper.java:134 -#: ../java/src/net/i2p/router/web/GraphHelper.java:135 +#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:137 msgid "pixels" msgstr "像素" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "Refresh delay" msgstr "刷新延迟" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "hour" msgstr "小时" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "minute" msgstr "分钟" -#: ../java/src/net/i2p/router/web/GraphHelper.java:136 +#: ../java/src/net/i2p/router/web/GraphHelper.java:138 msgid "minutes" msgstr "分钟" -#: ../java/src/net/i2p/router/web/GraphHelper.java:137 +#: ../java/src/net/i2p/router/web/GraphHelper.java:139 msgid "Redraw" msgstr "重绘" @@ -2358,181 +2412,182 @@ msgstr "重绘" msgid "File location" msgstr "文件位置" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:60 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:77 msgid "Network Database RouterInfo Lookup" msgstr "网络数据库 RouterInfo 检索" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 #: ../java/strings/Strings.java:68 msgid "Router" msgstr "路由器" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92 msgid "not found in network database" msgstr "在网络数据库概况未找到" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:83 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212 msgid "Network Database Contents" msgstr "网络数据库内容" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:84 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105 msgid "View RouterInfo" msgstr "浏览 RouterInfo" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:85 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106 msgid "LeaseSets" msgstr "赁集" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:93 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128 msgid "LeaseSet" msgstr "赁集" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:95 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130 msgid "Local" msgstr "本地" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:97 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132 msgid "Unpublished" msgstr "未发布" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:98 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:140 msgid "Destination" msgstr "目标" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:115 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150 #, java-format msgid "Expires in {0}" msgstr "{0} 后过期" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:117 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152 #, java-format msgid "Expired {0} ago" msgstr "{0}前过期" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:156 msgid "Gateway" msgstr "网关" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:119 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164 msgid "Lease" msgstr "租赁" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:121 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166 msgid "Tunnel" msgstr "隧道" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:135 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212 msgid "View LeaseSets" msgstr "查看赁集" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:137 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:214 msgid "Not initialized" msgstr "未初始化" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:146 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 msgid "Routers" msgstr "路由器" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:148 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225 msgid "Show all routers" msgstr "显示所有路由器" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:227 msgid "Show all routers with full stats" msgstr "显示所有路由及统计" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:262 msgid "Network Database Router Statistics" msgstr "NetDb路由器统计" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:191 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300 msgid "Count" msgstr "计数" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:205 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282 msgid "Transports" msgstr "传输" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300 msgid "Country" msgstr "国家" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:255 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:339 msgid "Our info" msgstr "我方信息" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:257 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:341 msgid "Peer info for" msgstr "节点信息" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:261 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345 msgid "Full entry" msgstr "完整项" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351 #: ../java/src/net/i2p/router/web/SummaryHelper.java:110 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600 msgid "Hidden" msgstr "隐身" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:267 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351 msgid "Updated" msgstr "已更新" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:271 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355 #, java-format msgid "{0} ago" msgstr "{0}前" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:270 -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:274 +#. shouldnt happen +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358 msgid "Published" msgstr "发布" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:276 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360 msgid "Address(es)" msgstr "地址" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:289 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373 msgid "cost" -msgstr "" +msgstr "开销" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397 msgid "Hidden or starting up" msgstr "隐身或正在启动" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397 msgid "SSU" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397 msgid "SSU with introducers" msgstr "使用中介的SSU连接" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:314 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398 msgid "NTCP" msgstr "" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:314 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398 msgid "NTCP and SSU" msgstr "NTCP 与 SSU" -#: ../java/src/net/i2p/router/web/NetDbRenderer.java:314 +#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398 msgid "NTCP and SSU with introducers" msgstr "使用中介的NTCP与SSU连接" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:80 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:82 #, java-format msgid "News last updated {0} ago." msgstr "新闻更新于{0}前" -#: ../java/src/net/i2p/router/web/NewsFetcher.java:86 +#: ../java/src/net/i2p/router/web/NewsFetcher.java:88 #, java-format msgid "News last checked {0} ago." msgstr "最近一次查收新闻在{0}前" @@ -2547,17 +2602,17 @@ msgstr "无法确定版本,插件 {0} 安装失败" msgid "Checking for update of plugin {0}" msgstr "正在为插件 {0} 检查更新" -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:153 +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154 #, java-format msgid "New plugin version {0} is available" msgstr "新插件版本为 {0}" -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:155 +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156 #, java-format msgid "No new version is available for plugin {0}" msgstr "插件 {0} 有更新" -#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:164 +#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165 #, java-format msgid "Update check failed for plugin {0}" msgstr "插件 {0} 更新检测失败" @@ -2598,6 +2653,7 @@ msgstr "由 {0} 获取的插件已损坏。" msgid "Plugin from {0} does not contain the required configuration file" msgstr "由 {0} 获取的插件缺少必要的配置文件" +#. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>"); #: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:199 #, java-format msgid "Plugin from {0} contains an invalid key" @@ -2758,7 +2814,7 @@ msgid "Failing" msgstr "失败" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281 msgid "Integrated" msgstr "已整合节点" @@ -2766,6 +2822,7 @@ msgstr "已整合节点" msgid "Unreachable" msgstr "不可达" +#. hide if < 10% #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171 msgid "Test Fails" msgstr "测试失败" @@ -2784,7 +2841,7 @@ msgstr "容量" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189 msgid "Integ. Value" -msgstr "" +msgstr "整数值" #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190 msgid "Last Heard About" @@ -2866,6 +2923,7 @@ msgstr "分组" msgid "capabilities in the netDb, not used to determine profiles" msgstr "netDb中的容量,与描述信息无关。" +#. capabilities #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259 #: ../java/strings/Strings.java:81 msgid "caps" @@ -2921,6 +2979,41 @@ msgstr "封锁直到重启或{0}后" msgid "unban now" msgstr "立即解封" +#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#: ../java/src/net/i2p/router/web/StatSummarizer.java:174 +msgid "Bandwidth usage" +msgstr "带宽占用" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:181 +msgid "Outbound bytes/sec" +msgstr "出站(byte/s)" + +#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3); +#: ../java/src/net/i2p/router/web/StatSummarizer.java:183 +msgid "Inbound bytes/sec" +msgstr "入站(byte/s)" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:186 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:187 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:189 +msgid "bytes/sec" +msgstr "" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:186 +msgid "out average" +msgstr "出站平均值" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:187 +#: ../java/src/net/i2p/router/web/StatSummarizer.java:189 +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:110 +msgid "max" +msgstr "最大" + +#: ../java/src/net/i2p/router/web/StatSummarizer.java:188 +msgid "in average" +msgstr "入站平均值" + #: ../java/src/net/i2p/router/web/StatsGenerator.java:56 msgid "GO" msgstr "" @@ -2965,235 +3058,244 @@ msgstr "总平均值" msgid "peak average" msgstr "峰值平均值" +#. Display the strict average #: ../java/src/net/i2p/router/web/StatsGenerator.java:217 msgid "lifetime average value" msgstr "总平均值" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:40 +msgid "I2P Router Help & FAQ" +msgstr "I2P 使用帮助与常见问答" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:42 +msgid "Help & FAQ" +msgstr "" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 msgid "Configure startup of clients and webapps (services); manually start dormant services" msgstr "设置客户程序及Web程序(服务)的启动;手动启动重要服务" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56 msgid "I2P Services" msgstr "I2P 服务" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62 msgid "Manage your I2P hosts file here (I2P domain name resolution)" msgstr "管理您的 I2P HOST表(I2P域名解析表)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64 msgid "Addressbook" msgstr "地址簿" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68 msgid "Built-in anonymous BitTorrent Client" msgstr "内建的匿名 BitTorrent 客户端" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 msgid "Torrents" msgstr "匿名BT" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74 msgid "Anonymous webmail client" msgstr "匿名Web邮件客户端" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76 msgid "Webmail" msgstr "匿名邮箱" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80 msgid "Anonymous resident webserver" msgstr "内置的匿名Web服务器" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82 msgid "Webserver" msgstr "匿名主页服务器" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90 msgid "Configure I2P Router" msgstr "设置 I2P 路由器" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92 msgid "I2P Internals" msgstr "I2P内部设置" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:88 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374 msgid "View existing tunnels and tunnel build status" msgstr "查看现存隧道及隧道的建立状态" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:94 -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253 msgid "Show all current peer connections" msgstr "显示当前所有的节点连接" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110 msgid "Show recent peer performance profiles" msgstr "显示当前节点的性能记录" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112 msgid "Profiles" msgstr "节点信息" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116 msgid "Show list of all known I2P routers" msgstr "包含所有已知I2P路由器的列表" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118 msgid "NetDB" msgstr "NetDB" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122 msgid "Health Report" msgstr "路由器健康状况报告" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124 msgid "Logs" msgstr "日志" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134 msgid "Graph router performance" msgstr "路由性能统计图" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136 msgid "Graphs" msgstr "图表" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140 msgid "Textual router performance statistics" msgstr "路由性能文字统计" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:375 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Local Destinations" msgstr "本地服务" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:148 #: ../java/strings/Strings.java:62 msgid "I2PTunnel" msgstr "I2P隧道" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:159 msgid "I2P Router Help" msgstr "I2P路由帮助" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:151 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161 msgid "General" msgstr "功能概况" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166 +msgid "Local Identity" +msgstr "本地身份" + +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:170 msgid "Your unique I2P router identity is" msgstr "您I2P路由的唯一身份为" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:158 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174 msgid "never reveal it to anyone" msgstr "切勿将其告诉任何人" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160 -msgid "Local Identity" -msgstr "本地身份" +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:176 +msgid "show" +msgstr "显示" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:187 msgid "How long we've been running for this session" msgstr "本次路由运行时间" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190 msgid "Uptime" msgstr "运行时间" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:182 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197 msgid "Help with configuring your firewall and router for optimal I2P performance" msgstr "如何正确配置防火墙和(物理)路由器优化I2P性能" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:226 msgid "Download" msgstr "下载" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235 msgid "Download Unsigned" msgstr "下载未签名更新" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261 msgid "Active" msgstr "活动节点" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:252 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269 msgid "Fast" msgstr "快速节点" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275 msgid "High capacity" msgstr "高容量节点" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 msgid "Known" msgstr "已知节点" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:302 msgid "Help with firewall configuration" msgstr "如何配置防火墙" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304 msgid "Check NAT/firewall" msgstr "检查NAT/防火墙" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:307 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324 msgid "Reseed" msgstr "补种(搜索节点启动网络)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341 msgid "Configure router bandwidth allocation" msgstr "设置路由的带宽分配" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343 msgid "Bandwidth in/out" msgstr "带宽(进/出站)" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359 msgid "Total" msgstr "总计" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:366 msgid "Used" -msgstr "已使用" +msgstr "已用" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:361 -msgid "Tunnels in/out" -msgstr "通道(上/下行)" - -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:366 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381 msgid "Exploratory" msgstr "探测" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:382 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393 msgid "Participating" msgstr "共享" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399 msgid "Share ratio" msgstr "共享/占用" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405 msgid "What's in the router's job queue?" msgstr "查看路由的作业队列" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:396 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407 msgid "Congestion" msgstr "拥堵" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:401 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412 msgid "Job lag" msgstr "作业延迟" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:418 msgid "Message delay" msgstr "消息延迟" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:424 msgid "Tunnel lag" msgstr "隧道延迟" -#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:419 +#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:430 msgid "Backlog" msgstr "积压" @@ -3258,55 +3360,85 @@ msgstr "警告-因防火墙受限且UDP被禁用" msgid "Testing" msgstr "测试中" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:375 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:365 msgid "Add/remove/edit & control your client and server tunnels" msgstr "添加、删除、编辑或控制客户程序隧道和服务隧道" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:387 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:377 msgid "Server" msgstr "服务" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:391 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:381 msgid "Show tunnels" msgstr "显示隧道" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:402 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 msgid "Leases expired" msgstr "Lease已过期" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:402 -#: ../java/src/net/i2p/router/web/SummaryHelper.java:403 +#. red or yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:392 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "Rebuilding" msgstr "正在重建" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:403 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:393 msgid "ago" msgstr "前" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:406 +#. green light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:396 msgid "Ready" msgstr "就绪" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +#. yellow light +#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 msgid "Building" msgstr "创建中" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:410 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:400 msgid "Building tunnels" msgstr "正在隧道创建" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:415 +#: ../java/src/net/i2p/router/web/SummaryHelper.java:405 msgid "none" msgstr "无" -#: ../java/src/net/i2p/router/web/SummaryHelper.java:426 +#. tunnel nicknames, taken from i2ptunnel.config so they will display +#. nicely under 'local destinations' in the summary bar +#. note that if the wording changes in i2ptunnel.config, we have to +#. keep the old string here as well for existing installs +#: ../java/src/net/i2p/router/web/SummaryHelper.java:416 #: ../java/strings/Strings.java:36 msgid "shared clients" msgstr "共享客户端" +#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:84 +#, java-format +msgid "events in {0}" +msgstr "事件/{0}" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:86 +#, java-format +msgid "averaged for {0}" +msgstr "{0} 平均值" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:96 +msgid "Events per period" +msgstr "事件/周期" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:109 +msgid "avg" +msgstr "平均" + +#: ../java/src/net/i2p/router/web/SummaryRenderer.java:111 +msgid "now" +msgstr "当前" + #: ../java/src/net/i2p/router/web/TunnelRenderer.java:41 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:63 -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:275 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:280 msgid "configure" msgstr "设置" @@ -3373,7 +3505,7 @@ msgid "Inactive participating tunnels" msgstr "不活跃的共享隧道" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:127 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218 msgid "Lifetime bandwidth usage" msgstr "运行期间带宽使用情况" @@ -3390,7 +3522,7 @@ msgid "Endpoint" msgstr "终端" #: ../java/src/net/i2p/router/web/TunnelRenderer.java:205 -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "Build in progress" msgstr "创建中" @@ -3398,39 +3530,39 @@ msgstr "创建中" msgid "inbound" msgstr "入站" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:211 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212 msgid "outbound" msgstr "出站" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:215 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 msgid "No tunnels; waiting for the grace period to end." msgstr "无隧道;等待宽限期结束。" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:216 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219 msgid "in" msgstr "入" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:220 msgid "out" msgstr "出" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:234 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237 msgid "Tunnel Counts By Peer" msgstr "每节点隧道计数" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "% of total" msgstr "占总数%" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Our Tunnels" msgstr "我方隧道" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:235 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238 msgid "Participating Tunnels" msgstr "共享隧道" -#: ../java/src/net/i2p/router/web/TunnelRenderer.java:253 +#: ../java/src/net/i2p/router/web/TunnelRenderer.java:256 msgid "Totals" msgstr "总计" @@ -3488,6 +3620,7 @@ msgstr "更新已验证" msgid "Transfer failed" msgstr "数据传输失败" +#. wars for ConfigClientsHelper #: ../java/strings/Strings.java:12 msgid "addressbook" msgstr "地址簿" @@ -3512,6 +3645,9 @@ msgstr "susiDNS" msgid "routerconsole" msgstr "路由控制台" +#. clients, taken from clients.config, for ConfigClientsHelper +#. note that if the wording changes in clients.config, we have to +#. keep the old string here as well for existing installs #: ../java/strings/Strings.java:22 msgid "Web console" msgstr "网页控制台" @@ -3560,6 +3696,7 @@ msgstr "匿名主页服务器" msgid "HTTP Proxy" msgstr "HTTP 代理" +#. older names for pre-0.7.4 installs #: ../java/strings/Strings.java:42 msgid "eepProxy" msgstr "I2P代理" @@ -3568,14 +3705,17 @@ msgstr "I2P代理" msgid "ircProxy" msgstr "I2P聊天室" +#. hardcoded in i2psnark #: ../java/strings/Strings.java:45 msgid "I2PSnark" msgstr "I2P Snark" +#. hardcoded in iMule? #: ../java/strings/Strings.java:47 msgid "iMule" msgstr "" +#. standard themes for ConfigUIHelper #: ../java/strings/Strings.java:51 msgid "classic" msgstr "经典" @@ -3592,6 +3732,7 @@ msgstr "亮色调" msgid "midnight" msgstr "午夜" +#. stat groups for stats.jsp #: ../java/strings/Strings.java:57 msgid "Bandwidth" msgstr "带宽" @@ -3644,6 +3785,8 @@ msgstr "传输" msgid "udp" msgstr "UDP" +#. parameters in transport addresses (netdb.jsp) +#. may or may not be worth translating #: ../java/strings/Strings.java:77 msgid "host" msgstr "主机" @@ -3656,6 +3799,7 @@ msgstr "密钥" msgid "port" msgstr "端口" +#. introducer host #: ../java/strings/Strings.java:83 msgid "ihost0" msgstr "" @@ -3668,6 +3812,7 @@ msgstr "" msgid "ihost2" msgstr "" +#. introducer port #: ../java/strings/Strings.java:87 msgid "iport0" msgstr "" @@ -3680,6 +3825,7 @@ msgstr "" msgid "iport2" msgstr "" +#. introducer key #: ../java/strings/Strings.java:91 msgid "ikey0" msgstr "" @@ -3692,6 +3838,7 @@ msgstr "" msgid "ikey2" msgstr "" +#. introducer tag #: ../java/strings/Strings.java:95 msgid "itag0" msgstr "" @@ -3704,10 +3851,27 @@ msgstr "" msgid "itag2" msgstr "" +#. Descriptions for the stats that are graphed by default +#. There are over 500 stats currently defined, we aren't going to tag them all +#: ../java/strings/Strings.java:101 +msgid "Low-level bandwidth receive rate" +msgstr "底层速度(入站)" + +#. bw.recvRate +#: ../java/strings/Strings.java:102 +msgid "Low-level bandwidth send rate" +msgstr "底层速度(出站)" + +#. bw.sendRate +#: ../java/strings/Strings.java:103 +msgid "How many peers we are actively talking with" +msgstr "正在通讯的活动节点数" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 msgid "config networking" msgstr "连网设置" +#. We have intl defined when this is included, but not when compiled standalone. #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:217 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:218 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:217 @@ -3722,6 +3886,7 @@ msgstr "连网设置" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:228 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:217 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:223 @@ -3738,6 +3903,7 @@ msgstr "连网设置" msgid "Refresh (s)" msgstr "刷新(秒)" +#. ditto #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:222 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:221 @@ -3752,6 +3918,7 @@ msgstr "刷新(秒)" #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:224 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:232 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:221 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:224 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:224 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:224 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:227 @@ -4806,15 +4973,15 @@ msgstr "如果您发现错误请报告至<a href=\"http://trac.i2p2.i2p/newticke msgid "Please include this information in bug reports" msgstr "报告问题时请包括以下信息" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:269 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274 msgid "Critical Logs" msgstr "关键日志" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:273 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278 msgid "Router Logs" msgstr "路由器日志" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:279 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284 msgid "Service (Wrapper) Logs" msgstr "服务(封装)日志" @@ -4879,6 +5046,12 @@ msgstr "隧道概况" msgid "I2P Tunnel Summary" msgstr "I2P 隧道概况" +#~ msgid "hops" +#~ msgstr "跳点" +#~ msgid "tunnels" +#~ msgstr "隧道" +#~ msgid "Tunnels in/out" +#~ msgstr "通道(上/下行)" #~ msgid "name" #~ msgstr "名称" #~ msgid "" diff --git a/apps/susimail/src/src/i2p/susi/util/Config.java b/apps/susimail/src/src/i2p/susi/util/Config.java index 723c56b992992be84f1a5625967677dc2ae95b86..8564cbfad8eb355f30470524263b3efe0e498c9b 100644 --- a/apps/susimail/src/src/i2p/susi/util/Config.java +++ b/apps/susimail/src/src/i2p/susi/util/Config.java @@ -42,7 +42,6 @@ public class Config { /** * * @param name - * @return */ public static String getProperty( String name ) { @@ -98,7 +97,6 @@ public class Config { * * @param name * @param defaultValue - * @return */ public static String getProperty( String name, String defaultValue ) { @@ -109,7 +107,6 @@ public class Config { * * @param name * @param defaultValue - * @return */ public static int getProperty( String name, int defaultValue ) { diff --git a/apps/susimail/src/src/i2p/susi/util/Folder.java b/apps/susimail/src/src/i2p/susi/util/Folder.java index 7a18a2477db38c5bdbc709b0ac6be75edea1d61d..c8cd9b7669d13f741cbea730a445abacc995b2b0 100644 --- a/apps/susimail/src/src/i2p/susi/util/Folder.java +++ b/apps/susimail/src/src/i2p/susi/util/Folder.java @@ -270,7 +270,7 @@ public class Folder { /** * Returns the element on the current page on the given position. * - * @param Position of the element on the current page. + * @param x Position of the element on the current page. * @return Element on the current page on the given position. */ public Object getElementAtPosXonCurrentPage( int x ) @@ -331,7 +331,7 @@ public class Folder { * Gets index of an element in the array regardless of sorting direction. * * @param element - * @return + * @return index */ private int getIndexOf( Object element ) { @@ -348,7 +348,7 @@ public class Folder { * Sorting direction is taken into account. * * @param element - * @return + * @return The next element */ public Object getNextElement( Object element ) { @@ -369,7 +369,7 @@ public class Folder { * Sorting direction is taken into account. * * @param element - * @return + * @return The previous element */ public Object getPreviousElement( Object element ) { @@ -388,7 +388,7 @@ public class Folder { * Retrieves element at index i. Depends on sorting direction. * * @param i - * @return + * @return Element at index i */ private Object getElement( int i ) { @@ -404,8 +404,6 @@ public class Folder { /** * Returns true, if folder shows points to the last page. - * - * @return */ public boolean isLastPage() { @@ -414,8 +412,6 @@ public class Folder { /** * Returns true, if folder shows points to the first page. - * - * @return */ public boolean isFirstPage() { @@ -427,7 +423,6 @@ public class Folder { * The sorting direction influences which element is taken for comparison. * * @param element - * @return */ public boolean isLastElement( Object element ) { @@ -441,7 +436,6 @@ public class Folder { * The sorting direction influences which element is taken for comparison. * * @param element - * @return */ public boolean isFirstElement( Object element ) { diff --git a/apps/susimail/src/src/i2p/susi/webmail/Attachment.java b/apps/susimail/src/src/i2p/susi/webmail/Attachment.java index 91da870640d0bdbf525321d63086b5447d4f580a..922ca8069ff385d30716be65915883b53415ddb4 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/Attachment.java +++ b/apps/susimail/src/src/i2p/susi/webmail/Attachment.java @@ -56,16 +56,12 @@ public class Attachment { public void setBuffer(ReadBuffer buffer) { this.buffer = buffer; } - /** - * @return - */ + public String getTransferEncoding() { // TODO Auto-generated method stub return transferEncoding; } - /** - * @return - */ + public String getContentType() { // TODO Auto-generated method stub return contentType; @@ -82,9 +78,7 @@ public class Attachment { public void setTransferEncoding(String transferEncoding) { this.transferEncoding = transferEncoding; } - /** - * @param string - */ + public void setData(String data ) { this.data = data; } diff --git a/apps/susimail/src/src/i2p/susi/webmail/Mail.java b/apps/susimail/src/src/i2p/susi/webmail/Mail.java index 80f6d67bffffb5d954f62a0cb163638a4eed1c81..98cf7c9e59c7b4cdb1bf0918097f5674097e99fe 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/Mail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/Mail.java @@ -78,8 +78,8 @@ public class Mail { } /** * - * @param address - * @return + * @param address E-mail address to be validated + * @return Is the e-mail address valid? */ public static boolean validateAddress( String address ) { @@ -105,7 +105,6 @@ public class Mail { } /** * @param address - * @return */ public static String getAddress(String address ) { diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java index 05694f2bf546d64532b92d8df59efbb2f5d091b3..a7116811ceb59bf03c62f8ba42372f450eaa2a9e 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java +++ b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java @@ -47,9 +47,9 @@ public class MailCache { /** * Fetch any needed data from pop3 server. * - * @param id message id to get + * @param uidl message id to get * @param headerOnly fetch only header lines? - * @return + * @return An e-mail */ public Mail getMail( String uidl, boolean headerOnly ) { diff --git a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java index 0cb20af2f6d308b8d4ec7ad850f547ff280395f9..0c1d835cc15806b9c3254d03425a7563a8459567 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java +++ b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java @@ -67,29 +67,25 @@ public class RequestWrapper { /** * @param b - * @return */ public HttpSession getSession(boolean b) { return httpRequest.getSession( b ); } /** - * @param key - * @return + * @param name Specific parameter key + * @return parameter value */ public String getParameter(String name ) { return getParameter( name, null ); } - /** - * @return - */ public HttpSession getSession() { return httpRequest.getSession(); } /** - * @return + * @return List of request parameter names */ public Enumeration getParameterNames() { if( multiPartRequest != null ) { @@ -106,24 +102,19 @@ public class RequestWrapper { } /** - * @return + * @return The total length of the content. */ public int getContentLength() { return httpRequest.getContentLength(); } /** - * @return + * @return The content type of the request. */ public String getContentType() { return httpRequest.getContentType(); } - /** - * - * @param partName - * @return - */ public String getContentType( String partName ) { String result = null; @@ -143,19 +134,11 @@ public class RequestWrapper { } return result; } - /** - * @param string - * @return - */ + public Object getAttribute(String string) { return httpRequest.getAttribute( string ); } - /** - * @param new_subject - * @param string - * @return - */ public String getParameter( String name, String defaultValue ) { String result = defaultValue; @@ -184,10 +167,7 @@ public class RequestWrapper { } return result; } - /** - * @param new_filename - * @return - */ + public String getFilename(String partName ) { String result = null; @@ -198,10 +178,7 @@ public class RequestWrapper { } return result; } - /** - * @param new_filename - * @return - */ + public InputStream getInputStream(String partName ) { InputStream result = null; diff --git a/apps/susimail/src/src/i2p/susi/webmail/encoding/Base64.java b/apps/susimail/src/src/i2p/susi/webmail/encoding/Base64.java index b6c8ffaf5a93082b333451122921f0c80450dfc0..1d376fc386916fe85681ef5f05bd837d33d8a3f8 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/encoding/Base64.java +++ b/apps/susimail/src/src/i2p/susi/webmail/encoding/Base64.java @@ -42,7 +42,7 @@ public class Base64 implements Encoding { return "base64"; } /** - * @return + * @return Base64-encoded String. * @throws EncodingException */ public String encode( byte in[] ) throws EncodingException @@ -53,8 +53,8 @@ public class Base64 implements Encoding { throw new EncodingException( e.getMessage() ); } } - /* (non-Javadoc) - * @see i2p.susi23.util.Encoding#encode(java.lang.String) + /** + * @see Base64#encode(byte[]) */ public String encode(String str) throws EncodingException { try { @@ -66,7 +66,7 @@ public class Base64 implements Encoding { /** * * @param in - * @return + * @see Base64#encode(String) */ private String encode( InputStream in ) throws IOException, EncodingException { @@ -116,7 +116,7 @@ public class Base64 implements Encoding { /** * @param b - * @return + * @return Encoded single byte. */ private static int encodeByte(int b) { /* @@ -173,21 +173,21 @@ public class Base64 implements Encoding { /** * @param text - * @return + * @return Buffer containing a decoded String. */ public ReadBuffer decode(String text) throws DecodingException { return text != null ? decode( text.getBytes() ) : null; } - /* (non-Javadoc) - * @see i2p.susi23.util.Encoding#decode(byte[]) + /** + * @see Base64#decode(String) */ public ReadBuffer decode(byte[] in) throws DecodingException { return decode( in, 0, in.length ); } - /* (non-Javadoc) - * @see i2p.susi23.util.Encoding#decode(byte[], int, int) + /** + * @see Base64#decode(String) */ public ReadBuffer decode(byte[] in, int offset, int length) throws DecodingException { byte out[] = new byte[length * 3 / 4 + 1 ]; @@ -228,10 +228,10 @@ public class Base64 implements Encoding { return readBuffer; } - /* (non-Javadoc) - * @see i2p.susi23.util.Encoding#decode(i2p.susi23.util.ReadBuffer) + /* + * @see Base64#decode(String) */ public ReadBuffer decode(ReadBuffer in) throws DecodingException { return decode( in.content, in.offset, in.length ); } -} \ No newline at end of file +} diff --git a/apps/susimail/src/src/i2p/susi/webmail/encoding/Encoding.java b/apps/susimail/src/src/i2p/susi/webmail/encoding/Encoding.java index 9b77fb335520be82d4f2f781aa45e69888618ea1..37b823c9cc4ea087eee598ad7b924ffa56be8f35 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/encoding/Encoding.java +++ b/apps/susimail/src/src/i2p/susi/webmail/encoding/Encoding.java @@ -35,21 +35,21 @@ public interface Encoding { /** * * @param in - * @return + * @return Encoded string. * @throws EncodingException */ public String encode( byte in[] ) throws EncodingException; /** * * @param str - * @return + * @see Encoding#encode(byte[]) * @throws EncodingException */ public String encode( String str ) throws EncodingException; /** * * @param in - * @return + * @see Encoding#decode(byte[], int, int) * @throws DecodingException */ public ReadBuffer decode( byte in[] ) throws DecodingException; @@ -58,21 +58,21 @@ public interface Encoding { * @param in * @param offset * @param length - * @return + * @return Output buffer containing decoded String. * @throws DecodingException */ public ReadBuffer decode( byte in[], int offset, int length ) throws DecodingException; /** * * @param str - * @return + * @see Encoding#decode(byte[], int, int) * @throws DecodingException */ public ReadBuffer decode( String str ) throws DecodingException; /** * * @param in - * @return + * @see Encoding#decode(byte[], int, int) * @throws DecodingException */ public ReadBuffer decode( ReadBuffer in ) throws DecodingException; diff --git a/apps/susimail/src/src/i2p/susi/webmail/encoding/EncodingFactory.java b/apps/susimail/src/src/i2p/susi/webmail/encoding/EncodingFactory.java index 9fd5d97807e49588cca82585475ebe8b964a087f..bbefe00e1c509b686d0903a21541e17a1f8ddadf 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/encoding/EncodingFactory.java +++ b/apps/susimail/src/src/i2p/susi/webmail/encoding/EncodingFactory.java @@ -62,7 +62,7 @@ public class EncodingFactory { * * @param name name of encoding (e.g. quoted-printable) * - * @return + * @return Encoder instance */ public static Encoding getEncoding( String name ) { @@ -71,7 +71,7 @@ public class EncodingFactory { /** * Returns list of available encodings; * - * @return + * @return List of encodings */ public static Set availableEncodings() { diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java index 6e266e24976a59dfb56392e53c18876f4fc70609..4434cff5e97a083e2cf460cb97deab40a6d60e62 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java +++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java @@ -85,7 +85,7 @@ public class POP3MailBox { /** * * @param uidl - * @return + * @return Byte buffer containing header data. */ public ReadBuffer getHeader( String uidl ) { synchronized( synchronizer ) { @@ -97,7 +97,7 @@ public class POP3MailBox { * retrieves header from pop3 server (with TOP command and RETR as fallback) * * @param id message id - * @return byte buffer containing data + * @return Byte buffer containing header data. */ private ReadBuffer getHeader( int id ) { synchronized( synchronizer ) { @@ -138,7 +138,7 @@ public class POP3MailBox { /** * * @param uidl - * @return + * @return Byte buffer containing body data. */ public ReadBuffer getBody( String uidl ) { synchronized( synchronizer ) { @@ -150,7 +150,7 @@ public class POP3MailBox { * retrieve message body from pop3 server (via RETR command) * * @param id message id - * @return byte buffer containing data + * @return Byte buffer containing body data. */ private ReadBuffer getBody(int id) { synchronized( synchronizer ) { @@ -179,7 +179,7 @@ public class POP3MailBox { /** * * @param uidl - * @return + * @return Success of delete operation: true if successful. */ public boolean delete( String uidl ) { @@ -193,7 +193,7 @@ public class POP3MailBox { * delete message on pop3 server * * @param id message id - * @return true if successful + * @return Success of delete operation: true if successful. */ private boolean delete(int id) { @@ -215,7 +215,7 @@ public class POP3MailBox { /** * * @param uidl - * @return + * @return Message size in bytes. */ public int getSize( String uidl ) { synchronized( synchronizer ) { @@ -227,7 +227,7 @@ public class POP3MailBox { * get size of a message (via LIST command) * * @param id message id - * @return message size in bytes + * @return Message size in bytes. */ private int getSize(int id) { synchronized( synchronizer ) { @@ -627,7 +627,7 @@ public class POP3MailBox { } /** - * @return + * @return The amount of e-mails available. */ public int getNumMails() { synchronized( synchronizer ) { @@ -641,7 +641,7 @@ public class POP3MailBox { } /** - * @return + * @return The most recent error message. */ public String lastError() { Debug.debug(Debug.DEBUG, "lastError()"); @@ -673,7 +673,7 @@ public class POP3MailBox { * returns number of message with given UIDL * * @param uidl - * @return + * @return Message number. */ private int getIDfromUIDL( String uidl ) { @@ -687,7 +687,7 @@ public class POP3MailBox { /** * * @param id - * @return + * @return UIDL. */ public String getUIDLfromID( int id ) { @@ -695,7 +695,7 @@ public class POP3MailBox { } /** * - * @return + * @return A list of the available UIDLs. */ public Object[] getUIDLs() { diff --git a/build.xml b/build.xml index 3c9f08a3a20a4c728f71c61c0fde7aa9ed5af3a1..af467498b89d8cd69aec3d7763a31753c87b4d87 100644 --- a/build.xml +++ b/build.xml @@ -420,9 +420,11 @@ <copy file="installer/lib/launch4j/lib/XStream.LICENSE.txt" tofile="pkg-temp/licenses/LICENSE-XStream.txt" /> </target> <target name="prepthemeupdates"> - <!-- Add extricated I2PSnark css here, for now --> - <copy file="installer/resources/themes/console/snark.css" todir="pkg-temp/docs/themes/console/" /> - <!-- these files now in docs/, not in the .war --> + <!-- Migrated all Snark content to its own dir. Need to ensure snark dir excluded from console theme choices!! --> + <!-- Snark's visible Assets --> + <copy todir="pkg-temp/docs/themes/snark/ubergine/" > + <fileset dir="installer/resources/themes/snark/ubergine/" /> + </copy> <!-- No need to copy these individually, we're copying the whole dir below.. <copy file="installer/resources/themes/console/images/favicon.ico" todir="pkg-temp/docs/themes/console/images/" /> <copy file="installer/resources/themes/console/images/i2plogo.png" todir="pkg-temp/docs/themes/console/images/" /> diff --git a/core/java/src/net/i2p/crypto/TrustedUpdate.java b/core/java/src/net/i2p/crypto/TrustedUpdate.java index b90fd46d364685bef50ee4af45567134a7fc7400..7e8a2b158588785a1dc860331cbe33be0d480e48 100644 --- a/core/java/src/net/i2p/crypto/TrustedUpdate.java +++ b/core/java/src/net/i2p/crypto/TrustedUpdate.java @@ -102,6 +102,25 @@ iD8DBQFHphOV+h38a3n8zjMRAll+AJ9KA6WiDJcTN4qfrslSemUMr+FBrwCeM8pF D8usM7Dxp5yrDrCYZ5AIijc= =SrXI -----END PGP SIGNATURE----- +*/ +/* +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +*/ + /* HungryHobo's key */ + private static final String DEFAULT_TRUSTED_KEY4 = + "l3G6um9nB9EDLkT9cUusz5fX-GxXSWE5zaj2~V8lUL~XsGuFf8gKqzJLK" + + "NkAw0CgDIDsLRHHuUaF7ZHo5Z7HG~9JJU9Il4G2jyNYtg5S8AzG0UxkEt" + + "-JeBEqIxv5GDn6OFKr~wTI0UafJbegEWokl-8m-GPWf0vW-yPMjL7y5MI="; +/* +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.10 (GNU/Linux) + +iEYEARECAAYFAkysnNIACgkQHix7YXbc3BJVfwCeNGUHaWSqZUbWN9L8VyQLpwxI +JXQAnA28vDmMMMH/WPbC5ixmJeGGNUiR +=3oMC +-----END PGP SIGNATURE----- */ private static final int VERSION_BYTES = 16; @@ -148,6 +167,7 @@ D8usM7Dxp5yrDrCYZ5AIijc= addKey(DEFAULT_TRUSTED_KEY, "jrandom@mail.i2p"); addKey(DEFAULT_TRUSTED_KEY2, "zzz@mail.i2p"); //addKey(DEFAULT_TRUSTED_KEY3, "complication@mail.i2p"); + addKey(DEFAULT_TRUSTED_KEY4, "HungryHobo@mail.i2p"); } if (_log.shouldLog(Log.DEBUG)) _log.debug("TrustedUpdate created, trusting " + _trustedKeys.size() + " keys."); diff --git a/core/java/src/net/i2p/crypto/package.html b/core/java/src/net/i2p/crypto/package.html new file mode 100644 index 0000000000000000000000000000000000000000..ae471c30a83cd34df6f4d55648f8deb760d37644 --- /dev/null +++ b/core/java/src/net/i2p/crypto/package.html @@ -0,0 +1,11 @@ +<html> + <body> + <p> + These classes provide a number of low-level cryptographic routines. + </p> + + <p> + These cryptographic routines include symmetric and asymmetric encryption and decryption, hashing, secure random number generation... + </p> + </body> +</html> diff --git a/core/java/src/net/i2p/package.html b/core/java/src/net/i2p/package.html new file mode 100644 index 0000000000000000000000000000000000000000..acc673d1ca8a460998efc586cfe0a66df5600640 --- /dev/null +++ b/core/java/src/net/i2p/package.html @@ -0,0 +1,7 @@ +<html> + <body> + <p> + Core I2P package, contains information about the I2P version and an entry point to access important elements. + </p> + </body> +</html> diff --git a/core/java/src/net/i2p/time/package.html b/core/java/src/net/i2p/time/package.html new file mode 100644 index 0000000000000000000000000000000000000000..18018d978e9c187ac2edead0a5c1e5e41adf5fc6 --- /dev/null +++ b/core/java/src/net/i2p/time/package.html @@ -0,0 +1,7 @@ +<html> + <body> + <p> + Provides classes for time synchronisation using NTP. + </p> + </body> +</html> diff --git a/debian/control b/debian/control index 9fd92ea70d31e15e1c5bf55d1bbd27e1253e45fd..1813b75594f4cfa5ad2a14151a64d9bd09ab81d0 100644 --- a/debian/control +++ b/debian/control @@ -9,8 +9,8 @@ Package: i2p Architecture: all Section: net Priority: optional -Depends: java-runtime -Description: load-balanced unspoofable packet switching network +Depends: sun-java6-jre | default-jre | java-runtime +Description: Load-balanced unspoofable packet switching network I2P is an anonymizing network, offering a simple layer that identity-sensitive applications can use to securely communicate. All data is wrapped with several layers of encryption, and the network is both distributed and dynamic, with no diff --git a/debian/rules b/debian/rules index 21009d70a04d1a735e000f459bd633e87aa721dd..e9d457d81f8eec03cfe5c5cf87c5e085c51c0593 100755 --- a/debian/rules +++ b/debian/rules @@ -1,5 +1,8 @@ #!/usr/bin/make -f +VERSION=`grep String\ VERSION core/java/src/net/i2p/CoreVersion.java | cut -d\" -f2` +SOURCEURL=http://mirror.i2p2.de/i2psource_${VERSION}.tar.bz2 + build: ant preppkg-linux-only mkdir -p debian/tmp/usr/lib @@ -12,14 +15,12 @@ build: mkdir -p debian/tmp/usr/bin sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/eepget > debian/tmp/usr/lib/i2p/a mv debian/tmp/usr/lib/i2p/a debian/tmp/usr/lib/i2p/eepget - cp debian/tmp/usr/lib/i2p/eepget debian/tmp/usr/bin/eepget - chmod +x debian/tmp/usr/bin/eepget + ln -s /usr/lib/i2p/eepget debian/tmp/usr/bin/eepget sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/runplain.sh > debian/tmp/usr/lib/i2p/a sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/runplain.sh sed 's|%INSTALL_PATH|/usr/lib/i2p|g' debian/tmp/usr/lib/i2p/i2prouter > debian/tmp/usr/lib/i2p/a sed 's|%SYSTEM_java_io_tmpdir|/tmp|g' debian/tmp/usr/lib/i2p/a > debian/tmp/usr/lib/i2p/i2prouter - cp debian/tmp/usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter - chmod +x debian/tmp/usr/bin/i2prouter + ln -s /usr/lib/i2p/i2prouter debian/tmp/usr/bin/i2prouter rm debian/tmp/usr/lib/i2p/a touch debian/build @@ -34,3 +35,6 @@ clean: rm -rf debian/tmp/ ant distclean @exit 0 + +get-orig-source: + wget ${SOURCEURL} diff --git a/debian/scripts/init b/debian/scripts/init index 57efc1a2aa4a1f4b1faf7b3a583b6ba81013e11c..e196a9404d0cfb033ac28961895bb16fea3376fc 100755 --- a/debian/scripts/init +++ b/debian/scripts/init @@ -17,6 +17,11 @@ I2P () { su i2psvc -c "/usr/lib/i2p/i2prouter $1" } +if [ `id -un` != "root" ]; then + echo "This script ($0) must be run as root" + exit 1 +fi + case "$1" in start) log_daemon_msg "Starting I2P" "i2p" diff --git a/debian/scripts/postinst b/debian/scripts/postinst index 25ccaec33edf03d400548c5ac693dc12aaeddec3..6d76f2f0cf82935ed0c4f189109728473637203c 100755 --- a/debian/scripts/postinst +++ b/debian/scripts/postinst @@ -11,4 +11,10 @@ chown $I2PUSER:$I2PUSER $SVCHOME update-rc.d i2p defaults cd $I2P -exec su $I2PUSER ./postinstall.sh +su $I2PUSER ./postinstall.sh + +chmod 755 /usr/lib/i2p/eepget +chmod 755 /usr/lib/i2p/i2prouter +chmod 755 /usr/lib/i2p/i2psvc + +invoke-rc.d i2p start diff --git a/debian/scripts/postrm b/debian/scripts/postrm index f4c7218a2ebb4c62ae67e560690f46fd1d77b7ce..a768a036c3a812c5a08beab68a43ba9b7d47335a 100755 --- a/debian/scripts/postrm +++ b/debian/scripts/postrm @@ -1,4 +1,12 @@ #!/bin/sh + +# $1 is either "remove" or "purge". Since there are no config +# files left after a remove, exit here if called with "purge". +# This avoids calling userdel again which would cause an error. +if [ "$1" = "purge" ]; then + exit 0; +fi + I2PUSER=i2psvc exec userdel $I2PUSER diff --git a/history.txt b/history.txt index fcd33d6b46de9412a3828a18ef0f35aa80043c35..2c2d013a3f81cd5cd87b88edd10a368e53b9207d 100644 --- a/history.txt +++ b/history.txt @@ -38,6 +38,12 @@ * Router: Set permissions on wrapper.log when not called by RouterLaunch * Systray: New doc and main() +2010-10-22 sponge + * Sanity and some fixs for slackware package + +2010-10-22 sponge + * Fix rc.i2p for slackware package + 2010-10-19 zzz * Escape & in logs and i2psnark (much more to do) * JobImpl: Deprecate two debugging methods @@ -149,6 +155,12 @@ - Logging cleanup - Comment out a main() +2010-10-10 sponge + * Fulfill Request for name resolving in BOB + +2010-09-15 dr|z3d + * I2PSnark: Overhaul UI, implement new theme. + * 2010-07-12 0.8 released 2010-07-08 zzz diff --git a/installer/resources/themes/console/snark.css b/installer/resources/themes/console/snark.css deleted file mode 100644 index 47d2b75db44486b93e1ba41bfb5575b2710e9166..0000000000000000000000000000000000000000 --- a/installer/resources/themes/console/snark.css +++ /dev/null @@ -1,338 +0,0 @@ -/* Not yet complete. Subject to flux and change. dr|z3d - 07.25.09 */ - -body { - background: #eef; - color: #001; - font: 8pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif; -} - -.snarkTitle { - font-size: 12pt; - font-weight: bold; - text-align: center; -} - -.snarkRefresh:link,.snarkRefresh:visited { - text-decoration: none !important; - text-transform: uppercase !important; - padding: 0 16px; - letter-spacing: 0.05em; - font-weight: bold; - font-size: 11pt; - color: #005; -} - -.snarkRefresh:hover { - text-decoration: none !important; - text-transform: uppercase !important; - padding: 0 16px; - letter-spacing: 0.05em; - font-weight: bold; - font-size: 11pt; - color: #f60; - border-bottom: 3px solid #f60; - border-top: 3px solid #f60; -} - -.snarkRefresh:active { - text-decoration: none !important; - text-transform: uppercase !important; - padding: 0 16px; - letter-spacing: 0.05em; - font-weight: bold; - font-size: 11pt; - color: #f30; - border-bottom: 3px solid #f30; - border-top: 3px solid #f30; -} - -.snarkMessages { - font: bold 9pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important; - text-align: left; - margin: 0 0px 10px 0px; - padding: 0; - border-spacing: 0px; - -moz-border-radius: 4px 0 0 0; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 2px solid #930; - overflow: auto; - color: #531; - height: 79px; - width: auto; - background: #f0dea0; -} - -pre { - width: 100%; - font: 8pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important; - padding: 0; - text-align: left !important; - height: 8px; -} - -table { - margin: 0px 0px 10px 0px; - border: 0px; - padding: 0px; - border-spacing: 0px; - border-collapse: collapse; -} - -th { - padding: 4px; - font-size: 9pt; - border-top: 1px outset #001; - border-bottom: 1px inset #001; - background: #fda; - whitespace: nowrap; -} - -.SnarkTorrents { - margin: 0; - border: 1px solid #001; - background: #f9f; -} - -td { - padding: 4px; -} - -.snarkTorrentEven { - background: #fea; - font-size: 8pt; -} - -.snarkTorrentOdd { - background: #f0dea0; - font-size: 8pt; -} - -.snarkFileName { - min-width: 25em; - padding: 4px 10px; -} - -.snarkFileSize { - padding: 4px 10px; -} - -.snarkFileStatus { - padding: 4px 10px; -} - -.thumb { - max-height: 64px; - max-width: 96px; -} - -.snarkNewTorrent { - font-size: 9pt; -} - -.snarkAddInfo { - font-size: 9pt; - line-height: 130% !important; -} - -.snarkConfigTitle { - font-size: 11pt; - font-weight: bold; - text-transform: uppercase; -} - -.snarkConfig { - font-size: 10pt; - width: 100%; -} - -.page { - background: #fff; - color: #310; - min-width: 800px !important; - margin: 5px 0 0 0; - padding: 10px 10px 0px 10px; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - border: 1px solid #001; - font-size: 9pt !important; - line-height: 160% !important; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - text-align: center; - opacity: 1.0; -} - -form { - line-height: 250%; -} - -p { - line-height: 150%; -} - -hr { - color: #003; - background: #003; - height: 1px; - border: 0px solid #003; - width: 100%; - margin: 10px 0 7px 0; - text-align: center; -} - -a:link { - color: #930; - text-decoration: none; - font-weight: bold; - word-wrap: break-word; -} - -a:visited { - color: #606; - text-decoration: none; - font-weight: bold; -} - -a:hover { - color: #900; - font-weight: bold; -} - -input { - font-size: 9pt; - font-weight: bold; - text-align: left; - padding: 2px 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: 1px; - background: #ffe; -} - -input.r { - text-align: right; -} - -select { - background: #ffe; - color: #310; - font: 9pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif; - font-weight: bold; - padding: 2px 2px 2px 3px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -textarea { - background: #ffe; - color: #310; - font-weight: bold; - padding: 1px 4px 0px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -img { - border: none; - margin: 3px 8px 5px 4px; - vertical-align: middle; - opacity: 1.0; - line-height: 100%; -} - -img: hover { - border: none; - margin: 5px 5px 0px 5px; - opacity: 0.5; - line-height: 100%; -} - -div.section,div.mainsection { - margin: 0 0 10px 0; - padding: 10px; - border: 1px solid #001; - color: #001; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - word-wrap: break-word; - text-align: center; - background: #ffe url('../console/light/images/tabletile.png'); - opacity: 1.0; -} - -div.newtorrentsection { - margin: 0 0 10px 0; - padding: 0 10px 10px 10px; - border: 1px solid #001; - text-align: center; - color: #001; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - word-wrap: break-word; - background: #bb4 url('../console/images/yellowtile.png'); - opacity: 1.0; -} - -div.addtorrentsection { - margin: 0 0 10px 0; - padding: 0 10px 10px 10px; - border: 1px solid #001; - text-align: center; - color: #001; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - word-wrap: break-word; - background: #7f7 url('../console/images/greentile.png'); - opacity: 1.0; -} - -div.configsection { - margin: 0; - padding: 0 10px 10px 10px; - border: 1px solid #001; - color: #ffb; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 0px 1px #900; - word-wrap: break-word; - text-align: center; - background: #700 url('../console/light/images/darkbluetile.png'); - font-weight: bold;/* red tile needs bold text! */ -} - -div.configsection table{ - color: #ffb; -} - -div.configsection a { - color: #f90; -} - -div.configsection a: hover { - color: #f60; - text-decoration: underline; -} - -.snarknavbar { - margin: 0 0 10px 0 !important; - padding: 10px; - border: 1px solid #001; - -moz-border-radius: 4px; - -khtml-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: inset 0px 0px 1px 0px #002; - background: #ddf url('../console/light/images/tabletile.png'); - text-transform: uppercase !important; - letter-spacing: 0.05em; - font-weight: bold; - font-size: 11pt; - color: #001; - } diff --git a/installer/resources/themes/snark/ubergine/favicon.ico b/installer/resources/themes/snark/ubergine/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..28658965c9486d89945244234f91d20162f1649b Binary files /dev/null and b/installer/resources/themes/snark/ubergine/favicon.ico differ diff --git a/installer/resources/themes/snark/ubergine/images/add.png b/installer/resources/themes/snark/ubergine/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/add.png differ diff --git a/installer/resources/themes/snark/ubergine/images/arrow_refresh.png b/installer/resources/themes/snark/ubergine/images/arrow_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..0d280de31164579cf1ed018e581db43fa209ae8e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/arrow_refresh.png differ diff --git a/installer/resources/themes/snark/ubergine/images/complete.png b/installer/resources/themes/snark/ubergine/images/complete.png new file mode 100644 index 0000000000000000000000000000000000000000..069df0dd68072257233c423a43dc9c671d3bb58c Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/complete.png differ diff --git a/installer/resources/themes/snark/ubergine/images/config.png b/installer/resources/themes/snark/ubergine/images/config.png new file mode 100644 index 0000000000000000000000000000000000000000..565a9330e0a156dff5bed2c9fad8c95a44344ba4 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/config.png differ diff --git a/installer/resources/themes/snark/ubergine/images/configuration.png b/installer/resources/themes/snark/ubergine/images/configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..43a443b513766f0d35cb5efdad5aef2e2fcf777e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/configuration.png differ diff --git a/installer/resources/themes/snark/ubergine/images/create.png b/installer/resources/themes/snark/ubergine/images/create.png new file mode 100644 index 0000000000000000000000000000000000000000..44ccbf812879c42cb1f9587d865bcfc337ce6361 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/create.png differ diff --git a/installer/resources/themes/snark/ubergine/images/delete.png b/installer/resources/themes/snark/ubergine/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..353e3e202d9dcd0807b43717372161d9baba81af Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/delete.png differ diff --git a/installer/resources/themes/snark/ubergine/images/details.png b/installer/resources/themes/snark/ubergine/images/details.png new file mode 100644 index 0000000000000000000000000000000000000000..12cd1aef900803abba99b26920337ec01ad5c267 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/details.png differ diff --git a/installer/resources/themes/snark/ubergine/images/downloading.png b/installer/resources/themes/snark/ubergine/images/downloading.png new file mode 100644 index 0000000000000000000000000000000000000000..cc61019adfe5de9400d2de85aa717d56f3a924d0 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/downloading.png differ diff --git a/installer/resources/themes/snark/ubergine/images/eta.png b/installer/resources/themes/snark/ubergine/images/eta.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c3f99d90440da920da4cce9ad8b5a21e0bdc59 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/eta.png differ diff --git a/installer/resources/themes/snark/ubergine/images/file.png b/installer/resources/themes/snark/ubergine/images/file.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5df0d24433b2fb71d184d4a28fd82ff33aaf4f Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/file.png differ diff --git a/installer/resources/themes/snark/ubergine/images/graytile.png b/installer/resources/themes/snark/ubergine/images/graytile.png new file mode 100644 index 0000000000000000000000000000000000000000..abafcc18e1220aa7d37bbc6a640b7054f6375b3c Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/graytile.png differ diff --git a/installer/resources/themes/snark/ubergine/images/hat.png b/installer/resources/themes/snark/ubergine/images/hat.png new file mode 100644 index 0000000000000000000000000000000000000000..bed0c5b74df36bd8c8b8de53f985dff2ecf378db Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/hat.png differ diff --git a/installer/resources/themes/snark/ubergine/images/hidepeers.png b/installer/resources/themes/snark/ubergine/images/hidepeers.png new file mode 100644 index 0000000000000000000000000000000000000000..18050ddf2b5b224eb66ed69e2b00725288805f4b Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/hidepeers.png differ diff --git a/installer/resources/themes/snark/ubergine/images/nopeers.png b/installer/resources/themes/snark/ubergine/images/nopeers.png new file mode 100644 index 0000000000000000000000000000000000000000..b718f9c3d1be6e28f3d541549894ef127560433e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/nopeers.png differ diff --git a/installer/resources/themes/snark/ubergine/images/remove.png b/installer/resources/themes/snark/ubergine/images/remove.png new file mode 100644 index 0000000000000000000000000000000000000000..16f71813fe0d1913180c9db81a919c5a5941480e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/remove.png differ diff --git a/installer/resources/themes/snark/ubergine/images/seeding.png b/installer/resources/themes/snark/ubergine/images/seeding.png new file mode 100644 index 0000000000000000000000000000000000000000..1e03d42694badebfc61e8a61f8695abf4f62ccd4 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/seeding.png differ diff --git a/installer/resources/themes/snark/ubergine/images/showpeers.png b/installer/resources/themes/snark/ubergine/images/showpeers.png new file mode 100644 index 0000000000000000000000000000000000000000..8050024fa700190f97afe0b3eacaeca777a5fe82 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/showpeers.png differ diff --git a/installer/resources/themes/snark/ubergine/images/size.png b/installer/resources/themes/snark/ubergine/images/size.png new file mode 100644 index 0000000000000000000000000000000000000000..78dda3d878f0601fb002eef04c70567e6ecaad46 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/size.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snark_add.png b/installer/resources/themes/snark/ubergine/images/snark_add.png new file mode 100644 index 0000000000000000000000000000000000000000..f02fe118c860535d700c098325c2f3008c9f6de0 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snark_add.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snark_create.png b/installer/resources/themes/snark/ubergine/images/snark_create.png new file mode 100644 index 0000000000000000000000000000000000000000..1e767b9b2210b179316c02a86627570cd3d44bd6 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snark_create.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snark_thead.png b/installer/resources/themes/snark/ubergine/images/snark_thead.png new file mode 100644 index 0000000000000000000000000000000000000000..ead40efeac7cebfaf0fed362aadc323c1d61a528 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snark_thead.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snarknav.png b/installer/resources/themes/snark/ubergine/images/snarknav.png new file mode 100644 index 0000000000000000000000000000000000000000..7409a310dc0fbe8a802fe531a2f989b9049a6b64 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snarknav.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snarknav_lowlight.png b/installer/resources/themes/snark/ubergine/images/snarknav_lowlight.png new file mode 100644 index 0000000000000000000000000000000000000000..ba9435c0cde059a4444c16f5c1901a78dd1006a5 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snarknav_lowlight.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snarknav_on.png b/installer/resources/themes/snark/ubergine/images/snarknav_on.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2ce23e7f1570f4046d90f9a118aa47f00676a2 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snarknav_on.png differ diff --git a/installer/resources/themes/snark/ubergine/images/snarktopnav.png b/installer/resources/themes/snark/ubergine/images/snarktopnav.png new file mode 100644 index 0000000000000000000000000000000000000000..0d00c75c2ff77e1cbef02aaeb7faf2824ee5af40 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/snarktopnav.png differ diff --git a/installer/resources/themes/snark/ubergine/images/stalled.png b/installer/resources/themes/snark/ubergine/images/stalled.png new file mode 100644 index 0000000000000000000000000000000000000000..9204c2e8da56f7b6a146b5a6e9f9638874c1bf2e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/stalled.png differ diff --git a/installer/resources/themes/snark/ubergine/images/start.png b/installer/resources/themes/snark/ubergine/images/start.png new file mode 100644 index 0000000000000000000000000000000000000000..280b49814cc94739ebf06d0b01793261c60edbac Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/start.png differ diff --git a/installer/resources/themes/snark/ubergine/images/start_all.png b/installer/resources/themes/snark/ubergine/images/start_all.png new file mode 100644 index 0000000000000000000000000000000000000000..11dec0d68a0bc637275191afe5ca55b02201c731 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/start_all.png differ diff --git a/installer/resources/themes/snark/ubergine/images/status.png b/installer/resources/themes/snark/ubergine/images/status.png new file mode 100644 index 0000000000000000000000000000000000000000..618cb3fa6cb79b686bca54ea364ab9644780c47b Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/status.png differ diff --git a/installer/resources/themes/snark/ubergine/images/stop.png b/installer/resources/themes/snark/ubergine/images/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7c9da05512258629745a2b24c0a5a81e1d26fd Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/stop.png differ diff --git a/installer/resources/themes/snark/ubergine/images/stop_all.png b/installer/resources/themes/snark/ubergine/images/stop_all.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4902293f253832898afc65d81430e1642a623e Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/stop_all.png differ diff --git a/installer/resources/themes/snark/ubergine/images/stopped.png b/installer/resources/themes/snark/ubergine/images/stopped.png new file mode 100644 index 0000000000000000000000000000000000000000..1258113a3063b39a701466b3cd87379235838e4b Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/stopped.png differ diff --git a/installer/resources/themes/snark/ubergine/images/tile2.png b/installer/resources/themes/snark/ubergine/images/tile2.png new file mode 100644 index 0000000000000000000000000000000000000000..d4db14c977b83ec524b82612b754109817826eea Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/tile2.png differ diff --git a/installer/resources/themes/snark/ubergine/images/torrent.png b/installer/resources/themes/snark/ubergine/images/torrent.png new file mode 100644 index 0000000000000000000000000000000000000000..5894d66cbff96a62c4c14136975c28dd6d2dcbcc Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/torrent.png differ diff --git a/installer/resources/themes/snark/ubergine/images/trackererror.png b/installer/resources/themes/snark/ubergine/images/trackererror.png new file mode 100644 index 0000000000000000000000000000000000000000..04766a4bcc810d8f77ef32111e627ae6a4ff4b47 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/trackererror.png differ diff --git a/installer/resources/themes/snark/ubergine/images/up.png b/installer/resources/themes/snark/ubergine/images/up.png new file mode 100644 index 0000000000000000000000000000000000000000..31bce12274be5dc14f7b5c5f07a866df68e22b25 Binary files /dev/null and b/installer/resources/themes/snark/ubergine/images/up.png differ diff --git a/installer/resources/themes/snark/ubergine/snark.css b/installer/resources/themes/snark/ubergine/snark.css new file mode 100644 index 0000000000000000000000000000000000000000..5ada66db07624d6f5ec6184e2fedbea3637dc413 --- /dev/null +++ b/installer/resources/themes/snark/ubergine/snark.css @@ -0,0 +1,634 @@ +/* I2PSnark theme "Ubergine" by dr|z3d */ +/* Guantanamo Commemorative Edition. */ + +body { + background: #101 url('/themes/snark/ubergine/images/graytile.png'); + color: #001; + font: 8pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif; +} + +.snarkTitle { + font-size: 12pt; + font-weight: bold; + text-align: center; +} + +.snarkRefresh:link,.snarkRefresh:visited { + text-decoration: none !important; + text-transform: uppercase !important; + padding: 4px 16px 5px !important; + margin: -5px -7px -5px 0 !important; + letter-spacing: 0.05em; + font-weight: bold; + font-size: 11pt; + color: #f70; + text-shadow: 1px 1px #420; + background: url('/themes/snark/ubergine/images/snarknav_lowlight.png') no-repeat scroll center bottom; + background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center; + -moz-border-radius: 0px; + -khtml-border-radius: 3px; + border-radius: 0px; + -moz-box-shadow: inset 0 0 1px 0 #f90; + -khtml-box-shadow: inset 0 0 1px 0 #f90; + box-shadow: 0 0 1px 0 #f90; + +} + +.snarkRefresh:hover { + text-decoration: none !important; + text-transform: uppercase !important; + padding: 1px 16px; + letter-spacing: 0.05em; + font-weight: bold; + font-size: 11pt; + color: #f50; + background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center; + background: url('/themes/snark/ubergine/images/snarknav_lowlight.png') repeat-x scroll center center; + -moz-border-radius: 0; + -khtml-border-radius: 0; + border-radius: 0; + -moz-box-shadow: inset 0 0 1px 0 #f90; + -khtml-box-shadow: inset 0 0 1px 0 #f90; + box-shadow: 0 0 1px #f90; +} + +.snarkRefresh:active { + text-decoration: none !important; + text-transform: uppercase !important; + padding: 0 16px; + letter-spacing: 0.05em; + font-weight: bold; + font-size: 11pt; + color: #fb0; + background: #310 url('/themes/snark/ubergine/images/snarknav_on.png') repeat-x scroll center center; +} + +.snarkRefresh:last-child { + -moz-border-radius: 0 3px 3px 0px; + -khtml-border-radius: 0 3px 0 0; + border-radius: 0; + -moz-box-shadow: inset 0 0 1px 0 #f90; + -khtml-box-shadow: inset 0 0 1px 0 #f90; + box-shadow: 0 0 1px 0 #f90; +} + +.snarkRefresh:first-child { + -moz-border-radius: 3px 0 0 3px; + -khtml-border-radius: 3px; + border-radius: 0; + -moz-box-shadow: inset 0 0 1px 0 #f90; + -khtml-box-shadow: inset 0 0 1px 0 #f90; + box-shadow: 0 0 1px 0 #f90; +} + +.snarkMessages { + font: bold 9pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important; + text-align: left; + margin: 0 0 10px 0; + padding: 3px 0; + border-spacing: 0px; + -moz-border-radius: 4px 0 0 0; + -khtml-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; + border: 1px solid #000; + overflow: auto; + color: #26f; + height: 70px; + width: auto; + background: #101 url('/themes/snark/ubergine/images/hat.png') no-repeat scroll right center; +} + +.snarkMessages a:link { + color: #37f !important; +} + +.snarkMessages a:hover { + color: #59f !important; +} + +.logshim { + margin-top: -10px !important; +} + +pre { + width: 100%; + font: 8pt "Lucida Console","DejaVu Sans Mono",Courier,mono !important; + padding: 0; + text-align: left !important; + height: 8px; + color: #13f; + font-weight: bold !important; +} + +table { + margin: 0px 0px 10px 0px; + border: 0px; + padding: 0px; + border-spacing: 0px; + border-collapse: collapse; + color: #323; + width: 100%; + opacity: 1 !important; +} + +tr { + opacity: 1; +} + +thead, tfoot { + background: url("/themes/snark/ubergine/images/snark_thead.png") repeat-x scroll 0 0 #101; + text-shadow:0 2px 5px #333333; +} + +thead a, tfoot a { +text-shadow:1px 1px #550000; +} + +thead { + border-bottom: 1px solid #101; +} + +th { + padding: 4px 2px 4px 4px; + font-size: 9pt; + border-top: 1px outset #001; + border-bottom: 1px inset #101; + color: #ddd; + whitespace: nowrap; + font-variant: small-caps !important; + letter-spacing: 0.05em; +} + +th:first-child { + text-align: left !important; + padding-left: 2px; + max-width: 120px; +} + +tfoot td:first-child { + text-align: left !important; + padding-left: 0px; +} + +th:first-child img { + margin: 1px 1px 3px 1px !important; +} + +th:nth-child(2) img { + margin: 1px 7px 3px 2px !important; +} + +tfoot th { + padding-bottom: 4px !important; +} + +.SnarkTorrents { + margin: 0; + border: 1px solid #101; + background: #212; +} + +td { + padding: 1px; + color: #ddd !important; + font-size: 9.5pt; + opacity: 1; +} + +.mainsection td { + color: #111; +} + +td:first-child { + text-align: right; + padding-left: 10px; +} + +.snarkTorrentName { + text-shadow:1px 1px #550000; + padding: 2px 0 0; +} + +.snarkTorrentAction { + text-shadow:1px 1px #550000; + padding: 1px 1px 1px 1px !important; + margin: 0 !important; + text-align: center; + width: 68px; +} + +.snarkTorrentAction img { + margin: 0 2px !important; + opacity: 0.6; +} + +.snarkTorrentAction img:hover { + -moz-box-shadow: 0 0 1px 1px #f90; + opacity: 1; +} + +.snarkTorrentEven { + background: #545; + font-size: 8pt; + background: #202; +} + +/* +.snarkTorrentEven tr:first-child { + border: 1px dotted #fff !important; +} + +*/ + +.snarkTorrentNoneLoaded { + background: #323; + font-size: 8.5pt; + font-weight: bold; + text-align: center !important; + color: #bbb !important; +} + +.snarkTorrentStatus { + padding: 1px 0 2px; +} + +.snarkTorrentStatus:first-child { + text-align: left !important; + font-style: italic; + padding-left: 0px; + min-width: 92px; + font-weight: bold; + font-size: 7pt !important; + color: #dd9 !important; +} + +.snarkTorrentStatus:first-child img { + margin-right: 0px !important; +} + +.snarkTorrentRate, .snarkTorrentDownloaded, .snarkTorrentUploaded { + font-size: 8pt; + font-weight: bold; + padding: 0 3px; +} + +.snarkTorrentDownloaded { + color: #76a !important; +} + +.snarkTorrentUploaded { + color: #b9b !important; +} + +.snarkTorrentRate { + color: #d9d !important; +} + + +.snarkTorrentOdd { + background: #656; + background: #351933; + font-size: 8pt; + border: 0px inset #101 !important; + border-left: 0 !important; + border-right: 0 !important; +} +.snarkTorrentOdd td, .snarkTorrentEven td { + border-top: 1px dotted #313 !important; +} + +.snarkFileName { +/* min-width: 25em;*/ + padding: 4px 0px !important; + text-align: left !important; +} + +.snarkFileSize { + padding: 4px 2px; +} + +.snarkFileStatus { + padding: 4px 10px; + text-align: center; + font-style: italic; +} + +.snarkTorrentETA { + font-weight: bold; + font-style: italic; + color: #dd7 !important; +} + +.thumb { + max-height: 64px; + max-width: 96px; +} + +.snarkNewTorrent { + font-size: 9pt; +} + +.snarkAddInfo { + font-size: 9pt; + line-height: 130% !important; +} + +.snarkConfigTitle { + font-size: 11pt; + font-weight: bold; + padding: 0 25px 3px 25px; + margin: 5px 0 10px 0 !important; + letter-spacing: 0.25em; + border: 1px solid #111; + -moz-border-radius: 0 0 5px 5px; + -khtml-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + border-top: 0; + text-shadow: 0px 3px 5px #323; + background: #101 url('/themes/snark/ubergine/images/snarknav.png') repeat-x scroll center center !important; + font-variant: small-caps !important; +} + +.snarkConfig { + font-size: 10pt; + width: 100%; +} + +.page { + background: #323 url('/themes/snark/ubergine/images/tile2.png'); + color: #310; + min-width: 880px !important; + margin: 5px 0 0 0; + padding: 10px 10px 0px 10px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px solid #101; + font-size: 9pt !important; + line-height: 160% !important; + -moz-box-shadow: inset 0px 0px 1px 0px #212; + -khtml-box-shadow: inset 0px 0px 1px 0px #002; + box-shadow: inset 0px 0px 1px 0px #002; + text-align: center; + opacity: 1; +} + +form { + margin-bottom: 0; +} + +p { + line-height: 150%; +} + +hr { + color: #444; + background: #444; + height: 1px; + border: 0px solid #444; + width: 0%; + margin: 5px 0 7px 0; + text-align: center; +} + +a:link { + color: #f70; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited { + color: #f50; + text-decoration: none; + font-weight: bold; +} + +a:hover { + color: #f90; + font-weight: bold; +} + +input { + font-size: 9pt; + font-weight: bold; + text-align: left; + padding: 2px 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px inset #000; + background: #212 url('/themes/snark/ubergine/images/graytile.png'); + color: #f60; +} + +input.r { + text-align: right; + background: url('/themes/snark/ubergine/images/graytile.png'); +} + +input[type=submit] { + text-shadow: 0px 0px #410; + color: #000; + background: #989; + border: 1px inset #bbb; +} + +input[type=submit]:hover { + border: 1px outset #bbb; + text-shadow: 0 0; + background: #f60; + color: #fff; + text-shadow: 0px 1px 5px #f00; +} + +input[type=submit]:active { + background: #000 !important; + color: #f60 !important; + text-shadow: 0 !important; +} + +input[type=text]:active, input[type=text]:hover, input.r:hover { + background: #f60; + color: #fff; +} + +select { + background: #333; + background: url('/themes/snark/ubergine/images/graytile.png') !important; + color: #f60; + font: 9pt "Lucida Sans Unicode","Bitstream Vera Sans",Verdana,Tahoma,Helvetica,sans-serif; + font-weight: bold; + padding: 2px 2px 2px 3px; + -moz-border-radius: 4px 0 0 4px; + -khtml-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; + border: 1px solid #000; +} + +select:hover, textarea:hover { + background: #f60 !important; + color: #fff; +} + +textarea { + background: #111 url('/themes/snark/ubergine/images/graytile.png'); + color: #f60; + font-weight: bold; + padding: 1px 4px 0px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 1px inset #000; +} + +img { + border: none; + margin: 0 3px 1px 3px; + vertical-align: middle; + opacity: 1.0; + line-height: 100%; +} + +img: hover { + border: none; + opacity: 0.5; + line-height: 100%; +} + +div.section,div.mainsection { + margin: 0 0 10px 0; + padding: 10px; + border: 1px solid #001; + color: #001; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #212; + word-wrap: break-word; + text-align: center; + background: #545; + opacity: 1 !important; +} + +div.newtorrentsection { + margin: 0 0 10px 0; + padding: 0 10px 0px 10px; + border: 1px solid #001; + text-align: center; + color: #ddd; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #101; + -khtml-box-shadow: inset 0px 0px 1px 0px #101; + box-shadow: inset 0px 0px 1px 0px #101; + word-wrap: break-word; + background: #545 url('/themes/snark/ubergine/images/snark_create.png') no-repeat scroll right center; + opacity: 1.0; +} + +div.addtorrentsection { + margin: 0 0 10px 0; + padding: 0 10px 0px 10px; + border: 1px solid #001; + text-align: center; + color: #ddd; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #101; + -khtml-box-shadow: inset 0px 0px 1px 0px #101; + box-shadow: inset 0px 0px 1px 0px #101; + word-wrap: break-word; + background: #545 url('/themes/snark/ubergine/images/snark_add.png') no-repeat scroll right center; + opacity: 1.0; +} + +div.configsection { + margin: 0 0 10px 0; + padding: 0 10px 15px 10px; + border: 1px solid #000; + color: #ddd; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #101; + -khtml-box-shadow: inset 0px 0px 1px 0px #101; + box-shadow: inset 0px 0px 1px 0px #101; + word-wrap: break-word; + text-align: center; + background: #545; + font-weight: bold; +} + +div.configsectionpanel { + margin: 0 0 10px 0; + padding: 0 10px; + border: 1px solid #000; + color: #ddd; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #101; + -khtml-box-shadow: inset 0px 0px 1px 0px #101; + box-shadow: inset 0px 0px 1px 0px #101; + word-wrap: break-word; + text-align: center; + background: #545 url('/themes/snark/ubergine/images/configuration.png') no-repeat scroll right center; + font-weight: bold; +} + +.newtorrentsection form, .configsection form, .addtorrentsection form { + color: #ddd !important; +} + +div.configsection table{ + color: #ffb; + opacity: 1; +} + +div.configsection a { + color: #f60; + text-shadow: 1px 1px #500; +} + +div.configsection a:hover { + color: #f90; + text-decoration: none; +} + +code { + font-size: 9pt; + color: #b8b; + padding: 0 2px; + font-weight: bold; + font-family: "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} +.snarknavbar { + margin: -10px 0 5px 0 !important; + padding: 11px 10px 12px; + border: 1px solid #101; + -moz-border-radius: 0 0 8px 8px; + -khtml-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + -moz-box-shadow: inset 0px 0px 1px 0px #002; + -khtml-box-shadow: inset 0px 0px 1px 0px #002; + box-shadow: inset 0px 0px 1px 0px #002; + background: #101 url('/themes/snark/ubergine/images/snarktopnav.png') repeat-x scroll center center; + text-transform: uppercase !important; + letter-spacing: 0.065em !important; + font-weight: bold; + font-size: 11.5pt; + color: #001; + min-width: 700px; + width: 700px; + text-align: center; + } + + .snarknavbar img { + border: 0; + margin: 0 -6px 0 -2px; + padding: 1px 0 0px !important; + vertical-align: top; +} diff --git a/router/java/src/net/i2p/router/package.html b/router/java/src/net/i2p/router/package.html new file mode 100644 index 0000000000000000000000000000000000000000..02e1bb6566db2e51fb6b7a8371a5f9cb44ad50a2 --- /dev/null +++ b/router/java/src/net/i2p/router/package.html @@ -0,0 +1,10 @@ +<html> + <body> + <p> + The I2P router application handles the I2P network communication. + </p> + <p> + It encompasses sending and receiving messages, building up tunnels, encrypting and decrypting (on multiple levels) where applicable, and so on. + </p> + </body> +</html> diff --git a/router/java/src/net/i2p/router/peermanager/package.html b/router/java/src/net/i2p/router/peermanager/package.html new file mode 100644 index 0000000000000000000000000000000000000000..f422d0c1099c582029121865c5d904a19ee1971f --- /dev/null +++ b/router/java/src/net/i2p/router/peermanager/package.html @@ -0,0 +1,10 @@ +<html> + <body> + <p> + The peer manager logs information about the history and quality of network peers. + </p> + <p> + Peer capacity, speed and other parameters are calculated to determine in what cases we should use each peer. + </p> + </body> +</html> diff --git a/router/java/src/net/i2p/router/startup/package.html b/router/java/src/net/i2p/router/startup/package.html new file mode 100644 index 0000000000000000000000000000000000000000..7dfdabf9ec0625311e01dc8290f5b7c32fbba2da --- /dev/null +++ b/router/java/src/net/i2p/router/startup/package.html @@ -0,0 +1,10 @@ +<html> + <body> + <p> + The I2P startup package loads the configuration when I2P is started. + </p> + <p> + The startup consists of a number of different jobs, like loading data from files for the network database, creating new router information (keypairs), and so on. + </p> + </body> +</html> diff --git a/router/java/src/net/i2p/router/transport/ntcp/package.html b/router/java/src/net/i2p/router/transport/ntcp/package.html new file mode 100644 index 0000000000000000000000000000000000000000..4aeb388cf2bd89ee22d89ae1ab2cc949a9bbd88e --- /dev/null +++ b/router/java/src/net/i2p/router/transport/ntcp/package.html @@ -0,0 +1,7 @@ +<html> + <body> + <p> + The NTCP transport allows passing I2P messages on top of TCP. The N in NTCP stands for 'New', as the NTCP transport replaces an older TCP transport which had issues concerning congestion collapse. + </p> + </body> +</html> diff --git a/router/java/src/net/i2p/router/transport/package.html b/router/java/src/net/i2p/router/transport/package.html new file mode 100644 index 0000000000000000000000000000000000000000..4970c053e1a01f66a3eab43601ff2702ebc61c33 --- /dev/null +++ b/router/java/src/net/i2p/router/transport/package.html @@ -0,0 +1,7 @@ +<html> + <body> + <p> + The transport system allows the usage of communication layers that are below I2P in the stack, on which I2P messages are sent. + </p> + </body> +</html> diff --git a/router/java/src/net/i2p/router/transport/udp/package.html b/router/java/src/net/i2p/router/transport/udp/package.html new file mode 100644 index 0000000000000000000000000000000000000000..1c1f948524eea097eddd5543de33c9f3431f3a76 --- /dev/null +++ b/router/java/src/net/i2p/router/transport/udp/package.html @@ -0,0 +1,7 @@ +<html> + <body> + <p> + The UDP transport (also known as 'SSU transport') allows passing I2P messages on top of UDP. + </p> + </body> +</html>