diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index 3b80c80e9c586c86e91b22d256d1ced64ce6a8c8..607b4b00a8a0294f0eaa10a060775c51f10c9e36 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -27,8 +27,8 @@ do # translate calls must be one of the forms: # _("foo") # _x("foo") - # cssHelper._("foo") - # cssHelper.title("foo") + # intl._("foo") + # intl.title("foo") # handler._("foo") # formhandler._("foo") # In a jsp, you must use a helper or handler that has the context set. @@ -36,7 +36,7 @@ do # then ant distclean updater. find src ../jsp/WEB-INF -name *.java > $TMPFILE xgettext -f $TMPFILE -F -L java \ - --keyword=_ --keyword=_x --keyword=cssHelper._ --keyword=cssHelper.title \ + --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \ --keyword=handler._ --keyword=formhandler._ \ -o ${i}t if [ $? -ne 0 ] diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java index d2f4d8e64a029fdbd5b7b35b7889a17cbf745835..2df83d0864d107ca44fa91b8ec69922c9827778e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java @@ -29,9 +29,9 @@ public class ConfigClientsHandler extends FormHandler { @Override protected void processForm() { - if (_action.startsWith("Save Client")) { + if (_action.equals(_("Save Client Configuration"))) { saveClientChanges(); - } else if (_action.startsWith("Save WebApp")) { + } else if (_action.equals(_("Save WebApp Configuration"))) { saveWebAppChanges(); } else if (_action.startsWith("Start ")) { String app = _action.substring(6); @@ -43,7 +43,7 @@ public class ConfigClientsHandler extends FormHandler { startClient(appnum); else startWebApp(app); - } else if (_action.toLowerCase().startsWith("start<span class=hide> ") && + } else if (_action.toLowerCase().startsWith("Start<span class=hide> ") && _action.toLowerCase().endsWith("</span>")) { // IE sucks String app = _action.substring(23, _action.length() - 7); @@ -56,7 +56,7 @@ public class ConfigClientsHandler extends FormHandler { else startWebApp(app); } else { - addFormError("Unsupported " + _action + "."); + addFormError(_("Unsupported") + " " + _action + "."); } } @@ -71,18 +71,18 @@ public class ConfigClientsHandler extends FormHandler { ca.disabled = val == null; } ClientAppConfig.writeClientAppConfig(_context, clients); - addFormNotice("Client configuration saved successfully - restart required to take effect."); + addFormNotice(_("Client configuration saved successfully - restart required to take effect.")); } private void startClient(int i) { List clients = ClientAppConfig.getClientApps(_context); if (i >= clients.size()) { - addFormError("Bad client index."); + addFormError(_("Bad client index.")); return; } ClientAppConfig ca = (ClientAppConfig) clients.get(i); LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), configClient_log); - addFormNotice("Client " + ca.clientName + " started."); + addFormNotice(_("Client") + " " + ca.clientName + " " + _("started") + "."); } private void saveWebAppChanges() { @@ -99,7 +99,7 @@ public class ConfigClientsHandler extends FormHandler { props.setProperty(name, "" + (val != null)); } RouterConsoleRunner.storeWebAppProperties(props); - addFormNotice("WebApp configuration saved successfully - restart required to take effect."); + addFormNotice(_("WebApp configuration saved successfully - restart required to take effect.")); } // Big hack for the moment, not using properties for directory and port @@ -117,14 +117,14 @@ public class ConfigClientsHandler extends FormHandler { path = new File(path, app + ".war"); s.addWebApplication("/"+ app, path.getAbsolutePath()).start(); // no passwords... initialize(wac); - addFormNotice("WebApp <a href=\"/" + app + "/\">" + app + "</a> started."); + addFormNotice("WebApp <a href=\"/" + app + "/\">" + app + "</a> " + _("started") + "."); } catch (Exception ioe) { - addFormError("Failed to start " + app + " " + ioe + "."); + addFormError(_("Failed to start") + " " + app + " " + ioe + "."); } return; } } } - addFormError("Failed to find server."); + addFormError(_("Failed to find server.")); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index af71883eb6c50f4284cfc33cffa3a6ece1f30ed5..145e9c849ba91b6e2fc1ddec1b73fa727a0020ab 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -14,7 +14,7 @@ public class ConfigClientsHelper extends HelperBase { public String getForm1() { StringBuilder buf = new StringBuilder(1024); buf.append("<table>\n"); - buf.append("<tr><th align=\"right\">Client</th><th>Run at Startup?</th><th>Start Now</th><th align=\"left\">Class and arguments</th></tr>\n"); + buf.append("<tr><th align=\"right\">" + _("Client") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Start Now") + "</th><th align=\"left\">" + _("Class and arguments") + "</th></tr>\n"); List clients = ClientAppConfig.getClientApps(_context); for (int cur = 0; cur < clients.size(); cur++) { @@ -30,7 +30,7 @@ public class ConfigClientsHelper extends HelperBase { public String getForm2() { StringBuilder buf = new StringBuilder(1024); buf.append("<table>\n"); - buf.append("<tr><th align=\"right\">WebApp</th><th>Run at Startup?</th><th>Start Now</th><th align=\"left\">Description</th></tr>\n"); + buf.append("<tr><th align=\"right\">" + _("WebApp") + "</th><th>" + _("Run at Startup?") + "</th><th>" + _("Start Now") + "</th><th align=\"left\">" + _("Description") + "</th></tr>\n"); Properties props = RouterConsoleRunner.webAppProperties(); Set keys = new TreeSet(props.keySet()); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { @@ -63,7 +63,7 @@ public class ConfigClientsHelper extends HelperBase { } buf.append("/></td><td align=\"center\" width=\"15%\">"); if (!enabled) { - buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >Start<span class=hide> ").append(index).append("</span></button>"); + buf.append("<button type=\"submit\" name=\"action\" value=\"Start ").append(index).append("\" >" + _("Start") + "<span class=hide> ").append(index).append("</span></button>"); } buf.append("</td><td align=\"left\" width=\"50%\">").append(desc).append("</td></tr>\n"); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java index cb54c77ffac8757fa38d11c33af1bc09975d82e4..271ac58198d6a280f76df69d75b643af9d047d49 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java @@ -15,12 +15,12 @@ public class ConfigKeyringHandler extends FormHandler { @Override protected void processForm() { if (_action == null) return; - boolean adding = _action.startsWith("Add"); - if (adding || _action.startsWith("Delete")) { + boolean adding = _action.equals(_("Add key")); + if (adding || _action.equals(_("Delete key"))) { if (_peer == null) - addFormError("You must enter a destination"); + addFormError(_("You must enter a destination")); if (_key == null && adding) - addFormError("You must enter a key"); + addFormError(_("You must enter a key")); if (_peer == null || (_key == null && adding)) return; Hash h = ConvertToHash.getHash(_peer); @@ -33,7 +33,7 @@ public class ConfigKeyringHandler extends FormHandler { _context.keyRing().put(h, sk); addFormNotice("Key for " + h.toBase64() + " added to keyring"); } else { - addFormError("Invalid destination or key"); + addFormError(_("Invalid destination or key")); } } else { // Delete if (h != null && h.getData() != null) { @@ -42,11 +42,11 @@ public class ConfigKeyringHandler extends FormHandler { else addFormNotice("Key for " + h.toBase64() + " not found in keyring"); } else { - addFormError("Invalid destination"); + addFormError(_("Invalid destination")); } } } else { - addFormError("Unsupported"); + addFormError(_("Unsupported")); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java index b14bab7f8216bd7eaed77809dc11d3f1bbef819c..d42c61ccad0acc4ee7869629fb84dc6ff63ccc8b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java @@ -44,7 +44,7 @@ public class ConfigNetHandler extends FormHandler { @Override protected void processForm() { - if (_saveRequested || ( (_action != null) && ("Save changes".equals(_action)) )) { + if (_saveRequested || ( (_action != null) && (_("Save changes").equals(_action)) )) { saveChanges(); } else if (_recheckReachabilityRequested) { recheckReachability(); @@ -116,7 +116,7 @@ public class ConfigNetHandler extends FormHandler { private void recheckReachability() { _context.commSystem().recheckReachability(); - addFormNotice("Rechecking router reachability..."); + addFormNotice(_("Rechecking router reachability...")); } /** @@ -145,7 +145,7 @@ public class ConfigNetHandler extends FormHandler { // Todo: Catch local IPs right here rather than complaining later _context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_HOST, uhost); if ((!oldUdp.equals(_udpAutoIP)) || (!oldUHost.equals(uhost))) { - addFormNotice("Updating IP address"); + addFormNotice(_("Updating IP address")); restartRequired = true; } } @@ -163,17 +163,17 @@ public class ConfigNetHandler extends FormHandler { if ((!oldAutoHost.equals(_ntcpAutoIP)) || ! oldNHost.equalsIgnoreCase(_ntcpHostname)) { if ("disabled".equals(_ntcpAutoIP)) { - addFormNotice("Disabling TCP completely"); + addFormNotice(_("Disabling TCP completely")); } else if ("false".equals(_ntcpAutoIP) && _ntcpHostname.length() > 0) { // Todo: Catch local IPs right here rather than complaining later _context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME, _ntcpHostname); - addFormNotice("Updating inbound TCP address to " + _ntcpHostname); + addFormNotice(_("Updating inbound TCP address to") + " " + _ntcpHostname); } else { _context.router().removeConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME); if ("false".equals(_ntcpAutoIP)) - addFormNotice("Disabling inbound TCP"); + addFormNotice(_("Disabling inbound TCP")); else - addFormNotice("Updating inbound TCP address to auto"); // true or always + addFormNotice(_("Updating inbound TCP address to auto")); // true or always } _context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_IP, _ntcpAutoIP); _context.router().setConfigSetting(TransportManager.PROP_ENABLE_NTCP, "" + !"disabled".equals(_ntcpAutoIP)); @@ -182,10 +182,10 @@ public class ConfigNetHandler extends FormHandler { if (oldAutoPort != _ntcpAutoPort || ! oldNPort.equals(_ntcpPort)) { if (_ntcpPort.length() > 0 && !_ntcpAutoPort) { _context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_PORT, _ntcpPort); - addFormNotice("Updating inbound TCP port to " + _ntcpPort); + addFormNotice(_("Updating inbound TCP port to") + " " + _ntcpPort); } else { _context.router().removeConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_PORT); - addFormNotice("Updating inbound TCP port to auto"); + addFormNotice(_("Updating inbound TCP port to auto")); } _context.router().setConfigSetting(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_PORT, "" + _ntcpAutoPort); restartRequired = true; @@ -197,7 +197,7 @@ public class ConfigNetHandler extends FormHandler { if (!oldPort.equals(_udpPort)) { _context.router().setConfigSetting(UDPTransport.PROP_INTERNAL_PORT, _udpPort); _context.router().setConfigSetting(UDPTransport.PROP_EXTERNAL_PORT, _udpPort); - addFormNotice("Updating UDP port from " + oldPort + " to " + _udpPort); + addFormNotice(_("Updating UDP port from") + " " + oldPort + " " + _("to") + " " + _udpPort); restartRequired = true; } } @@ -213,9 +213,9 @@ public class ConfigNetHandler extends FormHandler { if (switchRequired) { _context.router().setConfigSetting(PROP_HIDDEN, "" + _hiddenMode); if (_hiddenMode) - addFormError("Gracefully restarting into Hidden Router Mode"); + addFormError(_("Gracefully restarting into Hidden Router Mode")); else - addFormError("Gracefully restarting to exit Hidden Router Mode"); + addFormError(_("Gracefully restarting to exit Hidden Router Mode")); } _context.router().setConfigSetting(Router.PROP_DYNAMIC_KEYS, "" + _dynamicKeys); @@ -224,15 +224,15 @@ public class ConfigNetHandler extends FormHandler { _upnp) { // This is minor, don't set restartRequired if (_upnp) - addFormNotice("Enabling UPnP, restart required to take effect"); + addFormNotice(_("Enabling UPnP, restart required to take effect")); else - addFormNotice("Disabling UPnP, restart required to take effect"); + addFormNotice(_("Disabling UPnP, restart required to take effect")); } _context.router().setConfigSetting(TransportManager.PROP_ENABLE_UPNP, "" + _upnp); if (_requireIntroductions) { _context.router().setConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS, "true"); - addFormNotice("Requiring SSU introduers"); + addFormNotice(_("Requiring SSU introduers")); } else { _context.router().removeConfigSetting(UDPTransport.PROP_FORCE_INTRODUCERS); } @@ -246,11 +246,11 @@ public class ConfigNetHandler extends FormHandler { } boolean saved = _context.router().saveConfig(); - if ( (_action != null) && ("Save changes".equals(_action)) ) { + if ( (_action != null) && (_("Save changes").equals(_action)) ) { if (saved) - addFormNotice("Configuration saved successfully"); + addFormNotice(_("Configuration saved successfully")); else - addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs"); + addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs")); } if (switchRequired) { @@ -290,7 +290,7 @@ public class ConfigNetHandler extends FormHandler { String old = _context.router().getConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE); if ( (old == null) || (!old.equalsIgnoreCase(_sharePct)) ) { _context.router().setConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE, _sharePct); - addFormNotice("Updating bandwidth share percentage"); + addFormNotice(_("Updating bandwidth share percentage")); updated = true; } } @@ -360,7 +360,7 @@ public class ConfigNetHandler extends FormHandler { if (updated && !_ratesOnly) { _context.bandwidthLimiter().reinitialize(); - addFormNotice("Updated bandwidth limits"); + addFormNotice(_("Updated bandwidth limits")); } } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java index 479aeb4c268f8e6e6fc4f89cf817de2550d12390..b4ca7bb40ab44d4b29fda370243745b066ee2138 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java @@ -17,26 +17,26 @@ public class ConfigPeerHandler extends FormHandler { if ("Save Configuration".equals(_action)) { _context.router().saveConfig(); addFormNotice("Settings saved - not really!!!!!"); - } else if (_action.startsWith("Ban")) { + } else if (_action.equals(_("Ban peer until restart"))) { Hash h = getHash(); if (h != null) { _context.shitlist().shitlistRouterForever(h, "Manually banned via <a href=\"configpeer.jsp\">configpeer.jsp</a>"); - addFormNotice("Peer " + _peer + " banned until restart"); + addFormNotice(_("Peer") + " " + _peer + " " + _("banned until restart") ); return; } - addFormError("Invalid peer"); - } else if (_action.startsWith("Unban")) { + addFormError(_("Invalid peer")); + } else if (_action.equals(_("Unban peer"))) { Hash h = getHash(); if (h != null) { if (_context.shitlist().isShitlisted(h)) { _context.shitlist().unshitlistRouter(h); - addFormNotice("Peer " + _peer + " unbanned"); + addFormNotice(_("Peer") + " " + _peer + " " + _("unbanned") ); } else - addFormNotice("Peer " + _peer + " is not currently banned"); + addFormNotice(_("Peer") + " " + _peer + " " + _("is not currently banned") ); return; } - addFormError("Invalid peer"); - } else if (_action.startsWith("Adjust")) { + addFormError(_("Invalid peer")); + } else if (_action.equals(_("Adjust Profile Bonuses"))) { Hash h = getHash(); if (h != null) { PeerProfile prof = _context.profileOrganizer().getProfile(h); @@ -44,19 +44,19 @@ public class ConfigPeerHandler extends FormHandler { try { prof.setSpeedBonus(Long.parseLong(_speed)); } catch (NumberFormatException nfe) { - addFormError("Bad speed value"); + addFormError(_("Bad speed value")); } try { prof.setCapacityBonus(Long.parseLong(_capacity)); } catch (NumberFormatException nfe) { - addFormError("Bad capacity value"); + addFormError(_("Bad capacity value")); } addFormNotice("Bonuses adjusted for " + _peer); } else addFormError("No profile exists for " + _peer); return; } - addFormError("Invalid peer"); + addFormError(_("Invalid peer")); } else if (_action.startsWith("Check")) { addFormError("Unsupported"); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java index 76de0f5d49e55463edaff89e98816813e175fa1f..95aa9fcb4b6f558737835ed408fb78c8ed4a14a3 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java @@ -50,36 +50,36 @@ public class ConfigServiceHandler extends FormHandler { protected void processForm() { if (_action == null) return; - if ("Shutdown gracefully".equals(_action)) { + if (_("Shutdown gracefully").equals(_action)) { _context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_GRACEFUL)); _context.router().shutdownGracefully(); - addFormNotice("Graceful shutdown initiated"); - } else if ("Shutdown immediately".equals(_action)) { + addFormNotice(_("Graceful shutdown initiated")); + } else if (_("Shutdown immediately").equals(_action)) { _context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_HARD)); _context.router().shutdown(Router.EXIT_HARD); - addFormNotice("Shutdown immediately! boom bye bye bad bwoy"); - } else if ("Cancel graceful shutdown".equals(_action)) { + addFormNotice(_("Shutdown immediately! boom bye bye bad bwoy")); + } else if (_("Cancel graceful shutdown").equals(_action)) { _context.router().cancelGracefulShutdown(); - addFormNotice("Graceful shutdown cancelled"); - } else if ("Graceful restart".equals(_action)) { + addFormNotice(_("Graceful shutdown cancelled")); + } else if (_("Graceful restart").equals(_action)) { _context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_GRACEFUL_RESTART)); _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART); - addFormNotice("Graceful restart requested"); - } else if ("Hard restart".equals(_action)) { + addFormNotice(_("Graceful restart requested")); + } else if (_("Hard restart").equals(_action)) { _context.addShutdownTask(new UpdateWrapperManagerTask(Router.EXIT_HARD_RESTART)); _context.router().shutdown(Router.EXIT_HARD_RESTART); - addFormNotice("Hard restart requested"); - } else if ("Rekey and Restart".equals(_action)) { - addFormNotice("Rekeying after graceful restart"); + addFormNotice(_("Hard restart requested")); + } else if (_("Rekey and Restart").equals(_action)) { + addFormNotice(_("Rekeying after graceful restart")); _context.addShutdownTask(new UpdateWrapperManagerAndRekeyTask(Router.EXIT_GRACEFUL_RESTART)); _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART); - } else if ("Rekey and Shutdown".equals(_action)) { - addFormNotice("Rekeying after graceful shutdown"); + } else if (_("Rekey and Shutdown").equals(_action)) { + addFormNotice(_("Rekeying after graceful shutdown")); _context.addShutdownTask(new UpdateWrapperManagerAndRekeyTask(Router.EXIT_GRACEFUL)); _context.router().shutdownGracefully(Router.EXIT_GRACEFUL); - } else if ("Run I2P on startup".equals(_action)) { + } else if (_("Run I2P on startup").equals(_action)) { installService(); - } else if ("Don't run I2P on startup".equals(_action)) { + } else if (_("Don't run I2P on startup").equals(_action)) { uninstallService(); } else if ("Dump threads".equals(_action)) { try { @@ -88,36 +88,36 @@ public class ConfigServiceHandler extends FormHandler { addFormError("Warning: unable to contact the service manager - " + t.getMessage()); } addFormNotice("Threads dumped to wrapper.log"); - } else if ("Show systray icon".equals(_action)) { + } else if (_("Show systray icon").equals(_action)) { try { SysTray tray = SysTray.getInstance(); if (tray != null) { tray.show(); - addFormNotice("System tray icon enabled."); + addFormNotice(_("System tray icon enabled.")); } else { - addFormNotice("System tray icon feature not supported on this platform. Sorry!"); + addFormNotice(_("System tray icon feature not supported on this platform. Sorry!")); } } catch (Throwable t) { - addFormError("Warning: unable to contact the systray manager - " + t.getMessage()); + addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage()); } - } else if ("Hide systray icon".equals(_action)) { + } else if (_("Hide systray icon").equals(_action)) { try { SysTray tray = SysTray.getInstance(); if (tray != null) { tray.hide(); - addFormNotice("System tray icon disabled."); + addFormNotice(_("System tray icon disabled.")); } else { - addFormNotice("System tray icon feature not supported on this platform. Sorry!"); + addFormNotice(_("System tray icon feature not supported on this platform. Sorry!")); } } catch (Throwable t) { - addFormError("Warning: unable to contact the systray manager - " + t.getMessage()); + addFormError(_("Warning: unable to contact the systray manager") + " - " + t.getMessage()); } - } else if ("View console on startup".equals(_action)) { + } else if (_("View console on startup").equals(_action)) { browseOnStartup(true); - addFormNotice("Console is to be shown on startup"); - } else if ("Do not view console on startup".equals(_action)) { + addFormNotice(_("Console is to be shown on startup")); + } else if (_("Do not view console on startup").equals(_action)) { browseOnStartup(false); - addFormNotice("Console is not to be shown on startup"); + addFormNotice(_("Console is not to be shown on startup")); } else { //addFormNotice("Blah blah blah. whatever. I'm not going to " + _action); } @@ -126,17 +126,17 @@ public class ConfigServiceHandler extends FormHandler { private void installService() { try { Runtime.getRuntime().exec("install_i2p_service_winnt.bat"); - addFormNotice("Service installed"); + addFormNotice(_("Service installed")); } catch (IOException ioe) { - addFormError("Warning: unable to install the service - " + ioe.getMessage()); + addFormError(_("Warning: unable to install the service") + " - " + ioe.getMessage()); } } private void uninstallService() { try { Runtime.getRuntime().exec("uninstall_i2p_service_winnt.bat"); - addFormNotice("Service removed"); + addFormNotice(_("Service removed")); } catch (IOException ioe) { - addFormError("Warning: unable to remove the service - " + ioe.getMessage()); + addFormError(_("Warning: unable to remove the service") + " - " + ioe.getMessage()); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java index e54c926168f86c1241f711ce357d2b6b27c19382..529bef9aa672a1f55c3667051d51ff04c30f98f8 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java @@ -137,9 +137,9 @@ public class ConfigTunnelsHandler extends FormHandler { if (saveRequired) { boolean saved = _context.router().saveConfig(); if (saved) - addFormNotice("Exploratory tunnel configuration saved successfully."); + addFormNotice(_("Exploratory tunnel configuration saved successfully.")); else - addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs."); + addFormNotice(_("Error saving the configuration (applied but not saved) - please see the error logs.")); } } private static final int getInt(Object val) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java index 393476f061b64ef16bda30f262282554ec111d4e..ffc463d60f3ef127035a0f8f6ff908702911fe8f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java @@ -18,7 +18,7 @@ public class ConfigTunnelsHelper extends HelperBase { TunnelPoolSettings exploratoryOut = _context.tunnelManager().getOutboundSettings(); buf.append("<input type=\"hidden\" name=\"pool.0\" value=\"exploratory\" >"); - renderForm(buf, 0, "exploratory", "Exploratory tunnels", exploratoryIn, exploratoryOut); + renderForm(buf, 0, "exploratory", _("Exploratory tunnels"), exploratoryIn, exploratoryOut); int cur = 1; Set clients = _context.clientManager().listClients(); @@ -38,7 +38,7 @@ public class ConfigTunnelsHelper extends HelperBase { String prefix = dest.calculateHash().toBase64().substring(0,4); buf.append("<input type=\"hidden\" name=\"pool.").append(cur).append("\" value=\""); buf.append(dest.calculateHash().toBase64()).append("\" >"); - renderForm(buf, cur, prefix, "Client tunnels for " + name, in, out); + renderForm(buf, cur, prefix, _("Client tunnels for") + " " + name, in, out); cur++; } @@ -61,95 +61,95 @@ public class ConfigTunnelsHelper extends HelperBase { in.getLength() + in.getLengthVariance() <= 0 || out.getLength() <= 0 || out.getLength() + out.getLengthVariance() <= 0) - buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 0-hop tunnels.</font></th></tr>"); + buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 0-hop tunnels.") + "</font></th></tr>"); else if (in.getLength() <= 1 || in.getLength() + in.getLengthVariance() <= 1 || out.getLength() <= 1 || out.getLength() + out.getLengthVariance() <= 1) - buf.append("<tr><th colspan=\"3\"><font color=\"red\">ANONYMITY WARNING - Settings include 1-hop tunnels.</font></th></tr>"); + buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 1-hop tunnels.") + "</font></th></tr>"); if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH || out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH) - buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include very long tunnels.</font></th></tr>"); + buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include very long tunnels.") + "</font></th></tr>"); if (in.getQuantity() + in.getBackupQuantity() >= WARN_QUANTITY || out.getQuantity() + out.getBackupQuantity() >= WARN_QUANTITY) - buf.append("<tr><th colspan=\"3\"><font color=\"red\">PERFORMANCE WARNING - Settings include high tunnel quantities.</font></th></tr>"); + buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include high tunnel quantities.") + "</font></th></tr>"); -buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> Inbound</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> Outbound</th></tr>\n"); +buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\"> " + _("Inbound") + "</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\"> " + _("Outbound") + "</th></tr>\n"); // buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n"); // tunnel depth - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Depth:</td>\n"); + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Depth") + ":</td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthInbound\">\n"); int now = in.getLength(); - renderOptions(buf, 0, MAX_LENGTH, now, "", "hop"); + renderOptions(buf, 0, MAX_LENGTH, now, "", _("hop")); if (now > MAX_LENGTH) - renderOptions(buf, now, now, now, "", "hop"); + renderOptions(buf, now, now, now, "", _("hop")); buf.append("</select></td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthOutbound\">\n"); now = out.getLength(); - renderOptions(buf, 0, MAX_LENGTH, now, "", "hop"); + renderOptions(buf, 0, MAX_LENGTH, now, "", _("hop")); if (now > MAX_LENGTH) - renderOptions(buf, now, now, now, "", "hop"); + renderOptions(buf, now, now, now, "", _("hop")); buf.append("</select></td>\n"); buf.append("</tr>\n"); // tunnel depth variance - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Randomization:</td>\n"); + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Randomization") + ":</td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceInbound\">\n"); now = in.getLengthVariance(); - renderOptions(buf, 0, 0, now, "", "hop"); - renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop"); - renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", "hop"); + renderOptions(buf, 0, 0, now, "", _("hop")); + renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", _("hop")); + renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", _("hop")); if (now > MAX_VARIANCE) - renderOptions(buf, now, now, now, "+ 0-", "hop"); + renderOptions(buf, now, now, now, "+ 0-", _("hop")); else if (now < MIN_NEG_VARIANCE) - renderOptions(buf, now, now, now, "+/- 0", "hop"); + renderOptions(buf, now, now, now, "+/- 0", _("hop")); buf.append("</select></td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceOutbound\">\n"); now = out.getLengthVariance(); - renderOptions(buf, 0, 0, now, "", "hop"); - renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", "hop"); - renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", "hop"); + renderOptions(buf, 0, 0, now, "", _("hop")); + renderOptions(buf, 1, MAX_VARIANCE, now, "+ 0-", _("hop")); + renderOptions(buf, MIN_NEG_VARIANCE, -1, now, "+/- 0", _("hop")); if (now > MAX_VARIANCE) - renderOptions(buf, now, now, now, "+ 0-", "hop"); + renderOptions(buf, now, now, now, "+ 0-", _("hop")); else if (now < MIN_NEG_VARIANCE) - renderOptions(buf, now, now, now, "+/- 0", "hop"); + renderOptions(buf, now, now, now, "+/- 0", _("hop")); buf.append("</select></td>\n"); // tunnel quantity - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Quantity:</td>\n"); + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Quantity") + ":</td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityInbound\">\n"); now = in.getQuantity(); - renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel"); + renderOptions(buf, 1, MAX_QUANTITY, now, "", _("tunnel")); if (now > MAX_QUANTITY) - renderOptions(buf, now, now, now, "", "tunnel"); + renderOptions(buf, now, now, now, "", _("tunnel")); buf.append("</select></td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityOutbound\">\n"); now = out.getQuantity(); - renderOptions(buf, 1, MAX_QUANTITY, now, "", "tunnel"); + renderOptions(buf, 1, MAX_QUANTITY, now, "", _("tunnel")); if (now > MAX_QUANTITY) - renderOptions(buf, now, now, now, "", "tunnel"); + renderOptions(buf, now, now, now, "", _("tunnel")); buf.append("</select></td>\n"); buf.append("</tr>\n"); // tunnel backup quantity - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Backup quantity:</td>\n"); + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Backup quantity") + ":</td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupInbound\">\n"); now = in.getBackupQuantity(); - renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel"); + renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", _("tunnel")); if (now > MAX_BACKUP_QUANTITY) - renderOptions(buf, now, now, now, "", "tunnel"); + renderOptions(buf, now, now, now, "", _("tunnel")); buf.append("</select></td>\n"); buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupOutbound\">\n"); now = out.getBackupQuantity(); - renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", "tunnel"); + renderOptions(buf, 0, MAX_BACKUP_QUANTITY, now, "", _("tunnel")); if (now > MAX_BACKUP_QUANTITY) - renderOptions(buf, now, now, now, "", "tunnel"); + renderOptions(buf, now, now, now, "", _("tunnel")); buf.append("</select></td>\n"); buf.append("</tr>\n"); @@ -159,7 +159,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt // And let's not display them at all unless they have contents, which should be rare. Properties props = in.getUnknownOptions(); if (props.size() > 0) { - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Inbound options:</td>\n" + + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Inbound options") + ":</td>\n" + "<td colspan=\"2\" align=\"center\"><input name=\"").append(index); buf.append(".inboundOptions\" type=\"text\" size=\"32\" disabled=\"true\" " + "value=\""); @@ -172,7 +172,7 @@ buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt } props = out.getUnknownOptions(); if (props.size() > 0) { - buf.append("<tr><td align=\"right\" class=\"mediumtags\">Outbound options:</td>\n" + + buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Outbound options") + ":</td>\n" + "<td colspan=\"2\" align=\"center\"><input name=\"").append(index); buf.append(".outboundOptions\" type=\"text\" size=\"32\" disabled=\"true\" " + "value=\""); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java index 10823101982311907124331bc3726455c94f69e5..22f4fa2dff0a6507f9cddee64b4ea15792a292b8 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java @@ -51,25 +51,25 @@ public class ConfigUpdateHandler extends FormHandler { @Override protected void processForm() { - if (_action != null && _action.startsWith("Check")) { + if (_action != null && _action.equals(_("Check for updates"))) { NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext()); fetcher.fetchNews(); if (fetcher.shouldFetchUnsigned()) fetcher.fetchUnsignedHead(); if (fetcher.updateAvailable() || fetcher.unsignedUpdateAvailable()) { if ( (_updatePolicy == null) || (!_updatePolicy.equals("notify")) ) - addFormNotice("Update available, attempting to download now"); + addFormNotice(_("Update available, attempting to download now")); else - addFormNotice("Update available, click button on left to download"); + addFormNotice(_("Update available, click button on left to download")); } else - addFormNotice("No update available"); + addFormNotice(_("No update available")); } if ( (_newsURL != null) && (_newsURL.length() > 0) ) { String oldURL = ConfigUpdateHelper.getNewsURL(_context); if ( (oldURL == null) || (!_newsURL.equals(oldURL)) ) { _context.router().setConfigSetting(PROP_NEWS_URL, _newsURL); - addFormNotice("Updating news URL to " + _newsURL); + addFormNotice(_("Updating news URL to") + " " + _newsURL); } } @@ -77,7 +77,7 @@ public class ConfigUpdateHandler extends FormHandler { String oldHost = _context.router().getConfigSetting(PROP_PROXY_HOST); if ( (oldHost == null) || (!_proxyHost.equals(oldHost)) ) { _context.router().setConfigSetting(PROP_PROXY_HOST, _proxyHost); - addFormNotice("Updating proxy host to " + _proxyHost); + addFormNotice(_("Updating proxy host to") + " " + _proxyHost); } } @@ -85,7 +85,7 @@ public class ConfigUpdateHandler extends FormHandler { String oldPort = _context.router().getConfigSetting(PROP_PROXY_PORT); if ( (oldPort == null) || (!_proxyPort.equals(oldPort)) ) { _context.router().setConfigSetting(PROP_PROXY_PORT, _proxyPort); - addFormNotice("Updating proxy port to " + _proxyPort); + addFormNotice(_("Updating proxy port to") + " " + _proxyPort); } } @@ -98,14 +98,14 @@ public class ConfigUpdateHandler extends FormHandler { try { oldFreq = Long.parseLong(oldFreqStr); } catch (NumberFormatException nfe) {} if (_refreshFrequency != oldFreq) { _context.router().setConfigSetting(PROP_REFRESH_FREQUENCY, ""+_refreshFrequency); - addFormNotice("Updating refresh frequency to " + DataHelper.formatDuration(_refreshFrequency)); + addFormNotice(_("Updating refresh frequency to") + " " + DataHelper.formatDuration(_refreshFrequency)); } if ( (_updatePolicy != null) && (_updatePolicy.length() > 0) ) { String oldPolicy = _context.router().getConfigSetting(PROP_UPDATE_POLICY); if ( (oldPolicy == null) || (!_updatePolicy.equals(oldPolicy)) ) { _context.router().setConfigSetting(PROP_UPDATE_POLICY, _updatePolicy); - addFormNotice("Updating update policy to " + _updatePolicy); + addFormNotice(_("Updating update policy to") + " " + _updatePolicy); } } @@ -114,7 +114,7 @@ public class ConfigUpdateHandler extends FormHandler { String oldURL = _context.router().getConfigSetting(PROP_UPDATE_URL); if ( (oldURL == null) || (!_updateURL.equals(oldURL)) ) { _context.router().setConfigSetting(PROP_UPDATE_URL, _updateURL); - addFormNotice("Updating update URLs."); + addFormNotice(_("Updating update URLs.")); } } @@ -122,7 +122,7 @@ public class ConfigUpdateHandler extends FormHandler { String oldKeys = new TrustedUpdate(_context).getTrustedKeysString(); if ( (oldKeys == null) || (!_trustedKeys.equals(oldKeys)) ) { _context.router().setConfigSetting(PROP_TRUSTED_KEYS, _trustedKeys); - addFormNotice("Updating trusted keys."); + addFormNotice(_("Updating trusted keys.")); } } @@ -130,7 +130,7 @@ public class ConfigUpdateHandler extends FormHandler { String oldURL = _context.router().getConfigSetting(PROP_ZIP_URL); if ( (oldURL == null) || (!_zipURL.equals(oldURL)) ) { _context.router().setConfigSetting(PROP_ZIP_URL, _zipURL); - addFormNotice("Updating unsigned update URL to " + _zipURL); + addFormNotice(_("Updating unsigned update URL to") + " " + _zipURL); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java index 164ac8df20239387891a348812e6a5fe3cca3862..4e1a04e0e8527bfd1131644d6d6849edc30def65 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java @@ -72,9 +72,9 @@ public class ConfigUpdateHelper extends HelperBase { buf.append("\" selected=\"true\""); if (PERIODS[i] == -1) - buf.append("\">Never</option>\n"); + buf.append("\">" + _("Never") + "</option>\n"); else - buf.append("\">Every ").append(DataHelper.formatDuration(PERIODS[i])).append("</option>\n"); + buf.append("\">" + _("Every") + " ").append(DataHelper.formatDuration(PERIODS[i])).append("</option>\n"); } buf.append("</select>\n"); return buf.toString(); @@ -89,18 +89,18 @@ public class ConfigUpdateHelper extends HelperBase { if ("notify".equals(policy)) buf.append("<option value=\"notify\" selected=\"true\">").append(_("Notify only")).append("</option>"); else - buf.append("<option value=\"notify\">Notify only</option>"); + buf.append("<option value=\"notify\">" + _("Notify only") + "</option>"); if ("download".equals(policy)) - buf.append("<option value=\"download\" selected=\"true\">Download and verify only</option>"); + buf.append("<option value=\"download\" selected=\"true\">" + _("Download and verify only") + "</option>"); else - buf.append("<option value=\"download\">Download and verify only</option>"); + buf.append("<option value=\"download\">" + _("Download and verify only") + "</option>"); if (System.getProperty("wrapper.version") != null) { if ("install".equals(policy)) - buf.append("<option value=\"install\" selected=\"true\">Download, verify, and restart</option>"); + buf.append("<option value=\"install\" selected=\"true\">" + _("Download, verify, and restart") + "</option>"); else - buf.append("<option value=\"install\">Download, verify, and restart</option>"); + buf.append("<option value=\"install\">" + _("Download, verify, and restart") + "</option>"); } buf.append("</select>\n"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java index f51c4e772dce1f209096d85ed4f5e48db0c0caef..b57ed4652765475a12401e0116fa225aca3fad52 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -10,7 +10,7 @@ public class LogsHelper extends HelperBase { public String getLogs() { String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages()); - return "Location: <code>" + _context.logManager().currentFile() + "</code><br><br>" + str; + return "Location: <b><code>" + _context.logManager().currentFile() + "</code></b><br><br>" + str; } public String getCriticalLogs() { @@ -34,7 +34,7 @@ public class LogsHelper extends HelperBase { return ""; else { str = str.replaceAll("<", "<").replaceAll(">", ">"); - return "Location:<code> " + f.getAbsolutePath() + "</code> <pre>" + str + "</pre>"; + return "Location:<b><code> " + f.getAbsolutePath() + "</code></b> <pre>" + str + "</pre>"; } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index 6e9f76fa84868a835cfe92c09c0f823e37dd7c86..ed501a088ac892b05484fc7c250186f8904ec286 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -55,7 +55,7 @@ public class NetDbRenderer { public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException { StringBuilder buf = new StringBuilder(4*1024); - buf.append("<h2>Network Database RouterInfo Lookup</h2>\n"); + buf.append("<h2>" + _("Network Database RouterInfo Lookup") + "</h2>\n"); if (".".equals(routerPrefix)) { renderRouterInfo(buf, _context.router().getRouterInfo(), true, true); } else { @@ -70,7 +70,7 @@ public class NetDbRenderer { } } if (notFound) - buf.append("Router ").append(routerPrefix).append(" not found in network database"); + buf.append(_("Router") + " ").append(routerPrefix).append(" " + _("not found in network database") ); } out.write(buf.toString()); out.flush(); @@ -82,8 +82,8 @@ public class NetDbRenderer { public void renderLeaseSetHTML(Writer out) throws IOException { StringBuilder buf = new StringBuilder(4*1024); - buf.append("<h2>Network Database Contents</h2>\n"); - buf.append("<a href=\"netdb.jsp\">View RouterInfo</a>"); + buf.append("<h2>" + _("Network Database Contents") + "</h2>\n"); + buf.append("<a href=\"netdb.jsp\">" + _("View") + " RouterInfo</a>"); buf.append("<h3>LeaseSets</h3>\n"); Set leases = new TreeSet(new LeaseSetComparator()); leases.addAll(_context.netDb().getLeases()); @@ -94,17 +94,17 @@ public class NetDbRenderer { Hash key = dest.calculateHash(); buf.append("<b>LeaseSet: ").append(key.toBase64()); if (_context.clientManager().isLocal(dest)) { - buf.append(" (<a href=\"tunnels.jsp#" + key.toBase64().substring(0,4) + "\">Local</a> "); + buf.append(" (<a href=\"tunnels.jsp#" + key.toBase64().substring(0,4) + "\">" + _("Local") + "</a> "); if (! _context.clientManager().shouldPublishLeaseSet(key)) - buf.append("Unpublished "); - buf.append("Destination "); + buf.append(_("Unpublished") + " "); + buf.append(_("Destination") + " "); TunnelPoolSettings in = _context.tunnelManager().getInboundSettings(key); if (in != null && in.getDestinationNickname() != null) buf.append(in.getDestinationNickname()); else buf.append(dest.toBase64().substring(0, 6)); } else { - buf.append(" (Destination "); + buf.append(" (" + _("Destination") + " "); String host = _context.namingService().reverseLookup(dest); if (host != null) buf.append(host); @@ -118,9 +118,9 @@ public class NetDbRenderer { else buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br>\n"); for (int i = 0; i < ls.getLeaseCount(); i++) { - buf.append("Lease ").append(i + 1).append(": Gateway "); + buf.append("Lease ").append(i + 1).append(": " + _("Gateway") + " "); buf.append(_context.commSystem().renderPeerHTML(ls.getLease(i).getGateway())); - buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n"); + buf.append(" " + _("Tunnel") + " ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n"); } buf.append("<hr>\n"); out.write(buf.toString()); @@ -135,21 +135,21 @@ public class NetDbRenderer { if (full) size *= 4; StringBuilder buf = new StringBuilder(size); - out.write("<h2>Network Database Contents (<a href=\"netdb.jsp?l=1\">View LeaseSets</a>)</h2>\n"); + out.write("<h2>" + _("Network Database Contents") + " (<a href=\"netdb.jsp?l=1\">" + _("View") + " LeaseSets</a>)</h2>\n"); if (!_context.netDb().isInitialized()) { - buf.append("Not initialized\n"); + buf.append("" + _("Not initialized") + "\n"); out.write(buf.toString()); out.flush(); return; } Hash us = _context.routerHash(); - out.write("<a name=\"routers\" ></a><h3>Routers (<a href=\"netdb.jsp"); + out.write("<a name=\"routers\" ></a><h3>" + _("Routers") + " (<a href=\"netdb.jsp"); if (full) - out.write("#routers\" >view without"); + out.write("#routers\" >" + _("view without") + ""); else - out.write("?f=1#routers\" >view with"); - out.write(" stats</a>)</h3>\n"); + out.write("?f=1#routers\" >" + _("view with") + ""); + out.write(" " + _("stats") + "</a>)</h3>\n"); RouterInfo ourInfo = _context.router().getRouterInfo(); renderRouterInfo(buf, ourInfo, true, true); @@ -183,7 +183,7 @@ public class NetDbRenderer { if (versionList.size() > 0) { Collections.sort(versionList, Collections.reverseOrder()); buf.append("<table>\n"); - buf.append("<tr><th>Version</th><th>Count</th></tr>\n"); + buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n"); for (String routerVersion : versionList) { int num = versions.count(routerVersion); buf.append("<tr><td align=\"center\">").append(DataHelper.stripHTML(routerVersion)); @@ -199,7 +199,7 @@ public class NetDbRenderer { if (countryList.size() > 0) { Collections.sort(countryList); buf.append("<table>\n"); - buf.append("<tr><th align=\"left\">Country</th><th>Count</th></tr>\n"); + buf.append("<tr><th align=\"left\">" + _("Country") + "</th><th>" + _("Count") + "</th></tr>\n"); for (String country : countryList) { int num = countries.count(country); buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append("\""); @@ -222,9 +222,9 @@ public class NetDbRenderer { String hash = info.getIdentity().getHash().toBase64(); buf.append("<table><tr><th><a name=\"").append(hash.substring(0, 6)).append("\" ></a>"); if (isUs) { - buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b></th></tr><tr><td>\n"); + buf.append("<a name=\"our-info\" ></a><b>" + _("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n"); } else { - buf.append("<b>Peer info for:</b> ").append(hash).append("\n"); + buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n"); if (full) { buf.append("[<a href=\"netdb.jsp\" >Back</a>]</th></tr><td>\n"); } else { @@ -234,12 +234,12 @@ public class NetDbRenderer { long age = _context.clock().now() - info.getPublished(); if (isUs && _context.router().isHidden()) - buf.append("<b>Hidden, Updated:</b> ").append(DataHelper.formatDuration(age)).append(" ago<br>\n"); + buf.append("<b>" + _("Hidden") + ", " + _("Updated") + ":</b> ").append(DataHelper.formatDuration(age)).append(" " + _("ago") + "<br>\n"); else if (age > 0) - buf.append("<b>Published:</b> ").append(DataHelper.formatDuration(age)).append(" ago<br>\n"); + buf.append("<b>" + _("Published") + ":</b> ").append(DataHelper.formatDuration(age)).append(" " + _("ago") + "<br>\n"); else - buf.append("<b>Published:</b> in ").append(DataHelper.formatDuration(0-age)).append("???<br>\n"); - buf.append("<b>Address(es):</b> "); + buf.append("<b>" + _("Published") + ":</b> in ").append(DataHelper.formatDuration(0-age)).append("???<br>\n"); + buf.append("<b>" + _("Address(es)") + ":</b> "); String country = _context.commSystem().getCountry(info.getIdentity().getHash()); if(country != null) { buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase()).append("\""); @@ -256,7 +256,7 @@ public class NetDbRenderer { } buf.append("</td></tr>\n"); if (full) { - buf.append("<tr><td>Stats: <br><code>\n"); + buf.append("<tr><td>" + _("Stats") + ": <br><code>\n"); for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) { String key = (String)iter.next(); String val = info.getOption(key); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java index 11848ef46a2e8e691da0cc86781e87390fca3eab..0a4035f78b2ead5004ab605405f9ad2d7e1b9c38 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsFetcher.java @@ -77,7 +77,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener { long now = _context.clock().now(); return (_lastUpdated > 0 ? "News last updated " + DataHelper.formatDuration(now - _lastUpdated) + " ago" : "") + - (_lastFetch > _lastUpdated ? ", last checked " + DataHelper.formatDuration(now - _lastFetch) + " ago" : ""); + (_lastFetch > _lastUpdated ? "; last checked " + DataHelper.formatDuration(now - _lastFetch) + " ago." : ""); } public void run() { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 5af36a7cb8a22a1e11758944e1783bc7ae71019f..bce21d7a37a389bc98afad0c7bd7b5b14b7223ea 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -228,9 +228,9 @@ class ProfileOrganizerRenderer { buf.append("</table>"); buf.append("<h3>Thresholds:</h3>"); - buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>"); + buf.append("<p><b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>"); buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br>"); - buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)"); + buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)</p>"); buf.append("<h3>Definitions:</h3><ul>" + "<li><b>groups</b>: as determined by the profile organizer</li>" + "<li><b>caps</b>: capabilities in the netDb, not used to determine profiles</li>" + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 342d5d95f1eb398f9f716611e59c8269945b9412..15322edf4b89d5245c9a0c74f89d5ed41b4c4e3f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -58,7 +58,7 @@ public class StatsGenerator { buf.append("Statistics gathered during this router's uptime ("); long uptime = _context.router().getUptime(); buf.append(DataHelper.formatDuration(uptime)); - buf.append("). The data gathered is quantized over a 1 minute period, so should just be used as an estimate<p />"); + buf.append("). The data gathered is quantized over a 1 minute period, so should just be used as an estimate."); out.write(buf.toString()); buf.setLength(0); @@ -138,7 +138,7 @@ public class StatsGenerator { buf.append("</i><br>"); } if (rate.getLifetimeEventCount() <= 0) { - buf.append("No lifetime events<br> <br>"); + buf.append("No lifetime events<br>"); return; } long now = _context.clock().now(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index fa366927a5e8c9da0cb187ceabd4d95e47b1b823..cffca854db5dcc571eaa4cf3bbe6f89c4eb10d6c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -357,7 +357,7 @@ public class SummaryHelper extends HelperBase { Collections.sort(clients, new AlphaComparator()); StringBuilder buf = new StringBuilder(512); - buf.append("<h3><a href=\"i2ptunnel/index.jsp\" target=\"_blank\" title=\"Add/remove/edit & control your client and server tunnels (local destinations).\" title=\"View existing tunnels and tunnel build status.\">Local destinations</a></h3><hr><table>"); + buf.append("<h3><a href=\"i2ptunnel/index.jsp\" target=\"_blank\" title=\"Add/remove/edit & control your client and server tunnels\">Local Destinations</a></h3><hr><div class=\"tunnels\"><table>"); for (Iterator iter = clients.iterator(); iter.hasNext(); ) { Destination client = (Destination)iter.next(); @@ -389,10 +389,10 @@ public class SummaryHelper extends HelperBase { } } else { // yellow light - buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Tunnel building in progress…\"></td></tr>\n"); + buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"Building…\" title=\"Building tunnels…\"></td></tr>\n"); } } - buf.append("</table><hr>\n"); + buf.append("</table></div><hr>\n"); return buf.toString(); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java index b1536c911d2c660b86e2d75dca21499fa8710797..ad63d216a0735ccf5ad72291c119a206cee41378 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java @@ -37,7 +37,7 @@ public class TunnelRenderer { } public void renderStatusHTML(Writer out) throws IOException { - out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>Exploratory tunnels (<a href=\"/configtunnels.jsp#exploratory\">config</a>):</h2>\n"); + out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>" + _("Exploratory tunnels") + " (<a href=\"/configtunnels.jsp#exploratory\">" + _("config") + "</a>):</h2>\n"); renderPool(out, _context.tunnelManager().getInboundExploratoryPool(), _context.tunnelManager().getOutboundExploratoryPool()); List<Hash> destinations = null; @@ -56,9 +56,9 @@ public class TunnelRenderer { if (name == null) name = client.toBase64().substring(0,4); out.write("<h2><a name=\"" + client.toBase64().substring(0,4) - + "\" ></a>Client tunnels for " + name); + + "\" ></a>" + _("Client tunnels for") + " " + name); if (_context.clientManager().isLocal(client)) - out.write(" (<a href=\"/configtunnels.jsp#" + client.toBase64().substring(0,4) +"\">config</a>):</h2>\n"); + out.write(" (<a href=\"/configtunnels.jsp#" + client.toBase64().substring(0,4) +"\">" + _("config") + "</a>):</h2>\n"); else out.write(" (dead):</h2>\n"); renderPool(out, in, outPool); @@ -66,10 +66,10 @@ public class TunnelRenderer { List participating = _context.tunnelDispatcher().listParticipatingTunnels(); Collections.sort(participating, new TunnelComparator()); - out.write("<h2><a name=\"participating\"></a>Participating tunnels:</h2><table>\n"); - out.write("<tr><th>Receive on</th><th>From</th><th>" - + "Send on</th><th>To</th><th>Expiration</th>" - + "<th>Usage</th><th>Rate</th><th>Role</th></tr>\n"); + out.write("<h2><a name=\"participating\"></a>" + _("Participating tunnels") + ":</h2><table>\n"); + out.write("<tr><th>" + _("Receive on") + "</th><th>" + _("From") + "</th><th>" + + "" + _("Send on") + "</th><th>" + _("To") + "</th><th>" + _("Expiration") + "</th>" + + "<th>" + _("Usage") + "</th><th>" + _("Rate") + "</th><th>" + _("Role") + "</th></tr>\n"); long processed = 0; RateStat rs = _context.statManager().getRate("tunnel.participatingMessageCount"); if (rs != null) @@ -113,17 +113,17 @@ public class TunnelRenderer { int bps = 1024 * (int) cfg.getProcessedMessagesCount() / lifetime; out.write(" <td class=\"cells\" align=\"center\">" + bps + "Bps</td>"); if (cfg.getSendTo() == null) - out.write(" <td class=\"cells\" align=\"center\">Outbound Endpoint</td>"); + out.write(" <td class=\"cells\" align=\"center\">" + _("Outbound Endpoint") + "</td>"); else if (cfg.getReceiveFrom() == null) - out.write(" <td class=\"cells\" align=\"center\">Inbound Gateway</td>"); + out.write(" <td class=\"cells\" align=\"center\">" + _("Inbound Gateway") + "</td>"); else - out.write(" <td class=\"cells\" align=\"center\">Participant</td>"); + out.write(" <td class=\"cells\" align=\"center\">" + _("Participant") + "</td>"); out.write("</tr>\n"); processed += cfg.getProcessedMessagesCount(); } out.write("</table>\n"); - out.write("<div class=\"statusnotes\"><b>Inactive participating tunnels: " + inactive + "</b></div>\n"); - out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></div>\n"); + out.write("<div class=\"statusnotes\"><b>" + _("Inactive participating tunnels") + ": " + inactive + "</b></div>\n"); + out.write("<div class=\"statusnotes\"><b>" + _("Lifetime bandwidth usage") + ": " + DataHelper.formatSize(processed*1024) + "B</b></div>\n"); renderPeers(out); } @@ -152,16 +152,16 @@ public class TunnelRenderer { if (info.getLength() > maxLength) maxLength = info.getLength(); } - out.write("<table><tr><th>In/Out</th><th>Expiry</th><th>Usage</th><th>Gateway</th>"); + out.write("<table><tr><th>" + _("In/Out") + "</th><th>" + _("Expiry") + "</th><th>" + _("Usage") + "</th><th>" + _("Gateway") + "</th>"); if (maxLength > 3) { out.write("<th align=\"center\" colspan=\"" + (maxLength - 2)); - out.write("\">Participants</th>"); + out.write("\">" + _("Participants") + "</th>"); } else if (maxLength == 3) { - out.write("<th>Participant</th>"); + out.write("<th>" + _("Participant") + "</th>"); } if (maxLength > 1) { - out.write("<th>Endpoint</th>"); + out.write("<th>" + _("Endpoint") + "</th>"); } out.write("</tr>\n"); for (int i = 0; i < tunnels.size(); i++) { @@ -201,17 +201,17 @@ public class TunnelRenderer { if (in != null) { List pending = in.listPending(); if (pending.size() > 0) - out.write("<div class=\"statusnotes\"><center><b>Build in progress: " + pending.size() + " inbound</b></center></div>\n"); + out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("inbound") + "</b></center></div>\n"); live += pending.size(); } if (outPool != null) { List pending = outPool.listPending(); if (pending.size() > 0) - out.write("<div class=\"statusnotes\"><center><b>Build in progress: " + pending.size() + " outbound</b></center></div>\n"); + out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("outbound") + "</b></center></div>\n"); live += pending.size(); } if (live <= 0) - out.write("<div class=\"statusnotes\"><center><b>No tunnels; waiting for the grace period to end.</center></b></div>\n"); + out.write("<div class=\"statusnotes\"><center><b>" + _("No tunnels; waiting for the grace period to end.") + "</center></b></div>\n"); out.write("<div class=\"statusnotes\"><center><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "B in, " + DataHelper.formatSize(processedOut*1024) + "B out</b></center></div>"); } @@ -230,7 +230,7 @@ public class TunnelRenderer { List<Hash> peerList = new ArrayList(peers); Collections.sort(peerList, new HashComparator()); - out.write("<h2><a name=\"peers\"></a>Tunnel Counts By Peer:</h2>\n"); + out.write("<h2><a name=\"peers\"></a>" + _("Tunnel Counts By Peer") + ":</h2>\n"); out.write("<table><tr><th>Peer</th><th>Expl. + Client</th><th>% of total</th><th>Part. from + to</th><th>% of total</th></tr>\n"); for (Hash h : peerList) { out.write("<tr> <td class=\"cells\" align=\"center\">"); @@ -249,7 +249,7 @@ public class TunnelRenderer { out.write('0'); out.write('\n'); } - out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>Tunnels</b> <td align=\"center\"><b>" + tunnelCount); + out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>" + _("Tunnels") + "</b> <td align=\"center\"><b>" + tunnelCount); out.write("</b> <td> </td> <td align=\"center\"><b>" + partCount); out.write("</b> <td> </td></tr></table></div>\n"); } diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index d33bf38c9f318e1579bedfed8d9b5517b2203351..d17019884d746325aae3dbfdfb867be9c50cfc2a 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -1,16 +1,17 @@ <%@page contentType="text/html" %> +<%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> -<title>I2P Router Console - config networking</title> <%@include file="css.jsp" %> +<%=intl.title("config networking")%> </head><body> <%@include file="summary.jsp" %> <jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" /> <jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P Network Configuration</h1> +<h1><%=intl._("I2P Network Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -25,10 +26,11 @@ System.setProperty("net.i2p.router.web.ConfigNetHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigNetHandler.nonce")%>" /> <input type="hidden" name="action" value="blah" /> - <h3>Bandwidth limiter</h3><p> - <b>I2P will work best if you configure your rates to match the speed of your internet connection.</b> + <h3><%=intl._("Bandwidth limiter")%></h3><p> + <b><%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b> </p> - <div class="wideload"><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" /> KBps In + <div class="wideload"><p><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" /> + <%=intl._("KBps In")%> </td><td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)</td> <!-- let's keep this simple... bursting up to @@ -36,7 +38,8 @@ <jsp:getProperty name="nethelper" property="inboundBurstFactorBox" /><br> --> </tr><tr> - <td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" /> KBps Out + <td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" /> + <%=intl._("KBps Out")%> </td><td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)</td> <!-- let's keep this simple... bursting up to @@ -46,22 +49,22 @@ A negative rate sets the default.</i><br> --> </tr><tr> - <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> Share</td> + <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td> <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />) -</td></tr></table></div></p> +</td></tr></table></p></div></p> <% int share = nethelper.getShareBandwidth(); if (share < 12) { - out.print("<b>NOTE</b>: You have configured I2P to share only " + share + "KBps. "); - out.print("I2P requires at least 12KBps to enable sharing. "); - out.print("Please enable sharing (participating in tunnels) by configuring more bandwidth. "); - out.print("It improves your anonymity by creating cover traffic, and helps the network.<br>"); + out.print("<p><b>"+intl._("NOTE")+"</b>: You have configured I2P to share only " + share + "KBps. "); + out.print(intl._("I2P requires at least 12KBps to enable sharing. ")); + out.print(intl._("Please enable sharing (participating in tunnels) by configuring more bandwidth. ")); + out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network.")+"</p>"); } else { - out.print("You have configured I2P to share<b> " + share + "KBps</b>. "); - out.print("The higher the share bandwidth the more you improve your anonymity and help the network.<hr>"); + out.print("<p>" + intl._("You have configured I2P to share") + "<b> " + share + "KBps</b>. "); + out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network.")+"</p><hr>"); } %> <div class="formaction"> -<input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" /></div> +<input type="submit" name="save" value="<%=intl._("Save changes")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" /></div> <!-- <b>Enable load testing: </b> <input type="checkbox" class="optbox" name="enableloadtesting" value="true" <jsp:getProperty name="nethelper" property="enableLoadTesting" /> /> @@ -72,27 +75,27 @@ <a href="oldstats.jsp#test.rtt">test.rtt</a> and related stats.</p> <br> --> - <h3>IP and Transport Configuration</h3><p> - <b>The default settings will work for most people. There is <a href="#chelp">help below</a>.</b> - </p><p><b>UPnP Configuration:</b><br> + <h3><%=intl._("IP and Transport Configuration")%></h3><p> + <b><%=intl._("The default settings will work for most people.")%> There is <a href="#chelp">help below</a>.</b> + </p><p><b><%=intl._("UPnP Configuration")%>:</b><br> <input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> /> - Enable UPnP to open firewall ports - <a href="peers.jsp#upnp">UPnP status</a> - </p><p><b>IP Configuration:</b><br> - Externally reachable hostname or IP address:<br> + <%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers.jsp#upnp"><%=intl._("UPnP status")%></a> + </p><p><b><%=intl._("IP Configuration")%>:</b><br> + <%=intl._("Externally reachable hostname or IP address")%>:<br> <input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> /> - Use all auto-detect methods<br> + <%=intl._("Use all auto-detect methods")%><br> <input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> /> - Disable UPnP IP address detection<br> + <%=intl._("Disable UPnP IP address detection")%><br> <input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> /> - Ignore local interface IP address<br> + <%=intl._("Ignore local interface IP address")%><br> <input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> /> - Use SSU IP address detection only<br> + <%=intl._("Use SSU IP address detection only")%><br> <input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> /> - Specify hostname or IP: + <%=intl._("Specify hostname or IP")%>: <input name ="udpHost1" type="text" size="16" value="<jsp:getProperty name="nethelper" property="udphostname" />" /> <% String[] ips = nethelper.getAddresses(); if (ips.length > 0) { - out.print(" or <select name=\"udpHost2\"><option value=\"\" selected=\"true\">Select Interface</option>\n"); + out.print(" " + intl._("or") + " <select name=\"udpHost2\"><option value=\"\" selected=\"true\">"+intl._("Select Interface")+"</option>\n"); for (int i = 0; i < ips.length; i++) { out.print("<option value=\""); out.print(ips[i]); @@ -105,9 +108,9 @@ %> <br> <input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> /> - Hidden mode - do not publish IP <i>(prevents participating traffic)</i><br> - </p><p><b>UDP Configuration:</b><br> - UDP port: + <%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br> + </p><p><b><%=intl._("UDP Configuration:")%></b><br> + <%=intl._("UDP port:")%> <input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" /><br> <!-- let's keep this simple... <input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> /> @@ -117,123 +120,118 @@ Current External UDP address: <i><jsp:getProperty name="nethelper" property="udpAddress" /></i><br> --> </p><p> - <b>TCP Configuration:</b><br> - Externally reachable hostname or IP address:<br> + <b><%=intl._("TCP Configuration")%>:</b><br> + <%=intl._("Externally reachable hostname or IP address")%>:<br> <input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> /> - Use auto-detected IP address - <i>(currently <jsp:getProperty name="nethelper" property="udpIP" />)</i> - if we are not firewalled<br> + <%=intl._("Use auto-detected IP address")%> + <i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i> + <%=intl._("if we are not firewalled")%><br> <input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> /> - Always use auto-detected IP address (Not firewalled)<br> + <%=intl._("Always use auto-detected IP address (Not firewalled)")%><br> <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> /> - Specify hostname or IP: + <%=intl._("Specify hostname or IP")%>: <input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" /><br> <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> /> - Disable inbound (Firewalled)<br> + <%=intl._("Disable inbound (Firewalled)")%><br> <input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> /> - Completely disable <i>(select only if behind a firewall that throttles or blocks outbound TCP)</i><br> + <%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br> </p><p> - Externally reachable TCP port:<br> + <%=intl._("Externally reachable TCP port")%>:<br> <input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> /> - Use the same port configured for UDP - <i>(currently <jsp:getProperty name="nethelper" property="udpPort" />)</i><br> + <%=intl._("Use the same port configured for UDP")%> + <i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br> <input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> /> - Specify Port: + <%=intl._("Specify Port")%>: <input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" /><br> - </p><p><b>Note: Changing these settings will restart your router.</b></p> + </p><p><b><%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%></b></p> <hr><div class="formaction"> - <input type="submit" name="save" value="Save changes" /> <input type="reset" value="Cancel" /> -</div><h3><a name="chelp">Configuration Help:</a></h3><div align="justify"><p> - While I2P will work fine behind most firewalls, your speeds and network integration will generally improve - if the I2P port (generally 8887) is forwarded for both UDP and TCP. + <input type="submit" name="save" value="<%=intl._("Save changes")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" /> +</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p> + <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port (generally 8887) is forwarded for both UDP and TCP.")%> </p><p> - If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach - you. If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching - with "SSU introductions" to relay traffic. Most of the options above are for special situations, - for example where UPnP does not work correctly, or a firewall not under your control is doing - harm. Certain firewalls such as symmetric NATs may not work well with I2P. + <%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%> + <%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%> + <%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%> + <%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%> </p> <!-- let's keep this simple... <input type="submit" name="recheckReachability" value="Check network reachability..." /> </p> --> <p> - UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address - and forward ports. - UPnP support is beta, and may not work for any number of reasons: + <%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%> + <%=intl._("UPnP support is beta, and may not work for any number of reasons")%>: <ul> -<li class="tidylist">No UPnP-compatible device present -<li class="tidylist">UPnP disabled on the device -<li class="tidylist">Software firewall interference with UPnP -<li class="tidylist">Bugs in the device's UPnP implementation -<li class="tidylist">Multiple firewall/routers in the internet connection path -<li class="tidylist">UPnP device change, reset, or address change -</ul><br> +<li class="tidylist"><%=intl._("No UPnP-compatible device present")%> +<li class="tidylist"><%=intl._("UPnP disabled on the device")%> +<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%> +<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%> +<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%> +<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%> +</ul></p><p> Reviewing the <a href="peers.jsp#upnp">UPnP status</a> may help. - UPnP may be enabled or disabled above, but a change requires a router restart to take effect. -<p>Hostnames entered above will be published in the network database. +<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p> +<p><%=intl._("Hostnames entered above will be published in the network database.")%> They are <b>not private</b>. Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1. - If you specify the wrong IP address or - hostname, or do not properly configure your NAT or firewall, your network performance will degrade - substantially. When in doubt, leave the settings at the defaults. + <%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%> + <%=intl._("When in doubt, leave the settings at the defaults.")%> </p> -<h3><a name="help">Reachability Help:</a></h3><p> - While I2P will work fine behind most firewalls, your speeds and network integration will generally improve - if the I2P port (generally 8887) to both UDP and TCP. - If you think you have opened up your firewall and I2P still thinks you are firewalled, remember - that you may have multiple firewalls, for example both software packages and external hardware routers. +<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p> + <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port (generally 8887) is forwarded for both UDP and TCP.")%> + <%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%> If there is an error, the <a href="logs.jsp">logs</a> may also help diagnose the problem. <ul> -<li class="tidylist"><b>OK</b> - Your UDP port does not appear to be firewalled. -<li class="tidylist"><b>Firewalled</b> - Your UDP port appears to be firewalled. - As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error. - However, if it appears consistently, you should check whether both your external and internal - firewalls are open on port 8887. I2P will work fine when firewalled, there is no reason for concern. - When firewalled, the router uses "introducers" to relay inbound connections. - However, you will get more participating traffic and help the network more if you can open your - firewall(s). If you think you have already done so, remember that you may have both a hardware - and a software firewall, or be behind an additional, institutional firewall you cannot control. - Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other - limitations or bugs that prevent them from passing traffic through to I2P. -<li class="tidylist"><b>Testing</b> - The router is currently testing whether your UDP port is firewalled. -<li class="tidylist"><b>Hidden</b> - The router is not configured to publish its address, - therefore it does not expect incoming connections. -<li class="tidylist"><b>WARN - Firewalled and Fast</b> - You have configured I2P to share more than 128KBps of bandwidth, - but you are firewalled. While I2P will work fine in this configuration, if you really have - over 128KBps of bandwidth to share, it will be much more helpful to the network if - you open your firewall. -<li class="tidylist"><b>WARN - Firewalled and Floodfill</b> - You have configured I2P to be a floodfill router, but - you are firewalled. For best participation as a floodfill router, you should open your firewall. -<li class="tidylist"><b>WARN - Firewalled with Inbound TCP Enabled</b> - You have configured inbound TCP, however - your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well. - If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact - you via TCP, which will hurt the network. Please open your firewall or disable inbound TCP above. -<li class="tidylist"><b>WARN - Firewalled with UDP Disabled</b> - - You have configured inbound TCP, however - you have disabled UDP. You appear to be firewalled on TCP, therefore your router cannot - accept inbound connections. - Please open your firewall or enable UDP. -<li class="tidylist"><b>ERR - Clock Skew</b> - Your system's clock is skewed, which will make it difficult - to participate in the network. Correct your clock setting if this error persists. -<li class="tidylist"><b>ERR - Private TCP Address</b> - You must never advertise an unroutable IP address such as - 127.0.0.1 or 192.168.1.1 as your external address. Correct the address or disable inbound TCP above. -<li class="tidylist"><b>ERR - SymmetricNAT</b> - I2P detected that you are firewalled by a Symmetric NAT. - I2P does not work well behind this type of firewall. You will probably not be able to - accept inbound connections, which will limit your participation in the network. -<li class="tidylist"><b>ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart</b> - - I2P was unable to bind to port 8887 or other configured port. - Check to see if another program is using port 8887. If so, stop that program or configure - I2P to use a different port. This may be a transient error, if the other program is no longer - using the port. However, a restart is always required after this error. -<li class="tidylist"><b>ERR - UDP Disabled and Inbound TCP host/port not set</b> - - You have not configured inbound TCP with a hostname and port above, however - you have disabled UDP. Therefore your router cannot accept inbound connections. - Please configure a TCP host and port above or enable UDP. -<li class="tidylist"><b>ERR - Client Manager I2CP Error - check logs</b> - - This is usually due to a port 7654 conflict. Check the logs to verify. Do you have another I2P instance running? - Stop the conflicting program and restart I2P. - </ul><hr> +<li class="tidylist"><b><%=intl._("OK")%></b> - + <%=intl._("Your UDP port does not appear to be firewalled.")%> +<li class="tidylist"><b><%=intl._("Firewalled")%></b> - + <%=intl._("Your UDP port appears to be firewalled.")%> + <%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%> + <%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open on port 8887.")%> + <%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%> + <%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%> + <%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%> + <%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%> +<li class="tidylist"><b><%=intl._("Testing")%></b> - + <%=intl._("The router is currently testing whether your UDP port is firewalled.")%> +<li class="tidylist"><b><%=intl._("Hidden")%></b> - + <%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%> +<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> - + <%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%> + <%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%> +<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> - + <%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%> + <%=intl._("For best participation as a floodfill router, you should open your firewall.")%> +<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> - + <%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%> + <%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%> + <%=intl._("Please open your firewall or disable inbound TCP above.")%> +<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> - + <%=intl._("You have configured inbound TCP, however you have disabled UDP.")%> + <%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%> + <%=intl._("Please open your firewall or enable UDP.")%> +<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> - + <%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%> + <%=intl._("Correct your clock setting if this error persists.")%> +<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> - + <%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%> + <%=intl._("Correct the address or disable inbound TCP above.")%> +<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> - + <%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%> + <%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%> +<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> - + <%=intl._("I2P was unable to bind to port 8887 or other configured port.")%> + <%=intl._("Check to see if another program is using port 8887. If so, stop that program or configure I2P to use a different port.")%> + <%=intl._("This may be a transient error, if the other program is no longer using the port.")%> + <%=intl._("However, a restart is always required after this error.")%> +<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> - + <%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%> + <%=intl._("Therefore your router cannot accept inbound connections.")%> + <%=intl._("Please configure a TCP host and port above or enable UDP.")%> +<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> - + <%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%> + <%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%> + </ul></p><hr> <!-- <b>Dynamic Router Keys: </b> <input type="checkbox" class="optbox" name="dynamicKeys" value="true" <jsp:getProperty name="nethelper" property="dynamicKeysChecked" /> /><br> diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index 00e4a193a19030fe0254466f329f0f3e5c140be9..2b506cd785a7633cc6da7512752a99d8438326df 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -2,8 +2,9 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config advanced</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config advanced")%> </head><body> <%@include file="summary.jsp" %> @@ -11,7 +12,7 @@ <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" /> <jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P Advanced Configuration</h1> +<h1><%=intl._("I2P Advanced Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -28,10 +29,10 @@ System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce")%>" /> <input type="hidden" name="action" value="blah" /> - <h3>Advanced I2P Configuration</h3> + <h3><%=intl._("Advanced I2P Configuration")%></h3> <textarea rows="32" cols="60" name="config" wrap="off"><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr> <div class="formaction"> - <input type="submit" name="shouldsave" value="Apply" /> - <input type="reset" value="Cancel" /><br> - <b>NOTE:</b> Some changes may require a restart to take effect. + <input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" /> + <input type="reset" value="<%=intl._("Cancel")%>" /><br> + <b><%=intl._("NOTE")%>:</b> <%=intl._("Some changes may require a restart to take effect.")%> </div></form></div></div></div></body></html> diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index 81efcd76b64d41dfc196d7fbe04971f5f727d40a..bff2fc5901382fbccdbdb32681ca0047ad823fac 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -2,8 +2,9 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config clients</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config clients")%> <style type='text/css'> button span.hide{ display:none; @@ -14,7 +15,7 @@ button span.hide{ <jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" /> <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P Client Configuration</h1> +<h1><%=intl._("I2P Client Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -29,29 +30,23 @@ button span.hide{ if (prev != null) System.setProperty("net.i2p.router.web.ConfigClientsHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigClientsHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigClientsHandler.nonce")%>" /> - <h3>Client Configuration</h3><p> - The Java clients listed below are started by the router and run in the same JVM. + <h3><%=intl._("Client Configuration")%></h3><p> + <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%> </p><div class="wideload"> <p><jsp:getProperty name="clientshelper" property="form1" /> - </p><p><i>To change other client options, edit the file -<%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>. -All changes require restart to take effect.</i> + </p><p><i><%=intl._("To change other client options, edit the file")%> + <%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>. + <%=intl._("All changes require restart to take effect.")%></i> </p><hr><div class="formaction"> - <input type="submit" name="action" value="Save Client Configuration" /> -</div></div><h3>WebApp Configuration</h3><p> - The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. - They are usually web applications accessible through the router console. - They may be complete applications (e.g. i2psnark), - front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), - or have no web interface at all (e.g. addressbook). + <input type="submit" name="action" value="<%=intl._("Save Client Configuration")%>" /> +</div></div><h3><%=intl._("WebApp Configuration")%></h3><p> + <%=intl._("The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook).")%> </p><p> - A web app may also be disabled by removing the .war file from the webapps directory; - however the .war file and web app will reappear when you update your router to a newer version, - so disabling the web app here is the preferred method. + <%=intl._("A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method.")%> </p><div class="wideload"><p> <jsp:getProperty name="clientshelper" property="form2" /> </p><p> - <i>All changes require restart to take effect.</i> + <i><%=intl._("All changes require restart to take effect.")%></i> </p><hr><div class="formaction"> - <input type="submit" name="action" value="Save WebApp Configuration" /> + <input type="submit" name="action" value="<%=intl._("Save WebApp Configuration")%>" /> </div></div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index 0c054a7d236590594ba9de8dee02d910d02729da..5a487edc372c98c01162b097f2e464f4613d1a98 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -2,12 +2,13 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config keyring</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config keyring")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Keyring Configuration</h1> +<h1><%=intl._("I2P Keyring Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -17,32 +18,30 @@ <jsp:getProperty name="formhandler" property="allMessages" /> <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" /> <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<div class="configure"><p><h3>Keyring</h3> - The router keyring is used to decrypt encrypted leaseSets. - The keyring may contain keys for local or remote encrypted destinations. +<div class="configure"><h2><%=intl._("Keyring")%></h2><p> + <%=intl._("The router keyring is used to decrypt encrypted leaseSets.")%> + <%=intl._("The keyring may contain keys for local or remote encrypted destinations.")%></p> <div class="wideload"><p> <jsp:getProperty name="keyringhelper" property="summary" /> </p></div> - <br> - <form action="configkeyring.jsp" method="POST"> <% String prev = System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce"); if (prev != null) System.setProperty("net.i2p.router.web.ConfigKeyringHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigKeyringHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigKeyringHandler.nonce")%>" /> - <h3>Manual Keyring Addition</h3> - Enter keys for encrypted remote destinations here. + <h3><%=intl._("Manual Keyring Addition")%></h3><p> + <%=intl._("Enter keys for encrypted remote destinations here.")%> Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>. - <p> +</p> <div class="wideload"> - <table><tr> - <td class="mediumtags" align="right">Dest. name, hash, or full key:</td> + <p><table><tr> + <td class="mediumtags" align="right"><%=intl._("Dest. name, hash, or full key")%>:</td> <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off"></textarea></td> </tr><tr> - <td class="mediumtags" align="right">Encryption Key:</td> + <td class="mediumtags" align="right"><%=intl._("Encryption Key")%>:</td> <td><input type="text" size="55" name="key" /></td> </tr><tr> - <td align="right" colspan="2"><input type="submit" name="action" value="Add key" /> - <input type="submit" name="action" value="Delete key" /> <input type="reset" value="Cancel" /></td> -</tr></table></div></form></div></div></body></html> + <td align="right" colspan="2"><input type="submit" name="action" value="<%=intl._("Add key")%>" /> + <input type="submit" name="action" value="<%=intl._("Delete key")%>" /> <input type="reset" value="<%=intl._("Cancel")%>" /></td> +</tr></table></p></div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index b4a08ee19c8f766e44935f60aba5c9d3f0a04175..39ac2b7f6248bc3b9c6238b5cce197940e01a1eb 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -3,14 +3,14 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> -<title>I2P Router Console - config logging</title> <%@include file="css.jsp" %> +<%=intl.title("config logging")%> </head><body> <jsp:useBean class="net.i2p.router.web.ConfigLoggingHelper" id="logginghelper" scope="request" /> <jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <%@include file="summary.jsp" %> -<h1>I2P Logging Configuration</h1> +<h1><%=intl._("I2P Logging Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -25,29 +25,29 @@ System.setProperty("net.i2p.router.web.ConfigLoggingHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce")%>" /> <input type="hidden" name="action" value="blah" /> - <h3>Configure I2P Logging Options</h3> + <h3><%=intl._("Configure I2P Logging Options")%></h3> <div class="wideload"> <table border="0" cellspacing="5"> - <tr><td class="mediumtags" align="right"><b>Logging filename:</b></td> + <tr><td class="mediumtags" align="right"><b><%=intl._("Logging filename")%>:</b></td> <td><input type="text" name="logfilename" size="40" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" /> - <br><i>(the symbol '@' will be replaced during log rotation)</i></td> - </tr><tr><td class="mediumtags" align="right"><b>Log record format:</b></td> + <br> <i><%=intl._("(the symbol '@' will be replaced during log rotation)")%></i></td> + </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log record format")%>:</b></td> <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" /> - <br> <i>(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, - 'm' = message)</i></td> - </tr><tr><td class="mediumtags" align="right"><b>Log date format:</b></td> + <br> <i><%=intl._("(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)")%> + </i></td> + </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log date format")%>:</b></td> <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" /> - <br> <i>('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' - = second, 'SSS' = millisecond)</i></td> - </tr><tr><td class="mediumtags" align="right"><b>Max log file size:</b></td> + <br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%> + </i></td> + </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Max log file size")%>:</b></td> <td><input type="text" name="logfilesize" size="4" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" /><br></td> - </tr><tr><td class="mediumtags" align="right"><b>Default log level:</b></td> - <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i>(DEBUG and INFO are not recommended defaults, - as they will drastically slow down your router)</i></td> - </tr><tr><td class="mediumtags" align="right"><b>Log level overrides:</b></td> + </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Default log level")%>:</b></td> + <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i><%=intl._("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%> + </i></td> + </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log level overrides")%>:</b></td> <td><jsp:getProperty name="logginghelper" property="logLevelTable" /></td> </tr><tr><td colspan="2"><hr></td> </tr><tr class="tablefooter"><td colspan="2"> <div class="formaction"> - <input type="submit" name="shouldsave" value="Save changes" /> - <input type="reset" value="Cancel" /> + <input type="submit" name="shouldsave" value="<%=intl._("Save changes")%>" /> + <input type="reset" value="<%=intl._("Cancel")%>" /> </div></td></tr></table></div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index b58d86fe18b0b68c6d0835958dc9107846e0bb60..24671ce51bbc184f797461039497ce2f16385923 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -2,12 +2,13 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config peers</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config peers")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Peer Configuration</h1> +<h1><%=intl._("I2P Peer Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -31,50 +32,41 @@ if (prev != null) System.setProperty("net.i2p.router.web.ConfigPeerHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigPeerHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigPeerHandler.nonce")%>" /> -<p> <a name="sh"> </a> <a name="unsh"> </a> <a name="bonus"> </a> - <h2>Manual Peer Controls</h2> - <div class="mediumtags">Router Hash: - <input type="text" size="55" name="peer" value="<%=peer%>" /></div> - <h3>Manually Ban / Unban a Peer</h3> - Banning will prevent the participation of this peer in tunnels you create. - <hr> + <h2><%=intl._("Manual Peer Controls")%></h2> + <div class="mediumtags"><p><%=intl._("Router Hash")%>: +<input type="text" size="55" name="peer" value="<%=peer%>" /></p></div> + <h3><%=intl._("Manually Ban / Unban a Peer")%></h3> + <p><%=intl._("Banning will prevent the participation of this peer in tunnels you create.")%></p> <div class="formaction"> - <input type="submit" name="action" value="Ban peer until restart" /> - <input type="submit" name="action" value="Unban peer" /> + <input type="submit" name="action" value="<%=intl._("Ban peer until restart")%>" /> + <input type="submit" name="action" value="<%=intl._("Unban peer")%>" /> <% if (! "".equals(peer)) { %> <!-- <font color="blue"><---- click to verify action</font> --> <% } %> </div> - <h3>Adjust Profile Bonuses</h3> - Bonuses may be positive or negative, and affect the peer's inclusion in Fast - and High Capacity tiers. Fast peers are used for client tunnels, and High - Capacity peers are used for some exploratory tunnels. Current bonuses are - displayed on the <a href="profiles.jsp">profiles page</a>. - <p> + <h3><%=intl._("Adjust Profile Bonuses")%></h3> + <p><%=intl._("Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the")%> <a href="profiles.jsp"><%=intl._("profiles page")%></a>.</p> <% long speed = 0; long capacity = 0; if (! "".equals(peer)) { // get existing bonus values? } %> - <hr> - <div class="mediumtags">Speed: + <div class="mediumtags"><p><%=intl._("Speed")%>: <input type="text" size="8" name="speed" value="<%=speed%>" /> - Capacity: + <%=intl._("Capacity")%>: <input type="text" size="8" name="capacity" value="<%=capacity%>" /> - <input type="submit" name="action" value="Adjust peer bonuses" /></div> - </p> + <input type="submit" name="action" value="<%=intl._("Adjust peer bonuses")%>" /></p></div> </form> <a name="shitlist"> </a> <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="profilesHelper" property="writer" value="<%=out%>" /> <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> - <hr> <div class="wideload"> <jsp:getProperty name="peerhelper" property="blocklistSummary" /> -</div></div></div></body></html> +</div><hr></div></div></body></html> diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index 45b5e435faa030e3d676598619c607a4930f3705..117623ddf0efca5c304e462d86d7de6ab8556c1d 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -2,12 +2,13 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config service</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config service")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Service Configuration</h1> +<h1><%=intl._("I2P Service Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -21,64 +22,58 @@ if (prev != null) System.setProperty("net.i2p.router.web.ConfigServiceHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigServiceHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigServiceHandler.nonce")%>" /> - <h3>Shutdown the router</h3> - <p>Graceful shutdown lets the router satisfy the agreements it has already made - before shutting down, but may take a few minutes. If you need to kill the - router immediately, that option is available as well.</p> + <h3><%=intl._("Shutdown the router")%></h3> + <p><%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> + <%=intl._("If you need to kill the router immediately, that option is available as well.")%></p> <hr><div class="formaction"> - <input type="submit" name="action" value="Shutdown gracefully" /> - <input type="submit" name="action" value="Shutdown immediately" /> - <input type="submit" name="action" value="Cancel graceful shutdown" /> + <input type="submit" name="action" value="<%=intl._("Shutdown gracefully")%>" /> + <input type="submit" name="action" value="<%=intl._("Shutdown immediately")%>" /> + <input type="submit" name="action" value="<%=intl._("Cancel graceful shutdown")%>" /> </div> <% if (System.getProperty("wrapper.version") != null) { %> - <p>If you want the router to restart itself after shutting down, you can choose one of - the following. This is useful in some situations - for example, if you changed - some settings that client applications only read at startup, such as the routerconsole password - or the interface it listens on. A graceful restart will take a few minutes (but your peers - will appreciate your patience), while a hard restart does so immediately. After tearing down - the router, it will wait 1 minute before starting back up again.</p> + <p><%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%> + <%=intl._("This is useful in some situations")%> - + <%=intl._("for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on.")%> + <%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%> + <%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%></p> <hr><div class="formaction"> - <input type="submit" name="action" value="Graceful restart" /> - <input type="submit" name="action" value="Hard restart" /> + <input type="submit" name="action" value="<%=intl._("Graceful restart")%>" /> + <input type="submit" name="action" value="<%=intl._("Hard restart")%>" /> <% } %></div> <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %> - <h3>Systray integration</h3> - <p>On the windows platform, there is a small application to sit in the system - tray, allowing you to view the router's status (later on, I2P client applications - will be able to integrate their own functionality into the system tray as well). - If you are on windows, you can either enable or disable that icon here.</p> + <h3><%=intl._("Systray integration")%></h3> + <p><%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%> + <%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%> + <%=intl._("If you are on windows, you can either enable or disable that icon here.")%></p> <hr><div class="formaction"> - <input type="submit" name="action" value="Show systray icon" /> - <input type="submit" name="action" value="Hide systray icon" /> -</div><h3>Run on startup</h3> - <p>You can control whether I2P is run on startup or not by selecting one of the - following options - I2P will install (or remove) a service accordingly. You can - also run the <code>install_i2p_service_winnt.bat</code> (or - <code>uninstall_i2p_service_winnt.bat</code>) from the command line, if you prefer.</p> + <input type="submit" name="action" value="<%=intl._("Show systray icon")%>" /> + <input type="submit" name="action" value="<%=intl._("Hide systray icon")%>" /> +</div><h3><%=intl._("Run on startup")%></h3> + <p><%=intl._("You can control whether I2P is run on startup or not by selecting one of the following options")%> - + <%=intl._("I2P will install (or remove) a service accordingly.")%> + <%=intl._("If you prefer the command line, you can also run the ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._("or")%> + <code>uninstall_i2p_service_winnt.bat</code>).</p> <hr><div class="formaction"> - <input type="submit" name="action" value="Run I2P on startup" /> -<input type="submit" name="action" value="Don't run I2P on startup" /></div> - <p><b>Note:</b> If you are running I2P as service right now, removing it will shut - down your router immediately. You may want to consider shutting down gracefully, as - above, then running uninstall_i2p_service_winnt.bat.</p> + <input type="submit" name="action" value="<%=intl._("Run I2P on startup")%>" /> +<input type="submit" name="action" value="<%=intl._("Don't run I2P on startup")%>" /></div> + <p><b><%=intl._("Note")%>:</b> <%=intl._("If you are running I2P as service right now, removing it will shut down your router immediately.")%> + <%=intl._("You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat.")%></p> <% } %> <% if (System.getProperty("wrapper.version") != null) { %> - <h3>Debugging</h3> - <p>At times, it may be helpful to debug I2P by getting a thread dump. To do so, - please select the following option and review the thread dumped to + <h3><%=intl._("Debugging")%></h3> + <p> At times, it may be helpful to debug I2P by getting a thread dump. + To do so, please select the following option and review the thread dumped to <a href="logs.jsp#servicelogs">wrapper.log</a>.</p> <hr><div class="formaction"> <input type="submit" name="action" value="Dump threads" /> <% } %></div> - <h3>Launch browser on router startup?</h3> - <p>I2P's main configuration interface is this web console, so for your convenience - I2P can launch a web browser pointing at - <a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> whenever - the router starts up.</p> + <h3><%=intl._("Launch browser on router startup?")%></h3> + <p><%=intl._("I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at")%> + <a href="http://127.0.0.1:7657/index.jsp">http://127.0.0.1:7657/index.jsp</a> .</p> <hr><div class="formaction"> - <input type="submit" name="action" value="View console on startup" /> - <input type="submit" name="action" value="Do not view console on startup" /> + <input type="submit" name="action" value="<%=intl._("View console on startup")%>" /> + <input type="submit" name="action" value="<%=intl._("Do not view console on startup")%>" /> </div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 122d035c3b9467244d83612ad6e2c89efcb64274..cfb2dd8ccd755c75f62a4199491210399e11efab 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -2,8 +2,9 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config stats</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config stats")%> <script type="text/javascript"> function init() { @@ -52,7 +53,7 @@ function toggleAll(category) </script> </head><body onLoad="init();"> <%@include file="summary.jsp" %> -<h1>I2P Stats Configuration</h1> +<h1><%=intl._("I2P Stats Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -70,25 +71,25 @@ function toggleAll(category) System.setProperty("net.i2p.router.web.ConfigStatsHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="action" value="foo" /> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigStatsHandler.nonce")%>" /> - <h3>Configure I2P Stat Collection</h3> - Enable full stats? + <h3><%=intl._("Configure I2P Stat Collection")%></h3> + <p><%=intl._("Enable full stats?")%> <input type="checkbox" class="optbox" name="isFull" value="true" <% if (statshelper.getIsFull()) { %>checked="true" <% } %>/> - (change requires restart to take effect)<br> - Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br> - Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<br> + (<%=intl._("change requires restart to take effect")%>)<br> + <%=intl._("Stat file")%>: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br> +<%=intl._("Filter")%>: (<a href="javascript: void(null);" onclick="toggleAll('*')"><%=intl._("toggle all")%></a>)<br></p> <div class="wideload"> - <table> + <p><table> <% while (statshelper.hasMoreStats()) { while (statshelper.groupRequired()) { %> <tr class="tablefooter"> <td align="left" colspan="3"> <b><%=statshelper.getCurrentGroupName()%></b> - (<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')">toggle all</a>) + (<a href="javascript: void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._("toggle all")%></a>) </td></tr> <tr class="tablefooter"> - <td align="center"><b>Log</b></td> - <td align="center"><b>Graph</b></td> + <td align="center"><b><%=intl._("Log")%></b></td> + <td align="center"><b><%=intl._("Graph")%></b></td> <td></td></tr> <% } // end iterating over required groups for the current stat %> @@ -105,7 +106,7 @@ function toggleAll(category) } // end iterating over all stats %> <tr><td colspan="3"></td></tr> <tr><td align="center"><input type="checkbox" class="optbox" name="explicitFilter" /></td> - <td colspan="2">Advanced filter: + <td colspan="2"><%=intl._("Advanced filter")%>: <input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" /></td></tr> <tr class="tablefooter"><td colspan="3" align="right"><input type="submit" name="shouldsave" value="Save changes" /><input type="reset" value="Cancel" /></td></tr> - </table></div></form></div></div></body></html> + </table></p></div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp index f9185a01aa1a6c1d826f2c0b27c621ea465745fb..01daf0ffe615943fb9efd343f743a9df46310d35 100644 --- a/apps/routerconsole/jsp/configtunnels.jsp +++ b/apps/routerconsole/jsp/configtunnels.jsp @@ -2,15 +2,16 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - config tunnels</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("config tunnels")%> </head><body> <%@include file="summary.jsp" %> <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHelper" id="tunnelshelper" scope="request" /> <jsp:setProperty name="tunnelshelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P Tunnel Configuration</h1> +<h1><%=intl._("I2P Tunnel Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" /> @@ -20,23 +21,23 @@ <jsp:setProperty name="formhandler" property="nonce" value="<%=request.getParameter("nonce")%>" /> <jsp:setProperty name="formhandler" property="settings" value="<%=request.getParameterMap()%>" /> <jsp:getProperty name="formhandler" property="allMessages" /> - <div class="configure"><p><i> - NOTE: The default settings work for most people. - There is a fundamental tradeoff between anonymity and performance. - Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), - or a high quantity + backup quantity, may severely reduce performance or reliability. - High CPU and/or high outbound bandwidth usage may result. - Change these settings with care, and adjust them if you have problems. - </i></p><div class="wideload"> - <form action="configtunnels.jsp" method="POST"> + <div class="configure"><p> + <%=intl._("NOTE")%>: + <%=intl._("The default settings work for most people.")%> + <%=intl._("There is a fundamental tradeoff between anonymity and performance.")%> + <%=intl._("Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability.")%> + <%=intl._("High CPU and/or high outbound bandwidth usage may result.")%> + <%=intl._("Change these settings with care, and adjust them if you have problems.")%> +<div class="wideload"> +<form action="configtunnels.jsp" method="POST"> <% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce"); if (prev != null) System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce")%>" /> <input type="hidden" name="action" value="blah" /> <jsp:getProperty name="tunnelshelper" property="form" /> - <i>Note - Exploratory tunnel setting changes are stored in the router.config file.</i><br> - <i>Client tunnel changes are temporary and are not saved.</i><br> - <i>To make permanent client tunnel changes see the </i><a href="i2ptunnel/index.jsp">i2ptunnel page</a>.<br> + <%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%> + <%=intl._("Client tunnel changes are temporary and are not saved.")%> +<%=intl._("To make permanent client tunnel changes see the")%> <a href="i2ptunnel/index.jsp"><%=intl._("i2ptunnel page")%></a>. <hr><div class="formaction"><input type="submit" name="shouldsave" value="Save changes" /> <input type="reset" value="Cancel" /></div> - </form></div></div></div></body></html> + </form></p></div></div></div></body></html> diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index 1bf276237c2a5b6e9816fb8991e72f4577f13d75..6ca14cede5ef6fa8d39bfdaba91cfadf3f797925 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.jsp @@ -4,7 +4,7 @@ <html><head> <%@include file="css.jsp" %> -<%=cssHelper.title("config UI")%> +<%=intl.title("config UI")%> </head><body> <%@include file="summary.jsp" %> @@ -21,7 +21,7 @@ <jsp:setProperty name="formhandler" property="*" /> <jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:getProperty name="formhandler" property="allMessages" /> -<div class="configure"><h3><%=uihelper._("Router Console Theme")%></h3> +<div class="configure"><div class="topshimten"><h3><%=uihelper._("Router Console Theme")%></h3></div> <form action="configui.jsp" method="POST"> <% String prev = System.getProperty("net.i2p.router.web.ConfigUIHandler.nonce"); if (prev != null) System.setProperty("net.i2p.router.web.ConfigUIHandler.noncePrev", prev); @@ -42,6 +42,6 @@ <jsp:getProperty name="uihelper" property="langSettings" /> <%=uihelper._("Please contribute to the router console translation project! Contact the developers on IRC #i2p to help.")%> <hr><div class="formaction"> -<input type="submit" name="shouldsave" value="Apply" > <input type="reset" value="Cancel" > +<input type="submit" name="shouldsave" value="<%=intl._("Apply")%>" > <input type="reset" value="<%=intl._("Cancel")%>" > </div></form></div> </div></body></html> diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index e7562de9f7106e1d9eec4cb853f6ec5cf6da6c85..c538a6c9ff6cba1504d1bbca4b64b97350694979 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -4,11 +4,11 @@ <html><head> <%@include file="css.jsp" %> -<%=cssHelper.title("config update")%> +<%=intl.title("config update")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Update Configuration</h1> +<h1><%=intl._("I2P Update Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -26,35 +26,35 @@ if (prev != null) System.setProperty("net.i2p.router.web.ConfigUpdateHandler.noncePrev", prev); System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %> <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" /> - <h3>Check for I2P and news updates</h3> + <h3><%=intl._("Check for I2P and news updates")%></h3> <div class="wideload"><table border="0" cellspacing="5"> <tr><td colspan="2"></tr> - <tr><td class= "mediumtags" align="right"><b>News & I2P Updates:</b></td> - <td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i>Update In Progress</i><br> <% } else { %> <input type="submit" name="action" value="Check for updates" /> + <tr><td class= "mediumtags" align="right"><b><%=intl._("News & I2P Updates")%>:</b></td> + <td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" value="<%=intl._("Check for updates")%>" /> <% } %></td></tr> <tr><td colspan="2"><br></td></tr> - <tr><td class= "mediumtags" align="right"><b>News URL:</b></td> + <tr><td class= "mediumtags" align="right"><b><%=intl._("News URL")%>:</b></td> <td><input type="text" size="60" name="newsURL" value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td> - </tr><tr><td class= "mediumtags" align="right"><b>Refresh frequency:</b> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Refresh frequency")%>:</b> <td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td><tr> <td class= "mediumtags" align="right"><b><%=formhandler._("Update policy")%>:</b></td> <td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td> - <tr><td class= "mediumtags" align="right"><b>Update through the eepProxy?</b></td> + <tr><td class= "mediumtags" align="right"><b><%=intl._("Update through the eepProxy?")%></b></td> <td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td> - </tr><tr><td class= "mediumtags" align="right"><b>eepProxy host:</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy host")%>:</b></td> <td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td> - </tr><tr><td class= "mediumtags" align="right"><b>eepProxy port:</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy port")%>:</b></td> <td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td> - </tr><tr><td class= "mediumtags" align="right"><b>Update URLs:</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Update URLs")%>:</b></td> <td><textarea name="updateURL" wrap="off"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td> - </tr><tr><td class= "mediumtags" align="right"><b>Trusted keys:</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Trusted keys")%>:</b></td> <td><textarea name="trustedKeys" wrap="off"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td> - </tr><tr><td class= "mediumtags" align="right"><b>Update with unsigned development builds?</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Update with unsigned development builds?")%></b></td> <td><jsp:getProperty name="updatehelper" property="updateUnsigned" /></td> - </tr><tr><td class= "mediumtags" align="right"><b>Unsigned Build URL:</b></td> + </tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Unsigned Build URL")%>:</b></td> <td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td> </tr><tr class="tablefooter"><td colspan="2"> <div class="formaction"> - <input type="submit" name="action" value="Save" /> - <input type="reset" value="Cancel" /> + <input type="submit" name="action" value="<%=intl._("Save")%>" /> + <input type="reset" value="<%=intl._("Cancel")%>" /> </div></td></tr></table></div></form></div></div></body></html> diff --git a/apps/routerconsole/jsp/css.jsp b/apps/routerconsole/jsp/css.jsp index 62aceaa93f44046e2945230d27da0f7b7929fbdf..613b32a6785538f0aa56feda521723e59c207638 100644 --- a/apps/routerconsole/jsp/css.jsp +++ b/apps/routerconsole/jsp/css.jsp @@ -23,17 +23,17 @@ %> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="shortcut icon" href="/themes/console/images/favicon.ico"> -<jsp:useBean class="net.i2p.router.web.CSSHelper" id="cssHelper" scope="request" /> -<jsp:setProperty name="cssHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> +<jsp:useBean class="net.i2p.router.web.CSSHelper" id="intl" scope="request" /> +<jsp:setProperty name="intl" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <% - cssHelper.setLang(request.getParameter("lang")); + intl.setLang(request.getParameter("lang")); %> -<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css"> +<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css"> <% // make the fonts bigger for chinese - if (cssHelper.getLang().equals("zh")) { + if (intl.getLang().equals("zh")) { %> -<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css"> +<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css"> <% } %> diff --git a/apps/routerconsole/jsp/error.jsp b/apps/routerconsole/jsp/error.jsp index f865e85d8be63a8e011dfc24a4055b23c5539adf..c2954316406d593f4df45edb8997ddd2b382650b 100644 --- a/apps/routerconsole/jsp/error.jsp +++ b/apps/routerconsole/jsp/error.jsp @@ -12,8 +12,9 @@ } // If it can't find the iframe or viewtheme.jsp I wonder if the whole thing blows up... %> -<html><head><title>I2P Router Console - Page Not Found</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("Page Not Found")%> </head><body> <% if (System.getProperty("router.consoleNonce") == null) { @@ -23,6 +24,6 @@ if (System.getProperty("router.consoleNonce") == null) { <%@include file="summary.jsp" %> <h1><%=ERROR_CODE%> <%=ERROR_MESSAGE%></h1> <div class="sorry" id="warning"> -Sorry! You appear to be requesting a non-existent Router Console page or resource.<hr> -Error 404: <%=ERROR_URI%> not found. +<%=intl._("Sorry! You appear to be requesting a non-existent Router Console page or resource.")%><hr> +<%=intl._("Error 404")%>: <%=ERROR_URI%> <%=intl._("not found")%>. </div></body></html> diff --git a/apps/routerconsole/jsp/graphs.jsp b/apps/routerconsole/jsp/graphs.jsp index 2a30675d945217146361b4a404081410849d3b0c..1ad8730416318b8f91a4818724585205d8c0f651 100644 --- a/apps/routerconsole/jsp/graphs.jsp +++ b/apps/routerconsole/jsp/graphs.jsp @@ -2,12 +2,13 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - graphs</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("graphs")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Performance Graphs</h1> +<h1><%=intl._("I2P Performance Graphs")%></h1> <div class="main" id="main"> <div class="graphspanel"> <div class="widepanel"> diff --git a/apps/routerconsole/jsp/help.jsp b/apps/routerconsole/jsp/help.jsp index 0ae11a95ae9515086b7e5da9041a47d03d156861..734b38c3dac37b8a9845167124b17177eaba038c 100644 --- a/apps/routerconsole/jsp/help.jsp +++ b/apps/routerconsole/jsp/help.jsp @@ -7,22 +7,22 @@ </head><body> <%@include file="summary.jsp" %> <h1>I2P Router Help & Support</h1> -<div class="main" id="main"><div align="justify"> +<div class="main" id="main"><p> If you'd like to help improve or translate the documentation, or help with other aspects of the project, please see the documentation for <a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a> -<br><br>Further assistance is available here:<br></div> +</p><p>Further assistance is available here: <ul class="links"> <li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a> -<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul><br> -You may also try the <a href="http://forum.i2p/">I2P forum</a> -or IRC.<br> +<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul> +</p><p>You may also try the <a href="http://forum.i2p/">I2P forum</a> +or IRC.</p> -<h2>Summary Bar Information</h2><div align="justify"> +<h2>Summary Bar Information</h2><p> Many of the stats on the summary bar may be <a href="configstats.jsp">configured</a> to be <a href="graphs.jsp">graphed</a> for further analysis. -</div><h3>General</h3><ul> +</p><h3>General</h3><ul> <li class="tidylist"><b>Ident:</b> The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash. The full hash is shown on your <a href="netdb.jsp?r=.">router info page</a>. @@ -75,7 +75,7 @@ The local applications connecting through your router. These may be clients started through <a href="i2ptunnel/index.jsp">I2PTunnel</a> or external programs connecting through SAM, BOB, or directly to I2CP. </div><h3>Tunnels in/out</h3><div align="justify"> -The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><br><ul> +The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><ul> <li class="tidylist"><div align="justify"><b>Exploratory:</b> Tunnels built by your router and used for communication with the floodfill peers, building new tunnels, and testing existing tunnels.</div> @@ -91,7 +91,7 @@ You may also limit the total number by setting <tt>router.maxParticipatingTunnel the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</ul> <h3>Congestion</h3><div align="justify"> -Some basic indications of router overload:</div><br><ul> +Some basic indications of router overload:</div><ul> <li class="tidylist"><b>Job lag:</b> How long jobs are waiting before execution. The job queue is listed on the <a href="jobs.jsp">jobs page</a>. Unfortunately, there are several other job queues in the router that may be congested, @@ -129,9 +129,8 @@ or reject all requests for a number of reasons, to control the bandwidth and CPU demands and maintain capacity for local clients.</ul> -<h2>Legal stuff</h2><div align="justify"> -The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with -a few notable exceptions:</div><br><ul> +<h2>Legal stuff</h2><p>The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with +a few notable exceptions:</p><ul> <li class="tidylist">ElGamal and DSA code, under the BSD license, written by TheCrypto</li> <li class="tidylist">SHA256 and HMAC-SHA256, under the MIT license, written by the Legion of the Bouncycastle</li> <li class="tidylist">AES code, under the Cryptix (MIT) license, written by the Cryptix team</li> diff --git a/apps/routerconsole/jsp/index.jsp b/apps/routerconsole/jsp/index.jsp index d2ce8ffc2d36517c0ca03aec0826c66e79c7bba4..2fbfb6dc113baeb977383cb4fcb61e50a89b79e9 100644 --- a/apps/routerconsole/jsp/index.jsp +++ b/apps/routerconsole/jsp/index.jsp @@ -4,7 +4,7 @@ <html><head> <%@include file="css.jsp" %> -<title>I2P Router Console - home</title> +<%=intl.title("home")%> </head><body> <% if (System.getProperty("router.consoleNonce") == null) { @@ -12,7 +12,7 @@ if (System.getProperty("router.consoleNonce") == null) { } %> -<%@include file="summary.jsp" %><h1>I2P Router Console</h1> +<%@include file="summary.jsp" %><h1><%=intl._("I2P Router Console")%></h1> <div class="news" id="news"> <jsp:useBean class="net.i2p.router.web.ContentHelper" id="newshelper" scope="request" /> <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml"); %> diff --git a/apps/routerconsole/jsp/jobs.jsp b/apps/routerconsole/jsp/jobs.jsp index d75207c84d09ed130d4470083d7bc598cf1ca8ea..c53ea0a445fbf4ea60fb88942a4161a8d687e5a5 100644 --- a/apps/routerconsole/jsp/jobs.jsp +++ b/apps/routerconsole/jsp/jobs.jsp @@ -2,13 +2,14 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - job queue</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("job queue")%> </head><body> -<%@include file="summary.jsp" %><h1>I2P Router Job Queue</h1> +<%@include file="summary.jsp" %><h1><%=intl._("I2P Router Job Queue")%></h1> <div class="main" id="main"> <jsp:useBean class="net.i2p.router.web.JobQueueHelper" id="jobQueueHelper" scope="request" /> <jsp:setProperty name="jobQueueHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="jobQueueHelper" property="writer" value="<%=out%>" /> <jsp:getProperty name="jobQueueHelper" property="jobQueueSummary" /> -</div></body></html> +<hr></div></body></html> diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp index 3cca63d2d4f800569710a1230ed71bfe3922f36f..859aba705d4a273d2551eac5d53dfeb30bc1ea0b 100644 --- a/apps/routerconsole/jsp/logs.jsp +++ b/apps/routerconsole/jsp/logs.jsp @@ -2,27 +2,28 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - logs</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("logs")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Router Logs</h1> +<h1><%=intl._("I2P Router Logs")%></h1> <div class="main" id="main"> - <div class="joblog"><h3>Version:</h3><a name="version"> </a> - Please include this information in bug reports. + <div class="joblog"><h3><%=intl._("I2P Version & Running Environment")%></h3><a name="version"> </a> + <i><%=intl._("Please include this information in bug reports")%>:</i> <p> -I2P <jsp:getProperty name="helper" property="version" /><br> -<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br> -<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br> -CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br> -jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%><br> -Encoding <%=System.getProperty("file.encoding")%><br></p><br> +<b>I2P version:</b> <jsp:getProperty name="helper" property="version" /><br> +<b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%><br> +<b>Platform:</b> <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%><br> +<b>Processor:</b> <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)<br> +<b>Jbigi:</b> <%=net.i2p.util.NativeBigInteger.loadStatus()%><br> +<b>Encoding:</b> <%=System.getProperty("file.encoding")%></p> <jsp:useBean class="net.i2p.router.web.LogsHelper" id="logsHelper" scope="request" /> <jsp:setProperty name="logsHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> - <h3>Critical logs:</h3><a name="criticallogs"> </a> - <jsp:getProperty name="logsHelper" property="criticalLogs" /><br> - <h3>Router logs (<a href="configlogging.jsp">configure</a>):</h3> - <jsp:getProperty name="logsHelper" property="logs" /><br> - <h3>Service (Wrapper) logs:</h3><a name="servicelogs"> </a> + <h3>Critical Logs</h3><a name="criticallogs"> </a> + <jsp:getProperty name="logsHelper" property="criticalLogs" /> + <h3>Router Logs [<a href="configlogging.jsp">configure</a>]</h3> + <jsp:getProperty name="logsHelper" property="logs" /> + <h3>Service (Wrapper) Logs</h3><a name="servicelogs"> </a> <jsp:getProperty name="logsHelper" property="serviceLogs" /> -</div></div></body></html> +</div><hr></div></body></html> diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp index 83136b1137273a042e529b7c2c32661497abf8f3..bc954d2bfff7bc80c3c96546e9c4703f474cf81d 100644 --- a/apps/routerconsole/jsp/netdb.jsp +++ b/apps/routerconsole/jsp/netdb.jsp @@ -3,11 +3,11 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> -<title>I2P Router Console - network database summary</title> <%@include file="css.jsp" %> +<%=intl.title("network database summary")%> </head><body> <%@include file="summary.jsp" %> - <h1>I2P Network Database Summary</h1> + <h1><%=intl._("I2P Network Database Summary")%></h1> <div class="main" id="main"> <div class="wideload"> <jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" /> diff --git a/apps/routerconsole/jsp/oldstats.jsp b/apps/routerconsole/jsp/oldstats.jsp index 39f6c73d82309909c2e25623c1bddaf2eda0a832..7617ec565cd9b98c6b36b695df03a16ec272d3c9 100644 --- a/apps/routerconsole/jsp/oldstats.jsp +++ b/apps/routerconsole/jsp/oldstats.jsp @@ -2,14 +2,15 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - statistics</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("statistics")%> </head><body> <%@include file="summary.jsp" %> <jsp:useBean class="net.i2p.router.web.OldConsoleHelper" id="oldhelper" scope="request" /> <jsp:setProperty name="oldhelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="oldhelper" property="writer" value="<%=out%>" /> - <h1>I2P Router Statistics</h1> + <h1><%=intl._("I2P Router Statistics")%></h1> <div class="main" id="main"> <jsp:getProperty name="oldhelper" property="stats" /> -</div></body></html> +<hr></div></body></html> diff --git a/apps/routerconsole/jsp/peers.jsp b/apps/routerconsole/jsp/peers.jsp index 19b1d676729a2e2f7e0bda9a7e57ebde3dbc7459..351ad10b6a01ee71ce83da31666f15efd03b5aab 100644 --- a/apps/routerconsole/jsp/peers.jsp +++ b/apps/routerconsole/jsp/peers.jsp @@ -2,11 +2,12 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - peer connections</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("peer connections")%> </head><body> <%@include file="summary.jsp" %> -<h1>I2P Network Peers</h1> +<h1><%=intl._("I2P Network Peers")%></h1> <div class="main" id="main"> <jsp:useBean class="net.i2p.router.web.PeerHelper" id="peerHelper" scope="request" /> <jsp:setProperty name="peerHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp index 6eae2642fd08f1f8a3176ec4395629db4c000226..6064067ff9d39f3b2461605ca9feb7a7532fc915 100644 --- a/apps/routerconsole/jsp/profiles.jsp +++ b/apps/routerconsole/jsp/profiles.jsp @@ -2,16 +2,16 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - peer profiles</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("peer profiles")%> </head><body><%@include file="summary.jsp" %> -<h1>I2P Network Peer Profiles</h1> +<h1><%=intl._("I2P Network Peer Profiles")%></h1> <div class="main" id="main"><div class="wideload"> <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" /> <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> <jsp:setProperty name="profilesHelper" property="writer" value="<%=out%>" /> <jsp:getProperty name="profilesHelper" property="profileSummary" /> - <br> <a name="shitlist"> </a> <jsp:getProperty name="profilesHelper" property="shitlistSummary" /> -</div></div></body></html> +<hr></div></div></body></html> diff --git a/apps/routerconsole/jsp/summary.jsp b/apps/routerconsole/jsp/summary.jsp index c7672d4f3fa39dde85d33a4fd64e94bcdd1c00b1..87bcaf0a01430a2c0b2172c3d911064512813468 100644 --- a/apps/routerconsole/jsp/summary.jsp +++ b/apps/routerconsole/jsp/summary.jsp @@ -22,10 +22,10 @@ } else { // since we don't have an iframe this will reload the base page, and // the new delay will be passed to the iframe above - out.print("<form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n"); + out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n"); out.print("<b>Refresh (s):</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n"); out.print("<button type=\"submit\">Enable</button>\n"); - out.print("</form></div>\n"); + out.print("</form></div></div>\n"); } %> </div> diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp index 5d1d9eb2b95290d5b670535b26738c8c5972e72a..26c6cb3289279479334b8bb5470816a839fba69b 100644 --- a/apps/routerconsole/jsp/summaryframe.jsp +++ b/apps/routerconsole/jsp/summaryframe.jsp @@ -53,14 +53,14 @@ <% // d and shutdownSoon defined above if (!shutdownSoon) { - out.print("<hr><form action=\"summaryframe.jsp\" method=\"GET\">\n"); + out.print("<hr><div class=\"refresh\"><form action=\"summaryframe.jsp\" method=\"GET\">\n"); if ("0".equals(d)) { - out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" align=\"right\" />\n"); - out.print("<button type=\"submit\">Enable</button>\n"); + out.print("<b>Refresh (s):<b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n"); + out.print("<button type=\"submit\">Enable</button></div>\n"); } else { // this will load in the iframe but subsequent pages will not have the iframe out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" />\n"); - out.print("<button type=\"submit\">Disable " + d + "s Refresh</button>\n"); + out.print("<button type=\"submit\">Disable " + d + "s Refresh</button></div>\n"); } out.print("</form><hr>\n"); } diff --git a/apps/routerconsole/jsp/tunnels.jsp b/apps/routerconsole/jsp/tunnels.jsp index e58ac07af2c9fe806e4eaf9679af2bb2c2c8fc13..9c126be703f0d0bf3c09e233ce70759de11654c5 100644 --- a/apps/routerconsole/jsp/tunnels.jsp +++ b/apps/routerconsole/jsp/tunnels.jsp @@ -2,10 +2,11 @@ <%@page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><title>I2P Router Console - tunnel summary</title> +<html><head> <%@include file="css.jsp" %> +<%=intl.title("tunnel summary")%> </head><body> -<%@include file="summary.jsp" %><h1>I2P Tunnel Summary</h1> +<%@include file="summary.jsp" %><h1><%=intl._("I2P Tunnel Summary")%></h1> <div class="main" id="main"> <jsp:useBean class="net.i2p.router.web.TunnelHelper" id="tunnelHelper" scope="request" /> <jsp:setProperty name="tunnelHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po index 905828c4d097225a891fb0a58699c6c90033d429..329868bad43bf08aa63697d1b3da5881df708511 100644 --- a/apps/routerconsole/locale/messages_de.po +++ b/apps/routerconsole/locale/messages_de.po @@ -1,281 +1,2196 @@ -# I2P -# Copyright (C) 2009 The I2P Project -# This file is distributed under the same license as the routerconsole package. -# To contribute translations, see http://www.i2p2.de/newdevelopers -# foo <foo@bar>, 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: I2P routerconsole\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-20 11:55+0000\n" -"PO-Revision-Date: 2009-10-19 12:50+0000\n" -"Last-Translator: foo <foo@bar>\n" -"Language-Team: foo <foo@bar>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: German\n" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:95 -msgid "config update" -msgstr "config update in german test test test" - -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 -msgid "Update policy" -msgstr "Update policy in german foobarbaz" - -#: src/net/i2p/router/web/CSSHelper.java:36 -#: src/net/i2p/router/web/SummaryBarRenderer.java:26 -#: src/net/i2p/router/web/SummaryBarRenderer.java:28 -msgid "I2P Router Console" -msgstr "" - -#: src/net/i2p/router/web/ConfigUpdateHelper.java:90 -msgid "Notify only" -msgstr "Notify only in german" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:42 -msgid "I2P Services" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:48 -msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:50 -msgid "Addressbook" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:54 -msgid "Built-in anonymous BitTorrent Client" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:56 -msgid "Torrents" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:60 -msgid "Anonymous webmail client" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:62 -msgid "Webmail" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:66 -msgid "Anonymous resident webserver" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:68 -msgid "Webserver" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:72 -msgid "Configure I2P Router" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:74 -msgid "I2P Internals" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:80 -#: src/net/i2p/router/web/SummaryBarRenderer.java:344 -msgid "View existing tunnels and tunnel build status" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:82 -msgid "Tunnels" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:86 -#: src/net/i2p/router/web/SummaryBarRenderer.java:221 -msgid "Show all current peer connections" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:88 -#: src/net/i2p/router/web/SummaryBarRenderer.java:223 -msgid "Peers" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:92 -msgid "Show recent peer performance profiles" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:94 -msgid "Profiles" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:98 -msgid "Show list of all known I2P routers" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:100 -msgid "NetDB" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:104 -msgid "Health Report" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:106 -msgid "Logs" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:110 -msgid "Show the router's workload, and how it's performing" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:112 -msgid "Jobs" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:116 -msgid "Graph router performance" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:118 -msgid "Graphs" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:122 -msgid "Textual router performance statistics" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:124 -msgid "Stats" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:134 -msgid "I2P Router Help" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:136 -msgid "General" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:139 -msgid "Your unique I2P router identity is" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:143 -msgid "never reveal it to anyone" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:145 -msgid "Local Identity" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:150 -msgid "Version" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:157 -msgid "How long we've been running for this session" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:160 -msgid "Uptime" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:167 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:194 -msgid "Download" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:198 -#: src/net/i2p/router/web/SummaryBarRenderer.java:207 -msgid "Update" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:203 -msgid "Download Unsigned" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:229 -msgid "Active" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:237 -msgid "Fast" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:243 -msgid "High capacity" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:249 -msgid "Integrated" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:255 -msgid "Known" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:270 -msgid "Help with firewall configuration" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:272 -msgid "Check NAT/firewall" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:309 -msgid "Configure router bandwidth allocation" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:311 -msgid "Bandwidth in/out" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:328 -msgid "Total" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:336 -msgid "Used" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:346 -msgid "Tunnels in/out" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:351 -msgid "Exploratory" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:359 -msgid "Client" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:367 -msgid "Participating" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:373 -msgid "What's in the router's job queue?" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:375 -msgid "Congestion" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:380 -msgid "Job lag" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:386 -msgid "Message delay" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:392 -msgid "Tunnel lag" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:398 -msgid "Backlog" -msgstr "" +# I2P +# Copyright (C) 2009 The I2P Project +# This file is distributed under the same license as the routerconsole package. +# To contribute translations, see http://www.i2p2.de/newdevelopers +# foo <foo@bar>, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: I2P routerconsole\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-10-26 10:43+0000\n" +"PO-Revision-Date: 2009-10-19 12:50+0000\n" +"Last-Translator: foo <foo@bar>\n" +"Language-Team: foo <foo@bar>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: German\n" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +msgid "config networking" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:233 +msgid "I2P Network Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:331 +msgid "Bandwidth limiter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +msgid "" +"I2P will work best if you configure your rates to match the speed of your " +"internet connection." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:337 +msgid "KBps In" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +msgid "KBps Out" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357 +msgid "Share" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +msgid "NOTE" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 +msgid "" +"Please enable sharing (participating in tunnels) by configuring more " +"bandwidth. " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 +msgid "" +"It improves your anonymity by creating cover traffic, and helps the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:368 +msgid "You have configured I2P to share" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 +msgid "" +"The higher the share bandwidth the more you improve your anonymity and help " +"the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 +#: src/net/i2p/router/web/ConfigNetHandler.java:47 +#: src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Save changes" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:390 +msgid "Cancel" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +msgid "IP and Transport Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +msgid "The default settings will work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 +msgid "UPnP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "Enable UPnP to open firewall ports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +msgid "UPnP status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +msgid "IP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 +msgid "Externally reachable hostname or IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 +msgid "Use all auto-detect methods" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:401 +msgid "Disable UPnP IP address detection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 +msgid "Ignore local interface IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +msgid "Use SSU IP address detection only" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +msgid "Specify hostname or IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +msgid "Select Interface" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:370 +msgid "or" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "Hidden mode - do not publish IP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +msgid "(prevents participating traffic)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:437 +msgid "UDP Configuration:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "UDP port:" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:447 +msgid "TCP Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 +msgid "Use auto-detected IP address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:487 +msgid "currently" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "if we are not firewalled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 +msgid "Disable inbound (Firewalled)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 +msgid "Completely disable" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "" +"(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:481 +msgid "Externally reachable TCP port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Use the same port configured for UDP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Specify Port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:363 +msgid "Note" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:500 +msgid "Changing these settings will restart your router." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:506 +msgid "Configuration Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +msgid "" +"While I2P will work fine behind most firewalls, your speeds and network " +"integration will generally improve if the I2P port (generally 8887) is " +"forwarded for both UDP and TCP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:510 +msgid "" +"If you can, please poke a hole in your firewall to allow unsolicited UDP and " +"TCP packets to reach you." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +msgid "" +"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole " +"punching with \"SSU introductions\" to relay traffic." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +msgid "" +"Most of the options above are for special situations, for example where UPnP " +"does not work correctly, or a firewall not under your control is doing harm." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +msgid "" +"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect " +"the external IP address and forward ports." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +msgid "No UPnP-compatible device present" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +msgid "UPnP disabled on the device" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +msgid "Software firewall interference with UPnP" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +msgid "Bugs in the device's UPnP implementation" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +msgid "UPnP device change, reset, or address change" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +msgid "" +"UPnP may be enabled or disabled above, but a change requires a router " +"restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 +msgid "Hostnames entered above will be published in the network database." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +msgid "" +"If you specify the wrong IP address or hostname, or do not properly " +"configure your NAT or firewall, your network performance will degrade " +"substantially." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +msgid "When in doubt, leave the settings at the defaults." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +msgid "Reachability Help" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "" +"If you think you have opened up your firewall and I2P still thinks you are " +"firewalled, remember that you may have multiple firewalls, for example both " +"software packages and external hardware routers." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "OK" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +msgid "Your UDP port does not appear to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "Firewalled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "Your UDP port appears to be firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +msgid "" +"As the firewall detection methods are not 100% reliable, this may " +"occasionally be displayed in error." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +msgid "" +"However, if it appears consistently, you should check whether both your " +"external and internal firewalls are open on port 8887." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "" +"I2P will work fine when firewalled, there is no reason for concern. When " +"firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +msgid "" +"However, you will get more participating traffic and help the network more " +"if you can open your firewall(s)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "" +"If you think you have already done so, remember that you may have both a " +"hardware and a software firewall, or be behind an additional, institutional " +"firewall you cannot control." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "" +"Also, some routers cannot correctly forward both TCP and UDP on a single " +"port, or may have other limitations or bugs that prevent them from passing " +"traffic through to I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +msgid "Testing" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +msgid "The router is currently testing whether your UDP port is firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 +#: src/net/i2p/router/web/NetDbRenderer.java:237 +msgid "Hidden" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +msgid "" +"The router is not configured to publish its address, therefore it does not " +"expect incoming connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "WARN - Firewalled and Fast" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "" +"You have configured I2P to share more than 128KBps of bandwidth, but you are " +"firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +msgid "" +"While I2P will work fine in this configuration, if you really have over " +"128KBps of bandwidth to share, it will be much more helpful to the network " +"if you open your firewall." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +msgid "WARN - Firewalled and Floodfill" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +msgid "" +"You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +msgid "" +"For best participation as a floodfill router, you should open your firewall." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +msgid "" +"You have configured inbound TCP, however your UDP port is firewalled, and " +"therefore it is likely that your TCP port is firewalled as well." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +msgid "" +"If your TCP port is firewalled with inbound TCP enabled, routers will not be " +"able to contact you via TCP, which will hurt the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "" +"You appear to be firewalled on TCP, therefore your router cannot accept " +"inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +msgid "Please open your firewall or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "ERR - Clock Skew" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "" +"Your system's clock is skewed, which will make it difficult to participate " +"in the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +msgid "Correct your clock setting if this error persists." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "ERR - Private TCP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "" +"You must never advertise an unroutable IP address such as 127.0.0.1 or " +"192.168.1.1 as your external address." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "Correct the address or disable inbound TCP above." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +msgid "ERR - SymmetricNAT" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +msgid "" +"I2P does not work well behind this type of firewall. You will probably not " +"be able to accept inbound connections, which will limit your participation " +"in the network." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +msgid "" +"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config " +"and restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +msgid "I2P was unable to bind to port 8887 or other configured port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "" +"Check to see if another program is using port 8887. If so, stop that program " +"or configure I2P to use a different port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +msgid "" +"This may be a transient error, if the other program is no longer using the " +"port." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +msgid "However, a restart is always required after this error." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +msgid "" +"You have not configured inbound TCP with a hostname and port above, however " +"you have disabled UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +msgid "Therefore your router cannot accept inbound connections." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "Please configure a TCP host and port above or enable UDP." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +msgid "ERR - Client Manager I2CP Error - check logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +msgid "" +"Do you have another I2P instance running? Stop the conflicting program and " +"restart I2P." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +msgid "config advanced" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:234 +msgid "I2P Advanced Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:333 +msgid "Advanced I2P Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:355 +msgid "Apply" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:343 +msgid "Some changes may require a restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +msgid "config clients" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:233 +msgid "I2P Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340 +msgid "Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:342 +msgid "" +"The Java clients listed below are started by the router and run in the same " +"JVM." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346 +msgid "To change other client options, edit the file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:365 +msgid "All changes require restart to take effect." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 +#: src/net/i2p/router/web/ConfigClientsHandler.java:32 +msgid "Save Client Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "WebApp Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "" +"The Java web applications listed below are started by the webConsole client " +"and run in the same JVM as the router. They are usually web applications " +"accessible through the router console. They may be complete applications (e." +"g. i2psnark),front-ends to another client or application which must be " +"separately enabled (e.g. susidns, i2ptunnel), or have no web interface at " +"all (e.g. addressbook)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 +msgid "" +"A web app may also be disabled by removing the .war file from the webapps " +"directory; however the .war file and web app will reappear when you update " +"your router to a newer version, so disabling the web app here is the " +"preferred method." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 +#: src/net/i2p/router/web/ConfigClientsHandler.java:34 +msgid "Save WebApp Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +msgid "config keyring" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +msgid "I2P Keyring Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 +msgid "Keyring" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 +msgid "" +"The keyring may contain keys for local or remote encrypted destinations." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 +msgid "Manual Keyring Addition" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 +msgid "Enter keys for encrypted remote destinations here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:345 +msgid "Dest. name, hash, or full key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:347 +msgid "Encryption Key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:349 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:18 +msgid "Add key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:351 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:19 +msgid "Delete key" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +msgid "config logging" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +msgid "I2P Logging Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 +msgid "Configure I2P Logging Options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +msgid "Logging filename" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +msgid "Log record format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:345 +msgid "" +"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 +msgid "Log date format" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:351 +msgid "" +"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' " +"= millisecond)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 +msgid "Max log file size" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +msgid "Default log level" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:361 +msgid "" +"(DEBUG and INFO are not recommended defaults, as they will drastically slow " +"down your router)" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:363 +msgid "Log level overrides" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +msgid "config peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +msgid "I2P Peer Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338 +msgid "Manual Peer Controls" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:340 +msgid "Router Hash" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344 +msgid "Manually Ban / Unban a Peer" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:346 +msgid "" +"Banning will prevent the participation of this peer in tunnels you create." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:348 +#: src/net/i2p/router/web/ConfigPeerHandler.java:20 +msgid "Ban peer until restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:350 +#: src/net/i2p/router/web/ConfigPeerHandler.java:28 +msgid "Unban peer" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:356 +#: src/net/i2p/router/web/ConfigPeerHandler.java:39 +msgid "Adjust Profile Bonuses" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:358 +msgid "" +"Bonuses may be positive or negative, and affect the peer's inclusion in Fast " +"and High Capacity tiers. Fast peers are used for client tunnels, and High " +"Capacity peers are used for some exploratory tunnels. Current bonuses are " +"displayed on the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:360 +msgid "profiles page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:368 +msgid "Speed" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:372 +msgid "Capacity" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:376 +msgid "Adjust peer bonuses" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +msgid "config service" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +msgid "I2P Service Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +msgid "Shutdown the router" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320 +msgid "" +"Graceful shutdown lets the router satisfy the agreements it has already made " +"before shutting down, but may take a few minutes." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +msgid "" +"If you need to kill the router immediately, that option is available as well." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 +#: src/net/i2p/router/web/ConfigServiceHandler.java:53 +msgid "Shutdown gracefully" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +#: src/net/i2p/router/web/ConfigServiceHandler.java:57 +msgid "Shutdown immediately" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +#: src/net/i2p/router/web/ConfigServiceHandler.java:61 +msgid "Cancel graceful shutdown" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332 +msgid "" +"If you want the router to restart itself after shutting down, you can choose " +"one of the following." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 +msgid "This is useful in some situations" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336 +msgid "" +"for example, if you changed some settings that client applications only read " +"at startup, such as the routerconsole password or the interface it listens " +"on." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 +msgid "" +"A graceful restart will take a few minutes (but your peers will appreciate " +"your patience), while a hard restart does so immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 +msgid "" +"After tearing down the router, it will wait 1 minute before starting back up " +"again." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +#: src/net/i2p/router/web/ConfigServiceHandler.java:64 +msgid "Graceful restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:344 +#: src/net/i2p/router/web/ConfigServiceHandler.java:68 +msgid "Hard restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:350 +msgid "Systray integration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +msgid "" +"On the windows platform, there is a small application to sit in the system " +"tray, allowing you to view the router's status" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 +msgid "" +"(later on, I2P client applications will be able to integrate their own " +"functionality into the system tray as well)." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:356 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +#: src/net/i2p/router/web/ConfigServiceHandler.java:91 +msgid "Show systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +#: src/net/i2p/router/web/ConfigServiceHandler.java:103 +msgid "Hide systray icon" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 +msgid "Run on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 +msgid "" +"You can control whether I2P is run on startup or not by selecting one of the " +"following options" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:366 +msgid "I2P will install (or remove) a service accordingly." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:368 +msgid "If you prefer the command line, you can also run the " +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:372 +#: src/net/i2p/router/web/ConfigServiceHandler.java:80 +msgid "Run I2P on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:374 +#: src/net/i2p/router/web/ConfigServiceHandler.java:82 +msgid "Don't run I2P on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:378 +msgid "" +"If you are running I2P as service right now, removing it will shut down your " +"router immediately." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:380 +msgid "" +"You may want to consider shutting down gracefully, as above, then running " +"uninstall_i2p_service_winnt.bat." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:388 +msgid "Debugging" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:392 +msgid "Launch browser on router startup?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:394 +msgid "" +"I2P's main configuration interface is this web console, so for your " +"convenience I2P can launch a web browser on startup pointing at" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:396 +#: src/net/i2p/router/web/ConfigServiceHandler.java:115 +msgid "View console on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:398 +#: src/net/i2p/router/web/ConfigServiceHandler.java:118 +msgid "Do not view console on startup" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +msgid "config stats" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +msgid "I2P Stats Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:334 +msgid "Configure I2P Stat Collection" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:336 +msgid "Enable full stats?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:343 +msgid "change requires restart to take effect" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:345 +msgid "Stat file" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:349 +msgid "Filter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:360 +msgid "toggle all" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:362 +msgid "Log" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:364 +msgid "Graph" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 +msgid "Advanced filter" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +msgid "config tunnels" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:233 +msgid "I2P Tunnel Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +msgid "The default settings work for most people." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:346 +msgid "" +"Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 " +"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely " +"reduce performance or reliability." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:349 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:352 +msgid "Change these settings with care, and adjust them if you have problems." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:366 +msgid "" +"Exploratory tunnel setting changes are stored in the router.config file." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:369 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:371 +msgid "To make permanent client tunnel changes see the" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:373 +msgid "i2ptunnel page" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +msgid "config UI" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:233 +msgid "I2P UI Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:325 +msgid "Router Console Theme" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:343 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 +msgid "" +"If you're not using IE, it's likely that your browser is pretending to be " +"IE; please configure your browser (or proxy) to use a different User Agent " +"string if you'd like to access the console themes." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 +msgid "Router Console Language" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 +msgid "" +"Please contribute to the router console translation project! Contact the " +"developers on IRC #i2p to help." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +msgid "config update" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +msgid "I2P Update Configuration" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +msgid "Check for I2P and news updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:336 +msgid "News & I2P Updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:340 +msgid "Update In Progress" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:344 +#: src/net/i2p/router/web/ConfigUpdateHandler.java:54 +msgid "Check for updates" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:348 +msgid "News URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:352 +msgid "Refresh frequency" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:356 +msgid "Update policy" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360 +msgid "Update through the eepProxy?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:364 +msgid "eepProxy host" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:368 +msgid "eepProxy port" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:372 +msgid "Update URLs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:376 +msgid "Trusted keys" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:380 +msgid "Update with unsigned development builds?" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:384 +msgid "Unsigned Build URL" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:388 +msgid "Save" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +msgid "Page Not Found" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:241 +msgid "" +"Sorry! You appear to be requesting a non-existent Router Console page or " +"resource." +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243 +msgid "Error 404" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:248 +msgid "not found" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +msgid "graphs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +msgid "I2P Performance Graphs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +msgid "home" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: src/net/i2p/router/web/CSSHelper.java:41 +#: src/net/i2p/router/web/SummaryBarRenderer.java:26 +#: src/net/i2p/router/web/SummaryBarRenderer.java:28 +msgid "I2P Router Console" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +msgid "job queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +msgid "I2P Router Job Queue" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +msgid "logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +msgid "I2P Router Logs" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:221 +msgid "I2P Version & Running Environment" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:223 +msgid "Please include this information in bug reports" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +msgid "network database summary" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +msgid "I2P Network Database Summary" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldstats_jsp.java:105 +msgid "statistics" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldstats_jsp.java:234 +msgid "I2P Router Statistics" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +msgid "peer connections" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +msgid "I2P Network Peers" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +msgid "peer profiles" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +msgid "I2P Network Peer Profiles" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +msgid "tunnel summary" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +msgid "I2P Tunnel Summary" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:59 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:49 +msgid "Unsupported" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:74 +msgid "" +"Client configuration saved successfully - restart required to take effect." +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:80 +msgid "Bad client index." +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:85 +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/SummaryBarRenderer.java:359 +msgid "Client" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:85 +#: src/net/i2p/router/web/ConfigClientsHandler.java:120 +msgid "started" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:102 +msgid "" +"WebApp configuration saved successfully - restart required to take effect." +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:122 +msgid "Failed to start" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:128 +msgid "Failed to find server." +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +msgid "Class and arguments" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Run at Startup?" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Start Now" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Description" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "WebApp" +msgstr "" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:66 +msgid "Start" +msgstr "" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:21 +msgid "You must enter a destination" +msgstr "" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:23 +msgid "You must enter a key" +msgstr "" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:36 +msgid "Invalid destination or key" +msgstr "" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:45 +msgid "Invalid destination" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:119 +msgid "Rechecking router reachability..." +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:148 +msgid "Updating IP address" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:166 +msgid "Disabling TCP completely" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:170 +msgid "Updating inbound TCP address to" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:174 +msgid "Disabling inbound TCP" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:176 +msgid "Updating inbound TCP address to auto" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:185 +msgid "Updating inbound TCP port to" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:188 +msgid "Updating inbound TCP port to auto" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:200 +msgid "Updating UDP port from" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:200 +msgid "to" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:216 +msgid "Gracefully restarting into Hidden Router Mode" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:218 +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:227 +msgid "Enabling UPnP, restart required to take effect" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:229 +msgid "Disabling UPnP, restart required to take effect" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:235 +msgid "Requiring SSU introduers" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:251 +msgid "Configuration saved successfully" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:253 +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:293 +msgid "Updating bandwidth share percentage" +msgstr "" + +#: src/net/i2p/router/web/ConfigNetHandler.java:363 +msgid "Updated bandwidth limits" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:24 +#: src/net/i2p/router/web/ConfigPeerHandler.java:33 +#: src/net/i2p/router/web/ConfigPeerHandler.java:35 +msgid "Peer" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:24 +msgid "banned until restart" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:27 +#: src/net/i2p/router/web/ConfigPeerHandler.java:38 +#: src/net/i2p/router/web/ConfigPeerHandler.java:59 +msgid "Invalid peer" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:33 +msgid "unbanned" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:35 +msgid "is not currently banned" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:47 +msgid "Bad speed value" +msgstr "" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:52 +msgid "Bad capacity value" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:56 +msgid "Graceful shutdown initiated" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:60 +msgid "Shutdown immediately! boom bye bye bad bwoy" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:63 +msgid "Graceful shutdown cancelled" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:67 +msgid "Graceful restart requested" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:71 +msgid "Hard restart requested" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:72 +msgid "Rekey and Restart" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:73 +msgid "Rekeying after graceful restart" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:76 +msgid "Rekey and Shutdown" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:77 +msgid "Rekeying after graceful shutdown" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "System tray icon enabled." +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:98 +#: src/net/i2p/router/web/ConfigServiceHandler.java:110 +msgid "System tray icon feature not supported on this platform. Sorry!" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:101 +#: src/net/i2p/router/web/ConfigServiceHandler.java:113 +msgid "Warning: unable to contact the systray manager" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:108 +msgid "System tray icon disabled." +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:117 +msgid "Console is to be shown on startup" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:120 +msgid "Console is not to be shown on startup" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:129 +msgid "Service installed" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:131 +msgid "Warning: unable to install the service" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:137 +msgid "Service removed" +msgstr "" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:139 +msgid "Warning: unable to remove the service" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHandler.java:140 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +msgid "" +"Error saving the configuration (applied but not saved) - please see the " +"error logs." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:21 +#: src/net/i2p/router/web/TunnelRenderer.java:40 +msgid "Exploratory tunnels" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:41 +#: src/net/i2p/router/web/TunnelRenderer.java:59 +msgid "Client tunnels for" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:64 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:72 +msgid "PERFORMANCE WARNING - Settings include very long tunnels." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:75 +msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +msgid "Inbound" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +msgid "Outbound" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Depth" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:85 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:92 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:94 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:102 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:103 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:106 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:108 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:113 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:114 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:115 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:117 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:119 +msgid "hop" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:99 +msgid "Randomization" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:123 +msgid "Quantity" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:126 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:133 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:135 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:143 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:150 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:152 +msgid "tunnel" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:140 +msgid "Backup quantity" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:162 +msgid "Inbound options" +msgstr "" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:175 +msgid "Outbound options" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "classic" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "dark" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "light" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "English" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "French" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "German" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Chinese" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Dutch" +msgstr "" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Swedish" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:61 +msgid "Update available, attempting to download now" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:63 +msgid "Update available, click button on left to download" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:65 +msgid "No update available" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:72 +msgid "Updating news URL to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:80 +msgid "Updating proxy host to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:88 +msgid "Updating proxy port to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:101 +msgid "Updating refresh frequency to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:108 +msgid "Updating update policy to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:117 +msgid "Updating update URLs." +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:125 +msgid "Updating trusted keys." +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:133 +msgid "Updating unsigned update URL to" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:75 +msgid "Never" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:77 +msgid "Every" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:90 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:92 +msgid "Notify only" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:95 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:97 +msgid "Download and verify only" +msgstr "" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:101 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:103 +msgid "Download, verify, and restart" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:58 +msgid "Network Database RouterInfo Lookup" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:73 +msgid "Router" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:73 +msgid "not found in network database" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:85 +#: src/net/i2p/router/web/NetDbRenderer.java:138 +msgid "Network Database Contents" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:86 +#: src/net/i2p/router/web/NetDbRenderer.java:138 +msgid "View" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:97 +msgid "Local" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:99 +msgid "Unpublished" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:100 +#: src/net/i2p/router/web/NetDbRenderer.java:107 +msgid "Destination" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:121 +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Gateway" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:123 +msgid "Tunnel" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:140 +msgid "Not initialized" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:147 +msgid "Routers" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:149 +msgid "view without" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:151 +msgid "view with" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:152 +msgid "stats" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:186 +#: src/net/i2p/router/web/NetDbRenderer.java:202 +msgid "Count" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:186 +#: src/net/i2p/router/web/SummaryBarRenderer.java:150 +msgid "Version" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:202 +msgid "Country" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:225 +msgid "Our info" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:227 +msgid "Peer info for" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:237 +msgid "Updated" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:237 +#: src/net/i2p/router/web/NetDbRenderer.java:239 +msgid "ago" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:239 +#: src/net/i2p/router/web/NetDbRenderer.java:241 +msgid "Published" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:242 +msgid "Address(es)" +msgstr "" + +#: src/net/i2p/router/web/NetDbRenderer.java:259 +#: src/net/i2p/router/web/SummaryBarRenderer.java:124 +msgid "Stats" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:42 +msgid "I2P Services" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:48 +msgid "Manage your I2P hosts file here (I2P domain name resolution)" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:50 +msgid "Addressbook" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:54 +msgid "Built-in anonymous BitTorrent Client" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:56 +msgid "Torrents" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:60 +msgid "Anonymous webmail client" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:62 +msgid "Webmail" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:66 +msgid "Anonymous resident webserver" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:68 +msgid "Webserver" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:72 +msgid "Configure I2P Router" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:74 +msgid "I2P Internals" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:80 +#: src/net/i2p/router/web/SummaryBarRenderer.java:344 +msgid "View existing tunnels and tunnel build status" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:82 +#: src/net/i2p/router/web/TunnelRenderer.java:252 +msgid "Tunnels" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:86 +#: src/net/i2p/router/web/SummaryBarRenderer.java:221 +msgid "Show all current peer connections" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:88 +#: src/net/i2p/router/web/SummaryBarRenderer.java:223 +msgid "Peers" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:92 +msgid "Show recent peer performance profiles" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:94 +msgid "Profiles" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:98 +msgid "Show list of all known I2P routers" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:100 +msgid "NetDB" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:104 +msgid "Health Report" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:106 +msgid "Logs" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:110 +msgid "Show the router's workload, and how it's performing" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:112 +msgid "Jobs" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:116 +msgid "Graph router performance" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:118 +msgid "Graphs" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:122 +msgid "Textual router performance statistics" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:134 +msgid "I2P Router Help" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:136 +msgid "General" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:139 +msgid "Your unique I2P router identity is" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:143 +msgid "never reveal it to anyone" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:145 +msgid "Local Identity" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:157 +msgid "How long we've been running for this session" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:160 +msgid "Uptime" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:167 +msgid "" +"Help with configuring your firewall and router for optimal I2P performance" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:194 +msgid "Download" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:198 +#: src/net/i2p/router/web/SummaryBarRenderer.java:205 +msgid "Update" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:203 +msgid "Download Unsigned" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:229 +msgid "Active" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:237 +msgid "Fast" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:243 +msgid "High capacity" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:249 +msgid "Integrated" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:255 +msgid "Known" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:270 +msgid "Help with firewall configuration" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:272 +msgid "Check NAT/firewall" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:309 +msgid "Configure router bandwidth allocation" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:311 +msgid "Bandwidth in/out" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:328 +msgid "Total" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:336 +msgid "Used" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:346 +msgid "Tunnels in/out" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:351 +msgid "Exploratory" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:367 +msgid "Participating" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:373 +msgid "What's in the router's job queue?" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:375 +msgid "Congestion" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:380 +msgid "Job lag" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:386 +msgid "Message delay" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:392 +msgid "Tunnel lag" +msgstr "" + +#: src/net/i2p/router/web/SummaryBarRenderer.java:398 +msgid "Backlog" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:40 +#: src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "config" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:69 +msgid "Participating tunnels" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:70 +msgid "From" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:70 +msgid "Receive on" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "Expiration" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "Send on" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "To" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "Rate" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "Role" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Usage" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:116 +msgid "Outbound Endpoint" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:118 +msgid "Inbound Gateway" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:120 +#: src/net/i2p/router/web/TunnelRenderer.java:161 +msgid "Participant" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:125 +msgid "Inactive participating tunnels" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:126 +msgid "Lifetime bandwidth usage" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Expiry" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "In/Out" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:158 +msgid "Participants" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:164 +msgid "Endpoint" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:204 +#: src/net/i2p/router/web/TunnelRenderer.java:210 +msgid "Build in progress" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:204 +msgid "inbound" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:210 +msgid "outbound" +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:214 +msgid "No tunnels; waiting for the grace period to end." +msgstr "" + +#: src/net/i2p/router/web/TunnelRenderer.java:233 +msgid "Tunnel Counts By Peer" +msgstr "" diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po index 8456438ca91dd9b24cbc25242d045c425a1179b0..d02922202e20e90245262716cebabacbc11b14d2 100644 --- a/apps/routerconsole/locale/messages_zh.po +++ b/apps/routerconsole/locale/messages_zh.po @@ -8,274 +8,2087 @@ msgid "" msgstr "" "Project-Id-Version: I2P routerconsole\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-20 11:55+0000\n" -"PO-Revision-Date: 2009-10-19 12:59+0000\n" -"Last-Translator: foo <foo@bar>\n" -"Language-Team: foo <foo@par>\n" +"POT-Creation-Date: 2009-10-26 10:43+0000\n" +"PO-Revision-Date: \n" +"Last-Translator: walking <walking@mail.i2p>\n" +"Language-Team: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106 +msgid "config networking" +msgstr "连网设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:233 +msgid "I2P Network Configuration" +msgstr "I2P 连网设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:331 +msgid "Bandwidth limiter" +msgstr "带宽é™åˆ¶" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333 +msgid "I2P will work best if you configure your rates to match the speed of your internet connection." +msgstr "与è”网环境相符的速度能使I2P以最佳的状æ€å·¥ä½œã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:337 +msgid "KBps In" +msgstr "KBps 入站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347 +msgid "KBps Out" +msgstr "KBps 出站" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357 +msgid "Share" +msgstr "共享" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:363 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:341 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337 +msgid "NOTE" +msgstr "注æ„" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364 +msgid "I2P requires at least 12KBps to enable sharing. " +msgstr "I2P 需è¦è‡³å°‘ 12KBps æ‰èƒ½è¿›è¡Œå…±äº«ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365 +msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. " +msgstr "请设置更多的带宽以便å¯ç”¨å…±äº«åŠŸèƒ½(åŠ å…¥åˆ°å…¶ä»–èŠ‚ç‚¹çš„éš§é“创建ä¸)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366 +msgid "It improves your anonymity by creating cover traffic, and helps the network." +msgstr "é€šè¿‡åˆ¶é€ æ··æ·†æµé‡å…±äº«èƒ½å¢žå¼ºæ‚¨çš„匿å性,帮助网络æˆé•¿ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:368 +msgid "You have configured I2P to share" +msgstr "您设置I2P共享" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369 +msgid "The higher the share bandwidth the more you improve your anonymity and help the network." +msgstr "共享的带宽越多,您的匿å性越强åŒæ—¶èƒ½å¸®åŠ©ç½‘络æˆé•¿ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:373 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:502 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:367 +#: src/net/i2p/router/web/ConfigNetHandler.java:47 +#: src/net/i2p/router/web/ConfigNetHandler.java:249 +msgid "Save changes" +msgstr "ä¿å˜ä¿®æ”¹" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:339 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:369 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:357 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:390 +msgid "Cancel" +msgstr "å–消" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379 +msgid "IP and Transport Configuration" +msgstr "IP ä¸Žä¼ è¾“è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381 +msgid "The default settings will work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:383 +msgid "UPnP Configuration" +msgstr "UPnP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387 +msgid "Enable UPnP to open firewall ports" +msgstr "å¯ç”¨UPnP以打开防ç«å¢™ç«¯å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389 +msgid "UPnP status" +msgstr "UPnP 统计" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391 +msgid "IP Configuration" +msgstr "IP 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449 +msgid "Externally reachable hostname or IP address" +msgstr "公网å¯è®¿é—®çš„本机域å或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397 +msgid "Use all auto-detect methods" +msgstr "使用全部自动探测方法" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:401 +msgid "Disable UPnP IP address detection" +msgstr "ç¦ç”¨UPnP IP 地å€æŽ¢æµ‹" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405 +msgid "Ignore local interface IP address" +msgstr "忽略本地接å£çš„ IP 地å€" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409 +msgid "Use SSU IP address detection only" +msgstr "仅使用SSU IP 地å€æŽ¢æµ‹" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467 +msgid "Specify hostname or IP" +msgstr "指定主机å或IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +msgid "Select Interface" +msgstr "选择网络接å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:419 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:370 +msgid "or" +msgstr "或" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433 +msgid "Hidden mode - do not publish IP" +msgstr "éšèº«æ¨¡å¼ - ä¸å‘布IP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435 +msgid "(prevents participating traffic)" +msgstr "(阻æ¢å…±äº«æµé‡)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:437 +msgid "UDP Configuration:" +msgstr "UPnP 设置:" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439 +msgid "UDP port:" +msgstr "UDP端å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:447 +msgid "TCP Configuration" +msgstr "TCP 连接设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453 +msgid "Use auto-detected IP address" +msgstr "使用自动检测得到的 IP 地å€" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:455 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:487 +msgid "currently" +msgstr "ç›®å‰" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459 +msgid "if we are not firewalled" +msgstr "如果没有å—到防ç«å¢™é˜»æŒ¡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463 +msgid "Always use auto-detected IP address (Not firewalled)" +msgstr "总是使用自动探测到的IP地å€(没有防ç«å¢™é™åˆ¶)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:473 +msgid "Disable inbound (Firewalled)" +msgstr "ç¦æ¢å…¥ç«™è¿žæŽ¥(å—防ç«å¢™é™åˆ¶)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477 +msgid "Completely disable" +msgstr "完全ç¦ç”¨" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479 +msgid "(select only if behind a firewall that throttles or blocks outbound TCP)" +msgstr "仅在å—到防ç«å¢™çš„æµé‡é™åˆ¶æˆ–入站连接é™åˆ¶æ—¶ä½¿ç”¨" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:481 +msgid "Externally reachable TCP port" +msgstr "公网å¯è®¿é—®çš„TCP端å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485 +msgid "Use the same port configured for UDP" +msgstr "使用与UDP相åŒçš„端å£" -#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:95 -msgid "config update" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493 +msgid "Specify Port" +msgstr "指定端å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:376 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:363 +msgid "Note" +msgstr "注æ„" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:500 +msgid "Changing these settings will restart your router." +msgstr "修改这些设置将必须é‡å¯è·¯ç”±å™¨ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:506 +msgid "Configuration Help" +msgstr "设置帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544 +msgid "While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port (generally 8887) is forwarded for both UDP and TCP." +msgstr "I2På¯ä»¥ä¸Žå¤§å¤šæ•°é˜²ç«å¢™å…±å˜ï¼Œå¦‚æžœI2P端å£(通常为8887)进行了UDP/TCPæ˜ å°„ï¼Œæ‚¨çš„é€Ÿåº¦å’Œç½‘ç»œæ•´åˆåº¦ä¼šé€æ¸æå‡ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:510 +msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you." +msgstr "如果å¯èƒ½ï¼Œè¯·åœ¨é˜²ç«å¢™ä¸æ·»åŠ 端å£å¹¶å…许入站UDP/TCPæ•°æ®åŒ…通过。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512 +msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic." +msgstr "如果ä¸èƒ½ï¼ŒI2P支æŒUPnP(Universal Plug and Play)或借助“SSUä¸ä»‹â€è¿›è¡ŒUDP端å£ç©¿é€ï¼Œé€šè¿‡å®ƒä»¬ä¹Ÿå¯ä»¥ä¸ç»§æ•°æ®ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514 +msgid "Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm." +msgstr "上述大部分设置仅为特殊情况准备,例如UPnPä¸èƒ½æ£å¸¸å·¥ä½œï¼Œæˆ–外部防ç«å¢™å°é”网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516 +msgid "Certain firewalls such as symmetric NATs may not work well with I2P." +msgstr "在æŸäº›é˜²ç«å¢™ä¸‹ä¾‹å¦‚Symmetric,I2På¯èƒ½æ— 法有效利用NAT工作。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518 +msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports." +msgstr "UPnP与公网网关设备(IGD)通讯å¯ä»¥æ£€æµ‹å¤–部IPå’Œæ˜ å°„ç«¯å£ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520 +msgid "UPnP support is beta, and may not work for any number of reasons" +msgstr "UPnP支æŒä»åœ¨æµ‹è¯•é˜¶æ®µï¼Œå¯èƒ½ç”±äºŽä¸€äº›åŽŸå› æ— æ³•æ£å¸¸å·¥ä½œã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522 +msgid "No UPnP-compatible device present" +msgstr "没有å‘现UPnP兼容设备" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524 +msgid "UPnP disabled on the device" +msgstr "设备上的UPnP支æŒå·²ç¦ç”¨" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526 +msgid "Software firewall interference with UPnP" +msgstr "软件防ç«å¢™é˜»æ¢UPnP" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528 +msgid "Bugs in the device's UPnP implementation" +msgstr "设备的UPnP支æŒæœ‰Bug" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530 +msgid "Multiple firewall/routers in the internet connection path" +msgstr "公网连接ä¸å˜åœ¨å¤šä¸ªé˜²ç«å¢™/路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532 +msgid "UPnP device change, reset, or address change" +msgstr "UPnP设备改å˜ã€é‡ç½®æˆ–地å€è¿ç§»" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534 +msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect." +msgstr "UPnP çš„å…³é—或开å¯å‡éœ€è¦ç¨‹åºé‡å¯åŽç”Ÿæ•ˆã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536 +msgid "Hostnames entered above will be published in the network database." +msgstr "上é¢è¾“入的主机å称将在网络数æ®åº“(NetDB)ä¸å‘布。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538 +msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially." +msgstr "如果您设置了错误的IP地å€æˆ–主机å称,或NAT/防ç«å¢™é…ç½®ä¸å½“,您的网络性能将å—到明显影å“。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540 +msgid "When in doubt, leave the settings at the defaults." +msgstr "如果对设置有疑问,请ä¿ç•™é»˜è®¤è®¾ç½®ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542 +msgid "Reachability Help" +msgstr "连通性帮助" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547 +msgid "If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers." +msgstr "如果您认为已ç»æ‰“开了防ç«å¢™ï¼Œä½†I2Pä»ç„¶æŠ¥å‘Šæ‚¨å—到防ç«å¢™é˜»éš”,请想想您是å¦å¯èƒ½æœ‰å¤šå±‚防ç«å¢™ï¼Œä¾‹å¦‚软件防护墙和外部的硬件路由器。" + +# æš‚ä¸ç¿»è¯‘,确定/良好 å¯èƒ½å½±å“按钮的翻译 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549 +msgid "OK" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551 +msgid "Your UDP port does not appear to be firewalled." +msgstr "您的UDP端å£ä¼¼ä¹Žä¸€åˆ‡æ£å¸¸ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553 +msgid "Firewalled" +msgstr "防ç«å¢™é˜»æŒ¡(Firewalled)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555 +msgid "Your UDP port appears to be firewalled." +msgstr "您的UDP端å£ä¼¼ä¹Žå› 防ç«å¢™è€Œè¿žæŽ¥å—阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557 +msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error." +msgstr "由于防ç«å¢™æ£€æµ‹æ–¹æ³•å¹¶éž100%å¯é ,有时也å¯èƒ½é”™è¯¯åœ°æ˜¾ç¤ºæ¤æ¤æ示。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559 +msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open on port 8887." +msgstr "然而,如果总是出现æ¤æ示,您应检查外部或内部防ç«å¢™æ˜¯å¦æ‰“开了8887(或用户指定的)端å£ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561 +msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections." +msgstr "å³ä½¿å—到防ç«å¢™é˜»æ‹¦ï¼ŒI2P也能够æ£å¸¸å·¥ä½œï¼Œæ— 需担心。å—到防ç«å¢™é˜»éš”时,路由器将通过“ä¸ä»‹(Introducers)â€ä¸ç»§å…¥ç«™è¿žæŽ¥ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563 +msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)." +msgstr "然而,如果您能打开防ç«å¢™ç«¯å£ï¼Œæ‚¨æ‰èƒ½å¾—到的共享æµé‡ï¼Œæ›´å¥½çš„帮助I2P网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565 +msgid "If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control." +msgstr "如果您确信已ç»æ‰“开了防ç«å¢™ï¼Œè¯·æƒ³æƒ³æ˜¯ä¸æ˜¯åŒæ—¶å˜åœ¨ç¡¬ä»¶å’Œè½¯ä»¶é˜²ç«å¢™ï¼Œæˆ–å˜åœ¨æ‚¨æ— 法控制的é¢å¤–的机构性的防ç«å¢™ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567 +msgid "Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P." +msgstr "当然,æŸäº›è·¯ç”±å™¨å¯èƒ½æ— 法æ£ç¡®æ˜ å°„åŒæ—¶ä½¿ç”¨TCPå’ŒUDPå议的端å£ï¼Œæˆ–å˜åœ¨å…¶ä»–é™åˆ¶æˆ–缺陷,障ç¢äº†æ•°æ®è¿›å…¥I2P网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569 +msgid "Testing" +msgstr "测试ä¸(Testing)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571 +msgid "The router is currently testing whether your UDP port is firewalled." +msgstr "路由器æ£åœ¨æµ‹è¯•æ‚¨çš„UDP端å£æ˜¯å¦è¢«é˜²ç«å¢™é˜»æŒ¡ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573 +#: src/net/i2p/router/web/NetDbRenderer.java:237 +msgid "Hidden" +msgstr "éšè—(Hidden)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575 +msgid "The router is not configured to publish its address, therefore it does not expect incoming connections." +msgstr "路由器被设置为ç¦æ¢å‘布IP地å€ï¼Œå› æ¤å¹¶ä¸éœ€è¦å…¥ç«™è¿žæŽ¥ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577 +msgid "WARN - Firewalled and Fast" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579 +msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled." +msgstr "您设置I2P共享超过128KBpsçš„å¸¦å®½ï¼Œä½†æ‚¨çš„è¿žæŽ¥å› é˜²ç«å¢™å—阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581 +msgid "While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall." +msgstr "尽管在æ¤ç§é…置情况下I2På¯ä»¥æ£å¸¸å·¥ä½œï¼Œä½†å¦‚果您的确能够分享超过128kps的带宽,打开防ç«å¢™ç«¯å£å®ƒèƒ½å·¥ä½œçš„更好帮助网络ä¸å…¶ä»–的人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583 +msgid "WARN - Firewalled and Floodfill" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585 +msgid "You have configured I2P to be a floodfill router, but you are firewalled." +msgstr "您已将I2P设置为ç§åè·¯ç”±ï¼Œä½†æ‚¨çš„è¿žæŽ¥å·²å› é˜²ç«å¢™å—阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587 +msgid "For best participation as a floodfill router, you should open your firewall." +msgstr "为了ç§å路由能够更好的å‚与到I2P网络ä¸ï¼Œè¯·æ‚¨çš„防ç«å¢™ä¸æ‰“开端å£ã€‚" + +# æš‚ä¸ç¿»è¯‘方便å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589 +msgid "WARN - Firewalled with Inbound TCP Enabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591 +msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well." +msgstr "您设置了使用入站TCP连接,åŒæ—¶æ‚¨çš„UDP端å£å› 防ç«å¢™å—阻,由æ¤çœ‹æ¥æ‚¨çš„TCP端å£ä¹Ÿè¢«é˜²ç«å¢™é˜»æŒ¡ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593 +msgid "If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network." +msgstr "如果您在TCP端å£å› 防ç«å¢™å—阻的情况下å¯ç”¨å…¥ç«™TCPè¿žæŽ¥ï¼Œå…¶ä»–è·¯ç”±å™¨èŠ‚ç‚¹å°†æ— æ³•ä¸Žæ‚¨å»ºç«‹è¿žæŽ¥ï¼Œé€ æˆç½‘络å—阻。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595 +msgid "Please open your firewall or disable inbound TCP above." +msgstr "请打开您的防ç«å¢™ç«¯å£æˆ–ç¦ç”¨ä¸Šé¢çš„入站TCP连接。" + +# æš‚ä¸ç¿»è¯‘ +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597 +msgid "WARN - Firewalled with UDP Disabled" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599 +msgid "You have configured inbound TCP, however you have disabled UDP." +msgstr "您设置了使用TCP连接,然而ç¦ç”¨äº†UDP连接。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601 +msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections." +msgstr "您的TCPè¿žæŽ¥ä¼¼ä¹Žå› é˜²ç«å¢™å—é˜»ï¼Œå¯¼è‡´æ‚¨çš„è·¯ç”±å™¨æ— æ³•æŽ¥æ”¶å…¥ç«™è¿žæŽ¥ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603 +msgid "Please open your firewall or enable UDP." +msgstr "请打开防ç«å¢™ç«¯å£æˆ–å¯ç”¨UDP。" + +# æš‚ä¸ç¿»è¯‘,方便错误å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605 +msgid "ERR - Clock Skew" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607 +msgid "Your system's clock is skewed, which will make it difficult to participate in the network." +msgstr "如果您的系统时钟太快或太慢,将影å“计算机接入网络。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609 +msgid "Correct your clock setting if this error persists." +msgstr "如果错误æŒç»ï¼Œè¯·æ ¡å¯¹æ‚¨çš„系统时间。" + +# æš‚ä¸ç¿»è¯‘,方便错误å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611 +msgid "ERR - Private TCP Address" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613 +msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address." +msgstr "您ä¸èƒ½å‘å¸ƒä¸€ä¸ªå…¬ç½‘æ— æ³•è®¿é—®çš„ IP 地å€ï¼Œä¾‹å¦‚127.0.0.1或192.168.1.1一类的内网地å€ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615 +msgid "Correct the address or disable inbound TCP above." +msgstr "æ£ç¡®è®¾ç½®IP地å€æˆ–ç¦ç”¨ä¸Šé¢çš„入站TCP连接。" + +# æš‚ä¸ç¿»è¯‘,方便错误å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617 +msgid "ERR - SymmetricNAT" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619 +msgid "I2P detected that you are firewalled by a Symmetric NAT." +msgstr "I2P检测到您å—到Symmetic NAT的阻挡。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621 +msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network." +msgstr "I2Pæ— æ³•ä¸Žæ¤ç±»é˜²ç«å¢™å¾ˆå¥½çš„并å˜ã€‚您å¯èƒ½æ— 法接收入站连接,这会障ç¢æ‚¨è¿žå…¥I2P网络。" + +# æš‚ä¸ç¿»è¯‘,方便问题å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623 +msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625 +msgid "I2P was unable to bind to port 8887 or other configured port." +msgstr "I2Pæ— æ³•ç»‘å®šåˆ°ç«¯å£8887或其他指定的端å£ä¸Šã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627 +msgid "Check to see if another program is using port 8887. If so, stop that program or configure I2P to use a different port." +msgstr "检查是å¦æœ‰å…¶ä»–程åºæ£åœ¨ä½¿ç”¨8887端å£ï¼Œå¦‚果是,关é—æ¤ç¨‹åºæˆ–设置I2P使用ä¸åŒçš„端å£ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629 +msgid "This may be a transient error, if the other program is no longer using the port." +msgstr "如果其他程åºä¸å†ä½¿ç”¨æ¤ç«¯å£ï¼Œè¿™å¯èƒ½æ˜¯ä¸´æ—¶æ€§çš„错误。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631 +msgid "However, a restart is always required after this error." +msgstr "然而,å‘生æ¤é”™è¯¯åŽä¸€èˆ¬éœ€è¦é‡å¯ç¨‹åºæ‰èƒ½è§£å†³ã€‚" + +# æš‚ä¸ç¿»è¯‘,方便错误å馈 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633 +msgid "ERR - UDP Disabled and Inbound TCP host/port not set" +msgstr "" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635 +msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP." +msgstr "您没有设置入站TCP的主机å称和端å£ï¼ŒåŒæ—¶åˆå…³é—了UDP。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637 +msgid "Therefore your router cannot accept inbound connections." +msgstr "å› æ¤æ‚¨çš„è·¯ç”±å™¨æ— æ³•æŽ¥æ”¶å…¥ç«™è¿žæŽ¥ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639 +msgid "Please configure a TCP host and port above or enable UDP." +msgstr "请在å‰é¢è®¾ç½®TCP主机和端å£æˆ–å¯ç”¨UDP" + +# 错误æ示暂ä¸ç¿»è¯‘,以便错误å馈。 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641 +msgid "ERR - Client Manager I2CP Error - check logs" msgstr "" +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643 +msgid "This is usually due to a port 7654 conflict. Check the logs to verify." +msgstr "这通常为7654端å£å†²çªæ‰€è‡´ï¼Œè¯·æŸ¥çœ‹æ—¥å¿—ç¡®è®¤åŽŸå› ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645 +msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P." +msgstr "您是å¦å·²ç»è¿è¡Œäº†å¦ä¸€ä¸ªI2P实例?请关掉冲çªçš„程åºå¹¶é‡å¯I2P。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107 +msgid "config advanced" +msgstr "高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:234 +msgid "I2P Advanced Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:333 +msgid "Advanced I2P Configuration" +msgstr "I2P 高级设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:337 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:355 +msgid "Apply" +msgstr "应用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:343 +msgid "Some changes may require a restart to take effect." +msgstr "æŸäº›è®¾ç½®éœ€è¦ç¨‹åºé‡å¯åŽç”Ÿæ•ˆã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106 +msgid "config clients" +msgstr "å‡çº§è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:233 +msgid "I2P Client Configuration" +msgstr "I2P 客户程åºè®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340 +msgid "Client Configuration" +msgstr "客户程åºè®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:342 +msgid "The Java clients listed below are started by the router and run in the same JVM." +msgstr "下é¢åˆ—出的Java客户端éšè·¯ç”±å™¨å¯åŠ¨å¹¶è¿è¡ŒäºŽåŒä¸€JVMä¸ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346 +msgid "To change other client options, edit the file" +msgstr "修改其他客户端设置请编辑文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:353 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:365 +msgid "All changes require restart to take effect." +msgstr "所有更改å‡éœ€è¦ç¨‹åºé‡å¯æ‰èƒ½ç”Ÿæ•ˆã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355 +#: src/net/i2p/router/web/ConfigClientsHandler.java:32 +msgid "Save Client Configuration" +msgstr "ä¿å˜å®¢æˆ·ç¨‹åºè®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:357 +msgid "WebApp Configuration" +msgstr "WebApp 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:359 +msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)." +msgstr "下é¢åˆ—出的Java Web 程åºéšå®¢æˆ·ç«¯â€œweb控制å°â€ä¸€åŒå¯åŠ¨ï¼Œå¹¶ä¸Žè·¯ç”±è¿è¡ŒäºŽåŒä¸€JVMä¸ã€‚这些Web程åºé€šå¸¸å¯ä»¥é€šè¿‡è·¯ç”±å™¨ç•Œé¢ç›´æŽ¥è®¿é—®ã€‚他们å¯èƒ½æ˜¯å®Œæ•´çš„ç¨‹åº (例如 i2psnark/BT客户端),其他客户端程åºçš„å‰ç«¯æˆ–å¿…é¡»å•ç‹¬å¯åŠ¨çš„程åº(例如. susidns, i2ptunnel),ç”šè‡³æ ¹æœ¬æ²¡æœ‰Webç•Œé¢(例如 addressbook)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:361 +msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method." +msgstr "从webapps目录ä¸åˆ 除相应的.war文件åŒæ ·å¯ä»¥ç¦ç”¨Web程åº;然而这些 .war 文件和Web程åºåœ¨æ›´æ–°I2PåŽè¿˜ä¼šå†æ¬¡å‡ºçŽ°,所以推è在这里通过设置的方法ç¦ç”¨ä¸ç”¨çš„Web程åºã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:367 +#: src/net/i2p/router/web/ConfigClientsHandler.java:34 +msgid "Save WebApp Configuration" +msgstr "ä¿å˜ WebApp 设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106 +msgid "config keyring" +msgstr "钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220 +msgid "I2P Keyring Configuration" +msgstr "I2P 钥匙环设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:326 +msgid "Keyring" +msgstr "钥匙环" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:328 +msgid "The router keyring is used to decrypt encrypted leaseSets." +msgstr "路由的钥匙环被用æ¥è§£å¯†å’ŒåŠ 密 leaseSets." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:331 +msgid "The keyring may contain keys for local or remote encrypted destinations." +msgstr "钥匙环å¯ä»¥åŒ…å«æœ¬åœ°å’Œè¿œç¨‹çš„åŠ å¯†ç›®æ ‡(Destination)." + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341 +msgid "Manual Keyring Addition" +msgstr "æ‰‹åŠ¨æ·»åŠ é’¥åŒ™çŽ¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343 +msgid "Enter keys for encrypted remote destinations here." +msgstr "在æ¤å¤„æ·»åŠ è¿œç¨‹åŠ å¯†ç›®æ ‡çš„å¯†é’¥ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:345 +msgid "Dest. name, hash, or full key" +msgstr "ç›®æ ‡(Dest.)å称, HASH, 或完整公钥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:347 +msgid "Encryption Key" +msgstr "åŠ å¯†å¯†é’¥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:349 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:18 +msgid "Add key" +msgstr "æ·»åŠ å¯†é’¥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:351 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:19 +msgid "Delete key" +msgstr "åˆ é™¤å¯†é’¥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107 +msgid "config logging" +msgstr "日志设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234 +msgid "I2P Logging Configuration" +msgstr "I2P 记录设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333 +msgid "Configure I2P Logging Options" +msgstr "设置 I2P 记录选项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335 +msgid "Logging filename" +msgstr "日志文件å称" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339 +msgid "(the symbol '@' will be replaced during log rotation)" +msgstr "(日志轮转时符å·'@'将被替æ¢)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341 +msgid "Log record format" +msgstr "æ—¥å¿—è®°å½•æ ¼å¼" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:345 +msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)" +msgstr "( 'd' = 日期, 'c' = ç±», 't' = 线程, 'p' = 优先级, 'm' = 消æ¯)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:347 +msgid "Log date format" +msgstr "æ—¥å¿—æ—¥æœŸæ ¼å¼" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:351 +msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)" +msgstr "('MM' = 月, 'dd' = 天, 'HH' = å°æ—¶, 'mm' = 分钟, 'ss' = 秒, 'SSS' = 毫秒)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:353 +msgid "Max log file size" +msgstr "日志最大体积" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357 +msgid "Default log level" +msgstr "默认日志ç‰çº§" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:361 +msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)" +msgstr "(建议ä¸è¦ä½¿ç”¨ DEBUG 或 INFO 作为默认ç‰çº§,他们会明显é™ä½Žç¨‹åºæ€§èƒ½)" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:363 +msgid "Log level overrides" +msgstr "ç‰çº§å¤–日志项目" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106 +msgid "config peers" +msgstr "节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220 +msgid "I2P Peer Configuration" +msgstr "I2P 节点设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338 +msgid "Manual Peer Controls" +msgstr "手动节点控制" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:340 +msgid "Router Hash" +msgstr "路由器 HASH" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344 +msgid "Manually Ban / Unban a Peer" +msgstr "手动å°é”/解å°æŸä¸ªèŠ‚点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:346 +msgid "Banning will prevent the participation of this peer in tunnels you create." +msgstr "å°é”将阻æ¢èŠ‚点å‚与您的隧é“创建" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:348 +#: src/net/i2p/router/web/ConfigPeerHandler.java:20 +msgid "Ban peer until restart" +msgstr "å°é”节点直到é‡å¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:350 +#: src/net/i2p/router/web/ConfigPeerHandler.java:28 +msgid "Unban peer" +msgstr "节点解å°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:356 +#: src/net/i2p/router/web/ConfigPeerHandler.java:39 +msgid "Adjust Profile Bonuses" +msgstr "调整节点评分" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:358 +msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the" +msgstr "评分(Bonuse)å¯èƒ½ä¸ºæ£æˆ–为负并影å“节点是å¦è¯„为快速和高容é‡èŠ‚点。快速节点用于客户程åºé€šé“,高容é‡èŠ‚点用于探索隧é“。当å‰è¯„分显示于" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:360 +msgid "profiles page" +msgstr "节点信æ¯é¡µé¢" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:368 +msgid "Speed" +msgstr "速度" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:372 +msgid "Capacity" +msgstr "容é‡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:376 +msgid "Adjust peer bonuses" +msgstr "调整节点评分" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106 +msgid "config service" +msgstr "æœåŠ¡è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220 +msgid "I2P Service Configuration" +msgstr "I2P æœåŠ¡è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318 +msgid "Shutdown the router" +msgstr "å…³é—路由器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320 +msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes." +msgstr "平滑关é—(Graceful Shutdown)让路由器在关é—å‰å®Œæˆå·²è¾¾æˆçš„任务,但这å¯èƒ½éœ€è¦èŠ±è´¹å‡ 分钟的时间。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322 +msgid "If you need to kill the router immediately, that option is available as well." +msgstr "å½“ç„¶ä½ ä¹Ÿå¯ä»¥é€‰æ‹©ç«‹å³å…³é—路由。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324 +#: src/net/i2p/router/web/ConfigServiceHandler.java:53 +msgid "Shutdown gracefully" +msgstr "平滑关é—" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326 +#: src/net/i2p/router/web/ConfigServiceHandler.java:57 +msgid "Shutdown immediately" +msgstr "立刻关é—" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328 +#: src/net/i2p/router/web/ConfigServiceHandler.java:61 +msgid "Cancel graceful shutdown" +msgstr "å–消平滑关é—" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332 +msgid "If you want the router to restart itself after shutting down, you can choose one of the following." +msgstr "å¦‚æžœä½ æƒ³è¦è·¯ç”±å™¨å…³é—åŽè‡ªåŠ¨é‡æ–°å¯åŠ¨ï¼Œå¯ä»¥é€‰æ‹©ä¸‹é¢çš„选项。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334 +msgid "This is useful in some situations" +msgstr "é‡å¯åœ¨æŸäº›æƒ…况下有用" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336 +msgid "for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on." +msgstr "例如当修改了客户程åºä»…在å¯åŠ¨æ—¶è¯»å–的设置,比如路由器控制界é¢çš„密ç ,监å¬çš„接å£ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338 +msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately." +msgstr "平滑é‡å¯å¯èƒ½ä¼šç‰å¾…å‡ åˆ†é’Ÿçš„æ—¶é—´(ä½†ä½ çš„èŠ‚ç‚¹ä¸€å®šä¼šæ„Ÿæ¿€ä½ çš„è€å¿ƒ),硬é‡å¯å¯ä»¥ç«‹å³å®Œæˆã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340 +msgid "After tearing down the router, it will wait 1 minute before starting back up again." +msgstr "路由关é—åŽå°†ç‰å¾…1分钟å†é‡æ–°å¯åŠ¨ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342 +#: src/net/i2p/router/web/ConfigServiceHandler.java:64 +msgid "Graceful restart" +msgstr "平滑é‡å¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:344 +#: src/net/i2p/router/web/ConfigServiceHandler.java:68 +msgid "Hard restart" +msgstr "硬é‡å¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:350 +msgid "Systray integration" +msgstr "使用系统托盘" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352 +msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status" +msgstr "Windows å¹³å°å…许å°ç¨‹åºè¿›é©»ç³»ç»Ÿæ‰˜ç›˜ï¼Œè®©ä½ å¯ä»¥æŸ¥çœ‹è·¯ç”±çŠ¶æ€" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354 +msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)." +msgstr "(以åŽçš„ I2P 客户端程åºä¹Ÿä¼šå°†å®ƒä»¬çš„功能集æˆåˆ°ç³»ç»Ÿæ‰˜ç›˜é‡Œ)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:356 +msgid "If you are on windows, you can either enable or disable that icon here." +msgstr "å¦‚æžœä½ ä½¿ç”¨Windows, å¯ä»¥åœ¨è¿™é‡Œå¼€å¯æˆ–å…³é—è¿™ä¸ªæ‰˜ç›˜å›¾æ ‡ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358 +#: src/net/i2p/router/web/ConfigServiceHandler.java:91 +msgid "Show systray icon" +msgstr "æ˜¾ç¤ºæ‰˜ç›˜å›¾æ ‡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360 +#: src/net/i2p/router/web/ConfigServiceHandler.java:103 +msgid "Hide systray icon" +msgstr "éšè—ç³»ç»Ÿå›¾æ ‡" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362 +msgid "Run on startup" +msgstr "系统å¯åŠ¨æ—¶è¿è¡Œ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364 +msgid "You can control whether I2P is run on startup or not by selecting one of the following options" +msgstr "è¿™é‡Œä½ å¯ä»¥é€šè¿‡ä¸‹é¢çš„选项æ¥è®¾ç½®å¼€æœºåŽ I2P 是å¦å¯åŠ¨" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:366 +msgid "I2P will install (or remove) a service accordingly." +msgstr "I2P将相应的将自身安装为æœåŠ¡(或å¸è½½æœåŠ¡)。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:368 +msgid "If you prefer the command line, you can also run the " +msgstr "å¦‚æžœä½ å好使用命令行,å¯ä»¥è¿è¡Œ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:372 +#: src/net/i2p/router/web/ConfigServiceHandler.java:80 +msgid "Run I2P on startup" +msgstr "系统å¯åŠ¨æ—¶è¿è¡ŒI2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:374 +#: src/net/i2p/router/web/ConfigServiceHandler.java:82 +msgid "Don't run I2P on startup" +msgstr "系统å¯åŠ¨æ—¶ä¸è¿è¡ŒI2P" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:378 +msgid "If you are running I2P as service right now, removing it will shut down your router immediately." +msgstr "如果您目å‰å·²ç»ä»¥æœåŠ¡å½¢å¼è¿è¡Œ I2P ï¼Œåˆ é™¤ I2P æœåŠ¡å°†ç«‹åˆ»å…³é—路由器。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:380 +msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat." +msgstr "您å¯ä»¥è€ƒè™‘先平滑关é—路由,待退出åŽè¿è¡Œ uninstall_i2p_service_winnt.bat。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:388 +msgid "Debugging" +msgstr "调试" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:392 +msgid "Launch browser on router startup?" +msgstr "路由器å¯åŠ¨æ—¶è¿è¡Œæµè§ˆå™¨?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:394 +msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at" +msgstr "æ¤Web控制å°æ˜¯I2P的主è¦è®¾ç½®ç•Œé¢ï¼Œæ‰€ä»¥å¦‚果您您觉得有必è¦I2På¯ä»¥åœ¨è·¯ç”±å¯åŠ¨æ—¶è°ƒç”¨æµè§ˆå™¨æ‰“å¼€" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:396 +#: src/net/i2p/router/web/ConfigServiceHandler.java:115 +msgid "View console on startup" +msgstr "程åºå¯åŠ¨æ—¶æ˜¾ç¤ºæŽ§åˆ¶å°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:398 +#: src/net/i2p/router/web/ConfigServiceHandler.java:118 +msgid "Do not view console on startup" +msgstr "å¯åŠ¨åŽä¸æ‰“开控制å°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107 +msgid "config stats" +msgstr "统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221 +msgid "I2P Stats Configuration" +msgstr "I2P 统计设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:334 +msgid "Configure I2P Stat Collection" +msgstr "设置 I2P 统计项" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:336 +msgid "Enable full stats?" +msgstr "å¯ç”¨å®Œæ•´ç»Ÿè®¡?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:343 +msgid "change requires restart to take effect" +msgstr "设置需è¦ç¨‹åºé‡å¯åŽæ‰èƒ½ç”Ÿæ•ˆã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:345 +msgid "Stat file" +msgstr "统计文件" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:349 +msgid "Filter" +msgstr "过滤器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:351 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:360 +msgid "toggle all" +msgstr "全部切æ¢" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:362 +msgid "Log" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:364 +msgid "Graph" +msgstr "统计图" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:403 +msgid "Advanced filter" +msgstr "高级过滤器" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106 +msgid "config tunnels" +msgstr "隧é“设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:233 +msgid "I2P Tunnel Configuration" +msgstr "I2P 隧é“设置" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339 +msgid "The default settings work for most people." +msgstr "默认设置适于大多数人。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343 +msgid "There is a fundamental tradeoff between anonymity and performance." +msgstr "匿å性需è¦ä»¥æ€§èƒ½ä¸ºä»£ä»·ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:346 +msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability." +msgstr "长于3个跳点(hops)的隧é“(例如 2hops + 0-2hops,3 hops + 0-1 hops, 3 hops + 0-2 hops),或高质é‡+备用质é‡(higg + backup),å¯èƒ½é™ä½Žæ€§èƒ½å’Œç¨³å®šæ€§ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:349 +msgid "High CPU and/or high outbound bandwidth usage may result." +msgstr "导致高CPUå 用和/或高上行æµé‡ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:352 +msgid "Change these settings with care, and adjust them if you have problems." +msgstr "å°å¿ƒæ›´æ”¹è¿™äº›è®¾ç½®ã€‚如果é‡åˆ°é—®é¢˜å¯ä»¥åœ¨è¿™é‡Œè°ƒæ•´ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:366 +msgid "Exploratory tunnel setting changes are stored in the router.config file." +msgstr "对探测隧é“设置的更改将ä¿å˜å…¥router.config文件ä¸ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:369 +msgid "Client tunnel changes are temporary and are not saved." +msgstr "对客户程åºéš§é“的修改是临时的,将ä¸äºˆä¿å˜ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:371 +msgid "To make permanent client tunnel changes see the" +msgstr "è¦æ°¸ä¹…性更改客户通é“的设置å‚è§" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:373 +msgid "i2ptunnel page" +msgstr "I2P 隧é“页é¢" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106 +msgid "config UI" +msgstr "ç•Œé¢è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:233 +msgid "I2P UI Configuration" +msgstr "I2P ç•Œé¢è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:325 +msgid "Router Console Theme" +msgstr "路由控制å°ä¸»é¢˜" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:343 +msgid "Theme selection disabled for Internet Explorer, sorry." +msgstr "抱æ‰ï¼Œä¸»é¢˜åŠŸèƒ½åœ¨InternetExplorerä¸å·²ç¦ç”¨ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:345 +msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes." +msgstr "如果您没使用IE,您的æµè§ˆå™¨å¯èƒ½æ£åœ¨ä¼ªè£…IEçš„UserAgent;您需è¦è®¾ç½®æµè§ˆå™¨(或过滤å¼ä»£ç†)使用ä¸åŒçš„UserAgent,æ‰èƒ½è®¿é—®è·¯ç”±æŽ§åˆ¶å°çš„主题功能。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:349 +msgid "Router Console Language" +msgstr "路由控制å°è¯è¨€" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:353 +msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help." +msgstr "æ¬¢è¿ŽåŠ å…¥è·¯ç”±æŽ§åˆ¶å°ç¿»è¯‘项目ï¼æ供帮助请通过IRC到#i2p房间与开å‘人员è”系。" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106 +msgid "config update" +msgstr "å‡çº§è®¾ç½®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220 +msgid "I2P Update Configuration" +msgstr "I2P 更新设置" + #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334 +msgid "Check for I2P and news updates" +msgstr "检查I2P软件åŠæ–°é—»æ›´æ–°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:336 +msgid "News & I2P Updates" +msgstr "软件åŠæ–°é—»æ›´æ–°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:340 +msgid "Update In Progress" +msgstr "æ›´æ–°ä¸" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:344 +#: src/net/i2p/router/web/ConfigUpdateHandler.java:54 +msgid "Check for updates" +msgstr "检查更新" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:348 +msgid "News URL" +msgstr "新闻链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:352 +msgid "Refresh frequency" +msgstr "更新频率" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:356 msgid "Update policy" -msgstr "" +msgstr "å‡çº§ç–ç•¥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360 +msgid "Update through the eepProxy?" +msgstr "通过eepProxyæ›´æ–°?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:364 +msgid "eepProxy host" +msgstr "eepProxy主机" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:368 +msgid "eepProxy port" +msgstr "eepProxy端å£" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:372 +msgid "Update URLs" +msgstr "更新链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:376 +msgid "Trusted keys" +msgstr "å¯ä¿¡å…¬é’¥" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:380 +msgid "Update with unsigned development builds?" +msgstr "更新包括未ç¾åçš„å¼€å‘版?" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:384 +msgid "Unsigned Build URL" +msgstr "未ç¾å软件链接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:388 +msgid "Save" +msgstr "ä¿å˜" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117 +msgid "Page Not Found" +msgstr "页é¢æœªæ‰¾åˆ°" -#: src/net/i2p/router/web/CSSHelper.java:36 +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:241 +msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource." +msgstr "抱æ‰!您请求的页é¢æˆ–资æºä¸å˜åœ¨ã€‚" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243 +msgid "Error 404" +msgstr "错误 404" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:248 +msgid "not found" +msgstr "未找到" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106 +msgid "graphs" +msgstr "统计图" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220 +msgid "I2P Performance Graphs" +msgstr "I2P 性能图表" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105 +msgid "home" +msgstr "主页" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226 +#: src/net/i2p/router/web/CSSHelper.java:41 #: src/net/i2p/router/web/SummaryBarRenderer.java:26 #: src/net/i2p/router/web/SummaryBarRenderer.java:28 msgid "I2P Router Console" -msgstr "" +msgstr "I2P 路由控制å°" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105 +msgid "job queue" +msgstr "作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219 +msgid "I2P Router Job Queue" +msgstr "I2P 路由器作业队列" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105 +msgid "logs" +msgstr "日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219 +msgid "I2P Router Logs" +msgstr "I2P 路由器日志" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:221 +msgid "I2P Version & Running Environment" +msgstr "I2P 版本åŠè¿è¡ŒçŽ¯å¢ƒ" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:223 +msgid "Please include this information in bug reports" +msgstr "报告问题时请包括以下信æ¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105 +msgid "network database summary" +msgstr "I2P 网络数æ®åº“概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219 +msgid "I2P Network Database Summary" +msgstr "I2P 网络数æ®åº“概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldstats_jsp.java:105 +msgid "statistics" +msgstr "统计数æ®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldstats_jsp.java:234 +msgid "I2P Router Statistics" +msgstr "I2P 路由器统计数æ®" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105 +msgid "peer connections" +msgstr "节点连接" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219 +msgid "I2P Network Peers" +msgstr "I2P 网络节点" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105 +msgid "peer profiles" +msgstr "节点信æ¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219 +msgid "I2P Network Peer Profiles" +msgstr "I2P 网络节点信æ¯" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105 +msgid "tunnel summary" +msgstr "隧é“概况" + +#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219 +msgid "I2P Tunnel Summary" +msgstr "I2P 隧é“概况" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:59 +#: src/net/i2p/router/web/ConfigKeyringHandler.java:49 +msgid "Unsupported" +msgstr "未支æŒçš„" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:74 +msgid "Client configuration saved successfully - restart required to take effect." +msgstr "客户程åºè®¾ç½®ä¿å˜æˆåŠŸ - 程åºé‡å¯åŽç”Ÿæ•ˆ" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:80 +msgid "Bad client index." +msgstr "客户程åºç´¢å¼•æ— 效" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:85 +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/SummaryBarRenderer.java:359 +msgid "Client" +msgstr "客户" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:85 +#: src/net/i2p/router/web/ConfigClientsHandler.java:120 +msgid "started" +msgstr "å·²å¯åŠ¨" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:102 +msgid "WebApp configuration saved successfully - restart required to take effect." +msgstr "WebApp设置ä¿å˜æˆåŠŸ - 程åºé‡å¯åŽç”Ÿæ•ˆ" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:122 +msgid "Failed to start" +msgstr "å¯åŠ¨å¤±è´¥" + +#: src/net/i2p/router/web/ConfigClientsHandler.java:128 +msgid "Failed to find server." +msgstr "æœåŠ¡å™¨æˆ–æœåŠ¡ç¨‹åºæŸ¥æ‰¾å¤±è´¥ã€‚" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +msgid "Class and arguments" +msgstr "类与å‚æ•°" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Run at Startup?" +msgstr "系统å¯åŠ¨æ—¶è¿è¡Œï¼Ÿ" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:17 +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Start Now" +msgstr "ç«‹å³å¯åŠ¨" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "Description" +msgstr "æè¿°" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:33 +msgid "WebApp" +msgstr "Web程åº(WebApp)" + +#: src/net/i2p/router/web/ConfigClientsHelper.java:66 +msgid "Start" +msgstr "å¯åŠ¨" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:21 +msgid "You must enter a destination" +msgstr "æ‚¨å¿…é¡»è¾“å…¥ä¸€ä¸ªç›®æ ‡" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:23 +msgid "You must enter a key" +msgstr "您必须输入一个密钥" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:36 +msgid "Invalid destination or key" +msgstr "ç›®æ ‡æˆ–å¯†é’¥æ— æ•ˆ" + +#: src/net/i2p/router/web/ConfigKeyringHandler.java:45 +msgid "Invalid destination" +msgstr "ç›®æ ‡æ— æ•ˆ" + +#: src/net/i2p/router/web/ConfigNetHandler.java:119 +msgid "Rechecking router reachability..." +msgstr "æ£åœ¨é‡æ£€æŸ¥è·¯ç”±è¿žé€šæ€§..." + +#: src/net/i2p/router/web/ConfigNetHandler.java:148 +msgid "Updating IP address" +msgstr "æ£åœ¨æ›´æ–°IP地å€" + +#: src/net/i2p/router/web/ConfigNetHandler.java:166 +msgid "Disabling TCP completely" +msgstr "æ£åœ¨å½»åº•ç¦ç”¨TCP" + +#: src/net/i2p/router/web/ConfigNetHandler.java:170 +msgid "Updating inbound TCP address to" +msgstr "æ£åœ¨æ›´æ–°è¿›ç«™TCP地å€è‡³" + +#: src/net/i2p/router/web/ConfigNetHandler.java:174 +msgid "Disabling inbound TCP" +msgstr "æ£åœ¨ç¦ç”¨å…¥ç«™TCP" + +#: src/net/i2p/router/web/ConfigNetHandler.java:176 +msgid "Updating inbound TCP address to auto" +msgstr "æ£åœ¨æ›´æ–°å…¥ç«™TCP地å€è‡³" + +#: src/net/i2p/router/web/ConfigNetHandler.java:185 +msgid "Updating inbound TCP port to" +msgstr "æ£åœ¨æ›´æ–°å…¥ç«™TCP端å£è‡³" + +#: src/net/i2p/router/web/ConfigNetHandler.java:188 +msgid "Updating inbound TCP port to auto" +msgstr "æ£åœ¨æ›´æ–°å…¥ç«™TCP端å£è‡³" + +#: src/net/i2p/router/web/ConfigNetHandler.java:200 +msgid "Updating UDP port from" +msgstr "æ£åœ¨æ›´æ–°UDP端å£ç”±" + +#: src/net/i2p/router/web/ConfigNetHandler.java:200 +msgid "to" +msgstr "至" + +#: src/net/i2p/router/web/ConfigNetHandler.java:216 +msgid "Gracefully restarting into Hidden Router Mode" +msgstr "æ£åœ¨å¹³æ»‘é‡å¯è·¯ç”±è¿›å…¥éšèº«æ¨¡å¼" + +#: src/net/i2p/router/web/ConfigNetHandler.java:218 +msgid "Gracefully restarting to exit Hidden Router Mode" +msgstr "æ£åœ¨å¹³æ»‘é‡å¯è·¯ç”±é€€å‡ºéšèº«æ¨¡å¼" + +#: src/net/i2p/router/web/ConfigNetHandler.java:227 +msgid "Enabling UPnP, restart required to take effect" +msgstr "æ£åœ¨å¯ç”¨UPnP,程åºé‡å¯åŽç”Ÿæ•ˆ" + +#: src/net/i2p/router/web/ConfigNetHandler.java:229 +msgid "Disabling UPnP, restart required to take effect" +msgstr "æ£åœ¨ç¦ç”¨UPnP,程åºé‡å¯åŽç”Ÿæ•ˆ" + +#: src/net/i2p/router/web/ConfigNetHandler.java:235 +msgid "Requiring SSU introduers" +msgstr "æ£åœ¨èŽ·å–SSUä¸ä»‹" + +#: src/net/i2p/router/web/ConfigNetHandler.java:251 +msgid "Configuration saved successfully" +msgstr "设置ä¿å˜æˆåŠŸ" + +#: src/net/i2p/router/web/ConfigNetHandler.java:253 +msgid "Error saving the configuration (applied but not saved) - please see the error logs" +msgstr "é…ç½®ä¿å˜å‡ºé”™(已应用但未ä¿å˜) - å‚è§é”™è¯¯æ—¥å¿—" + +#: src/net/i2p/router/web/ConfigNetHandler.java:293 +msgid "Updating bandwidth share percentage" +msgstr "æ£åœ¨æ›´æ–°å…±äº«å¸¦å®½æ¯”例" + +#: src/net/i2p/router/web/ConfigNetHandler.java:363 +msgid "Updated bandwidth limits" +msgstr "带宽é™åˆ¶æ›´æ–°å®Œæ¯•" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:24 +#: src/net/i2p/router/web/ConfigPeerHandler.java:33 +#: src/net/i2p/router/web/ConfigPeerHandler.java:35 +msgid "Peer" +msgstr "节点" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:24 +msgid "banned until restart" +msgstr "å·²å°é”直到é‡å¯" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:27 +#: src/net/i2p/router/web/ConfigPeerHandler.java:38 +#: src/net/i2p/router/web/ConfigPeerHandler.java:59 +msgid "Invalid peer" +msgstr "æ— æ•ˆèŠ‚ç‚¹" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:33 +msgid "unbanned" +msgstr "已解å°" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:35 +msgid "is not currently banned" +msgstr "ç›®å‰æœªå°é”" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:47 +msgid "Bad speed value" +msgstr "é€Ÿåº¦å€¼æ— æ•ˆ" + +#: src/net/i2p/router/web/ConfigPeerHandler.java:52 +msgid "Bad capacity value" +msgstr "容é‡å€¼æ— 效" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:56 +msgid "Graceful shutdown initiated" +msgstr "开始平滑关é—" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:60 +msgid "Shutdown immediately! boom bye bye bad bwoy" +msgstr "ç«‹å³å…³é—ï¼ä¸æŽ¨è" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:63 +msgid "Graceful shutdown cancelled" +msgstr "平滑关é—å·²å–消" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:67 +msgid "Graceful restart requested" +msgstr "平滑é‡å¯å·²è¯·æ±‚" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:71 +msgid "Hard restart requested" +msgstr "硬é‡å¯å·²è¯·æ±‚" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:72 +msgid "Rekey and Restart" +msgstr "æ›´æ¢å¯†é’¥å¹¶é‡å¯" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:73 +msgid "Rekeying after graceful restart" +msgstr "平滑é‡å¯åŽæ›´æ¢å¯†é’¥" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:76 +msgid "Rekey and Shutdown" +msgstr "æ›´æ¢å¯†é’¥å¹¶å…³é—" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:77 +msgid "Rekeying after graceful shutdown" +msgstr "平滑关é—åŽæ›´æ¢å¯†é’¥" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:96 +msgid "System tray icon enabled." +msgstr "ç³»ç»Ÿæ‰˜ç›˜å›¾æ ‡å·²å¯ç”¨" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:98 +#: src/net/i2p/router/web/ConfigServiceHandler.java:110 +msgid "System tray icon feature not supported on this platform. Sorry!" +msgstr "您的平å°ä¸æ”¯æŒç³»ç»Ÿæ‰˜ç›˜å›¾æ ‡åŠŸèƒ½" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:101 +#: src/net/i2p/router/web/ConfigServiceHandler.java:113 +msgid "Warning: unable to contact the systray manager" +msgstr "è¦å‘Šï¼šä¸Žæ‰˜ç›˜ç®¡ç†å™¨é€šè®¯å¤±è´¥" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:108 +msgid "System tray icon disabled." +msgstr "系统托盘已ç¦ç”¨" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:117 +msgid "Console is to be shown on startup" +msgstr "å¯åŠ¨åŽæ˜¾ç¤ºæŽ§åˆ¶å°" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:120 +msgid "Console is not to be shown on startup" +msgstr "å¯åŠ¨åŽä¸æ˜¾ç¤ºæŽ§åˆ¶å°" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:129 +msgid "Service installed" +msgstr "æœåŠ¡å·²å®‰è£…" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:131 +msgid "Warning: unable to install the service" +msgstr "è¦å‘Šï¼šæ— 法安装æœåŠ¡" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:137 +msgid "Service removed" +msgstr "æœåŠ¡å·²å¸è½½" + +#: src/net/i2p/router/web/ConfigServiceHandler.java:139 +msgid "Warning: unable to remove the service" +msgstr "è¦å‘Šï¼šæ— 法å¸è½½æœåŠ¡" + +#: src/net/i2p/router/web/ConfigTunnelsHandler.java:140 +msgid "Exploratory tunnel configuration saved successfully." +msgstr "探索隧é“设置ä¿å˜æˆåŠŸã€‚" + +#: src/net/i2p/router/web/ConfigTunnelsHandler.java:142 +msgid "Error saving the configuration (applied but not saved) - please see the error logs." +msgstr "é…ç½®ä¿å˜å‡ºé”™(已应用但未ä¿å˜) - å‚è§é”™è¯¯æ—¥å¿—" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:21 +#: src/net/i2p/router/web/TunnelRenderer.java:40 +msgid "Exploratory tunnels" +msgstr "探测隧é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:41 +#: src/net/i2p/router/web/TunnelRenderer.java:59 +msgid "Client tunnels for" +msgstr "å®¢æˆ·éš§é“ - " + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:64 +msgid "ANONYMITY WARNING - Settings include 0-hop tunnels." +msgstr "匿å性è¦å‘Š - 设置ä¸åŒ…括 0-跳点 隧é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:69 +msgid "ANONYMITY WARNING - Settings include 1-hop tunnels." +msgstr "匿å性è¦å‘Š - 设置ä¸åŒ…括 1-跳点 隧é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:72 +msgid "PERFORMANCE WARNING - Settings include very long tunnels." +msgstr "性能è¦å‘Š - 设置ä¸åŒ…括长隧é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:75 +msgid "PERFORMANCE WARNING - Settings include high tunnel quantities." +msgstr "性能è¦å‘Š - 设置ä¸åŒ…括高质é‡éš§é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +msgid "Inbound" +msgstr "入站" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:77 +msgid "Outbound" +msgstr "出站" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:82 +msgid "Depth" +msgstr "深度" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:85 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:87 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:92 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:94 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:102 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:103 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:104 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:106 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:108 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:113 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:114 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:115 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:117 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:119 +msgid "hop" +msgstr "跳点" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:99 +msgid "Randomization" +msgstr "éšæœº" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:123 +msgid "Quantity" +msgstr "è´¨é‡" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:126 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:128 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:133 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:135 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:143 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:145 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:150 +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:152 +msgid "tunnel" +msgstr "隧é“" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:140 +msgid "Backup quantity" +msgstr "备用质é‡" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:162 +msgid "Inbound options" +msgstr "入站选项" + +#: src/net/i2p/router/web/ConfigTunnelsHelper.java:175 +msgid "Outbound options" +msgstr "出站选项" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "classic" +msgstr "ç»å…¸" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "dark" +msgstr "暗色调" + +#: src/net/i2p/router/web/ConfigUIHelper.java:6 +msgid "light" +msgstr "亮色调" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "English" +msgstr "英è¯" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "French" +msgstr "法è¯" + +#: src/net/i2p/router/web/ConfigUIHelper.java:21 +msgid "German" +msgstr "å¾·è¯" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Chinese" +msgstr "ä¸æ–‡" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Dutch" +msgstr "è·å…°è¯" + +#: src/net/i2p/router/web/ConfigUIHelper.java:22 +msgid "Swedish" +msgstr "瑞士è¯" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:61 +msgid "Update available, attempting to download now" +msgstr "有更新å¯ç”¨ï¼Œæ£åœ¨å°è¯•ä¸‹è½½" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:63 +msgid "Update available, click button on left to download" +msgstr "有更新å¯ç”¨ï¼Œç‚¹å·¦ä¾§æŒ‰é’®ä¸‹è½½" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:65 +msgid "No update available" +msgstr "æ— æ›´æ–°" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:72 +msgid "Updating news URL to" +msgstr "æ£åœ¨æ›´æ–°æ–°é—»é“¾æŽ¥è‡³" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:80 +msgid "Updating proxy host to" +msgstr "æ£åœ¨æ›´æ–°ä»£ç†ä¸»æœºè‡³" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:88 +msgid "Updating proxy port to" +msgstr "æ£åœ¨æ›´æ–°ä»£ç†ç«¯å£è‡³" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:101 +msgid "Updating refresh frequency to" +msgstr "æ£åœ¨æ›´æ–°æ›´æ–°é¢‘率为" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:108 +msgid "Updating update policy to" +msgstr "æ£åœ¨æ›´æ–°å‡çº§ç–略为" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:117 +msgid "Updating update URLs." +msgstr "æ£åœ¨æ›´æ–°æ›´æ–°é“¾æŽ¥è‡³" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:125 +msgid "Updating trusted keys." +msgstr "æ£åœ¨æ›´æ–°å¯ä¿¡å…¬é’¥ä¸º" + +#: src/net/i2p/router/web/ConfigUpdateHandler.java:133 +msgid "Updating unsigned update URL to" +msgstr "æ£åœ¨æ›´æ–°æœªç¾å软件链接至" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:75 +msgid "Never" +msgstr "从ä¸" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:77 +msgid "Every" +msgstr "æ¯" #: src/net/i2p/router/web/ConfigUpdateHelper.java:90 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:92 msgid "Notify only" -msgstr "" +msgstr "åªæ示" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:95 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:97 +msgid "Download and verify only" +msgstr "仅下载并验è¯" + +#: src/net/i2p/router/web/ConfigUpdateHelper.java:101 +#: src/net/i2p/router/web/ConfigUpdateHelper.java:103 +msgid "Download, verify, and restart" +msgstr "仅下载ã€éªŒè¯å¹¶é‡å¯" + +#: src/net/i2p/router/web/NetDbRenderer.java:58 +msgid "Network Database RouterInfo Lookup" +msgstr "网络数æ®åº“ RouterInfo 检索" + +#: src/net/i2p/router/web/NetDbRenderer.java:73 +msgid "Router" +msgstr "路由器" + +#: src/net/i2p/router/web/NetDbRenderer.java:73 +msgid "not found in network database" +msgstr "在网络数æ®åº“概况未找到" + +#: src/net/i2p/router/web/NetDbRenderer.java:85 +#: src/net/i2p/router/web/NetDbRenderer.java:138 +msgid "Network Database Contents" +msgstr "网络数æ®åº“内容" + +#: src/net/i2p/router/web/NetDbRenderer.java:86 +#: src/net/i2p/router/web/NetDbRenderer.java:138 +msgid "View" +msgstr "查看" + +#: src/net/i2p/router/web/NetDbRenderer.java:97 +msgid "Local" +msgstr "本地" + +#: src/net/i2p/router/web/NetDbRenderer.java:99 +msgid "Unpublished" +msgstr "未å‘布" + +#: src/net/i2p/router/web/NetDbRenderer.java:100 +#: src/net/i2p/router/web/NetDbRenderer.java:107 +msgid "Destination" +msgstr "ç›®æ ‡" + +#: src/net/i2p/router/web/NetDbRenderer.java:121 +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Gateway" +msgstr "网关" + +#: src/net/i2p/router/web/NetDbRenderer.java:123 +msgid "Tunnel" +msgstr "隧é“" + +#: src/net/i2p/router/web/NetDbRenderer.java:140 +msgid "Not initialized" +msgstr "未åˆå§‹åŒ–" + +#: src/net/i2p/router/web/NetDbRenderer.java:147 +msgid "Routers" +msgstr "路由器" + +#: src/net/i2p/router/web/NetDbRenderer.java:149 +msgid "view without" +msgstr "查看ä¸å¸¦" + +#: src/net/i2p/router/web/NetDbRenderer.java:151 +msgid "view with" +msgstr "查看带" + +#: src/net/i2p/router/web/NetDbRenderer.java:152 +msgid "stats" +msgstr "统计" + +#: src/net/i2p/router/web/NetDbRenderer.java:186 +#: src/net/i2p/router/web/NetDbRenderer.java:202 +msgid "Count" +msgstr "计数" + +#: src/net/i2p/router/web/NetDbRenderer.java:186 +#: src/net/i2p/router/web/SummaryBarRenderer.java:150 +msgid "Version" +msgstr "版本" + +#: src/net/i2p/router/web/NetDbRenderer.java:202 +msgid "Country" +msgstr "国家" + +#: src/net/i2p/router/web/NetDbRenderer.java:225 +msgid "Our info" +msgstr "我方信æ¯" + +#: src/net/i2p/router/web/NetDbRenderer.java:227 +msgid "Peer info for" +msgstr "节点信æ¯" + +#: src/net/i2p/router/web/NetDbRenderer.java:237 +msgid "Updated" +msgstr "已更新" + +#: src/net/i2p/router/web/NetDbRenderer.java:237 +#: src/net/i2p/router/web/NetDbRenderer.java:239 +msgid "ago" +msgstr "å‰" + +#: src/net/i2p/router/web/NetDbRenderer.java:239 +#: src/net/i2p/router/web/NetDbRenderer.java:241 +msgid "Published" +msgstr "å‘布" + +#: src/net/i2p/router/web/NetDbRenderer.java:242 +msgid "Address(es)" +msgstr "地å€" + +#: src/net/i2p/router/web/NetDbRenderer.java:259 +#: src/net/i2p/router/web/SummaryBarRenderer.java:124 +msgid "Stats" +msgstr "统计数æ®" #: src/net/i2p/router/web/SummaryBarRenderer.java:42 msgid "I2P Services" -msgstr "" +msgstr "I2P æœåŠ¡" #: src/net/i2p/router/web/SummaryBarRenderer.java:48 msgid "Manage your I2P hosts file here (I2P domain name resolution)" -msgstr "" +msgstr "管ç†æ‚¨çš„ I2P HOST表(I2P域å解æžè¡¨)" #: src/net/i2p/router/web/SummaryBarRenderer.java:50 msgid "Addressbook" -msgstr "" +msgstr "地å€ç°¿" #: src/net/i2p/router/web/SummaryBarRenderer.java:54 msgid "Built-in anonymous BitTorrent Client" -msgstr "" +msgstr "内建的匿å BitTorrent 客户端" #: src/net/i2p/router/web/SummaryBarRenderer.java:56 msgid "Torrents" -msgstr "" +msgstr "匿åBT" #: src/net/i2p/router/web/SummaryBarRenderer.java:60 msgid "Anonymous webmail client" -msgstr "" +msgstr "匿åWeb邮件客户端" #: src/net/i2p/router/web/SummaryBarRenderer.java:62 msgid "Webmail" -msgstr "" +msgstr "匿å邮箱" #: src/net/i2p/router/web/SummaryBarRenderer.java:66 msgid "Anonymous resident webserver" -msgstr "" +msgstr "内置的匿åWebæœåŠ¡å™¨" #: src/net/i2p/router/web/SummaryBarRenderer.java:68 msgid "Webserver" -msgstr "" +msgstr "匿å主页" #: src/net/i2p/router/web/SummaryBarRenderer.java:72 msgid "Configure I2P Router" -msgstr "" +msgstr "设置 I2P 路由器" #: src/net/i2p/router/web/SummaryBarRenderer.java:74 msgid "I2P Internals" -msgstr "" +msgstr "I2P内部设置" #: src/net/i2p/router/web/SummaryBarRenderer.java:80 #: src/net/i2p/router/web/SummaryBarRenderer.java:344 msgid "View existing tunnels and tunnel build status" -msgstr "" +msgstr "查看现å˜éš§é“åŠéš§é“的建立状æ€" #: src/net/i2p/router/web/SummaryBarRenderer.java:82 +#: src/net/i2p/router/web/TunnelRenderer.java:252 msgid "Tunnels" -msgstr "" +msgstr "隧é“" #: src/net/i2p/router/web/SummaryBarRenderer.java:86 #: src/net/i2p/router/web/SummaryBarRenderer.java:221 msgid "Show all current peer connections" -msgstr "" +msgstr "显示当å‰æ‰€æœ‰çš„节点连接" #: src/net/i2p/router/web/SummaryBarRenderer.java:88 #: src/net/i2p/router/web/SummaryBarRenderer.java:223 msgid "Peers" -msgstr "" +msgstr "节点" #: src/net/i2p/router/web/SummaryBarRenderer.java:92 msgid "Show recent peer performance profiles" -msgstr "" +msgstr "显示当å‰èŠ‚点的性能记录" #: src/net/i2p/router/web/SummaryBarRenderer.java:94 msgid "Profiles" -msgstr "" +msgstr "节点信æ¯" #: src/net/i2p/router/web/SummaryBarRenderer.java:98 msgid "Show list of all known I2P routers" -msgstr "" +msgstr "包å«æ‰€æœ‰å·²çŸ¥I2P路由器的列表" #: src/net/i2p/router/web/SummaryBarRenderer.java:100 msgid "NetDB" -msgstr "" +msgstr "NetDB" #: src/net/i2p/router/web/SummaryBarRenderer.java:104 msgid "Health Report" -msgstr "" +msgstr "路由器å¥åº·çŠ¶å†µæŠ¥å‘Š" #: src/net/i2p/router/web/SummaryBarRenderer.java:106 msgid "Logs" -msgstr "" +msgstr "日志" #: src/net/i2p/router/web/SummaryBarRenderer.java:110 msgid "Show the router's workload, and how it's performing" -msgstr "" +msgstr "显示I2P路由器的负载与工作状况" #: src/net/i2p/router/web/SummaryBarRenderer.java:112 msgid "Jobs" -msgstr "" +msgstr "作业" #: src/net/i2p/router/web/SummaryBarRenderer.java:116 msgid "Graph router performance" -msgstr "" +msgstr "路由性能统计图" #: src/net/i2p/router/web/SummaryBarRenderer.java:118 msgid "Graphs" -msgstr "" +msgstr "统计图" #: src/net/i2p/router/web/SummaryBarRenderer.java:122 msgid "Textual router performance statistics" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:124 -msgid "Stats" -msgstr "" +msgstr "路由性能文å—统计" #: src/net/i2p/router/web/SummaryBarRenderer.java:134 msgid "I2P Router Help" -msgstr "" +msgstr "I2P路由帮助" #: src/net/i2p/router/web/SummaryBarRenderer.java:136 msgid "General" -msgstr "" +msgstr "功能概述" #: src/net/i2p/router/web/SummaryBarRenderer.java:139 msgid "Your unique I2P router identity is" -msgstr "" +msgstr "您I2P路由的唯一身份为" #: src/net/i2p/router/web/SummaryBarRenderer.java:143 msgid "never reveal it to anyone" -msgstr "" +msgstr "切勿将其告诉任何人" #: src/net/i2p/router/web/SummaryBarRenderer.java:145 msgid "Local Identity" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:150 -msgid "Version" -msgstr "" +msgstr "本地身份" #: src/net/i2p/router/web/SummaryBarRenderer.java:157 msgid "How long we've been running for this session" -msgstr "" +msgstr "本次路由è¿è¡Œæ—¶é—´" #: src/net/i2p/router/web/SummaryBarRenderer.java:160 msgid "Uptime" -msgstr "" +msgstr "è¿è¡Œæ—¶é—´" #: src/net/i2p/router/web/SummaryBarRenderer.java:167 -msgid "" -"Help with configuring your firewall and router for optimal I2P performance" -msgstr "" +msgid "Help with configuring your firewall and router for optimal I2P performance" +msgstr "如何æ£ç¡®é…置防ç«å¢™å’Œ(物ç†)路由器优化I2P性能" #: src/net/i2p/router/web/SummaryBarRenderer.java:194 msgid "Download" -msgstr "" +msgstr "下载" #: src/net/i2p/router/web/SummaryBarRenderer.java:198 -#: src/net/i2p/router/web/SummaryBarRenderer.java:207 +#: src/net/i2p/router/web/SummaryBarRenderer.java:205 msgid "Update" -msgstr "" +msgstr "å‡çº§" #: src/net/i2p/router/web/SummaryBarRenderer.java:203 msgid "Download Unsigned" -msgstr "" +msgstr "下载未ç¾åæ›´æ–°" #: src/net/i2p/router/web/SummaryBarRenderer.java:229 msgid "Active" -msgstr "" +msgstr "活动节点" #: src/net/i2p/router/web/SummaryBarRenderer.java:237 msgid "Fast" -msgstr "" +msgstr "快速节点" #: src/net/i2p/router/web/SummaryBarRenderer.java:243 msgid "High capacity" -msgstr "" +msgstr "高容é‡èŠ‚点" #: src/net/i2p/router/web/SummaryBarRenderer.java:249 msgid "Integrated" -msgstr "" +msgstr "已整åˆèŠ‚点" #: src/net/i2p/router/web/SummaryBarRenderer.java:255 msgid "Known" -msgstr "" +msgstr "已知节点" #: src/net/i2p/router/web/SummaryBarRenderer.java:270 msgid "Help with firewall configuration" -msgstr "" +msgstr "如何é…置防ç«å¢™" #: src/net/i2p/router/web/SummaryBarRenderer.java:272 msgid "Check NAT/firewall" -msgstr "" +msgstr "检查NAT/防ç«å¢™" #: src/net/i2p/router/web/SummaryBarRenderer.java:309 msgid "Configure router bandwidth allocation" -msgstr "" +msgstr "设置路由的带宽分é…" #: src/net/i2p/router/web/SummaryBarRenderer.java:311 msgid "Bandwidth in/out" -msgstr "" +msgstr "带宽(上/下行)" #: src/net/i2p/router/web/SummaryBarRenderer.java:328 msgid "Total" -msgstr "" +msgstr "总计" #: src/net/i2p/router/web/SummaryBarRenderer.java:336 msgid "Used" -msgstr "" +msgstr "已使用" #: src/net/i2p/router/web/SummaryBarRenderer.java:346 msgid "Tunnels in/out" -msgstr "" +msgstr "通é“(上/下行)" #: src/net/i2p/router/web/SummaryBarRenderer.java:351 msgid "Exploratory" -msgstr "" - -#: src/net/i2p/router/web/SummaryBarRenderer.java:359 -msgid "Client" -msgstr "" +msgstr "探测" #: src/net/i2p/router/web/SummaryBarRenderer.java:367 msgid "Participating" -msgstr "" +msgstr "共享" #: src/net/i2p/router/web/SummaryBarRenderer.java:373 msgid "What's in the router's job queue?" -msgstr "" +msgstr "查看路由的作业队列" #: src/net/i2p/router/web/SummaryBarRenderer.java:375 msgid "Congestion" -msgstr "" +msgstr "æ‹¥å µ" #: src/net/i2p/router/web/SummaryBarRenderer.java:380 msgid "Job lag" -msgstr "" +msgstr "作业延迟" #: src/net/i2p/router/web/SummaryBarRenderer.java:386 msgid "Message delay" -msgstr "" +msgstr "消æ¯å»¶è¿Ÿ" #: src/net/i2p/router/web/SummaryBarRenderer.java:392 msgid "Tunnel lag" -msgstr "" +msgstr "隧é“延迟" #: src/net/i2p/router/web/SummaryBarRenderer.java:398 msgid "Backlog" -msgstr "" +msgstr "积压" + +#: src/net/i2p/router/web/TunnelRenderer.java:40 +#: src/net/i2p/router/web/TunnelRenderer.java:61 +msgid "config" +msgstr "设置" + +#: src/net/i2p/router/web/TunnelRenderer.java:69 +msgid "Participating tunnels" +msgstr "共享隧é“" + +#: src/net/i2p/router/web/TunnelRenderer.java:70 +msgid "From" +msgstr "从" + +#: src/net/i2p/router/web/TunnelRenderer.java:70 +msgid "Receive on" +msgstr "接收" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "Expiration" +msgstr "到期" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "Send on" +msgstr "å‘é€" + +#: src/net/i2p/router/web/TunnelRenderer.java:71 +msgid "To" +msgstr "至" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "Rate" +msgstr "速度" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +msgid "Role" +msgstr "èŒèƒ½" + +#: src/net/i2p/router/web/TunnelRenderer.java:72 +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Usage" +msgstr "使用情况" + +#: src/net/i2p/router/web/TunnelRenderer.java:116 +msgid "Outbound Endpoint" +msgstr "出站终端" + +#: src/net/i2p/router/web/TunnelRenderer.java:118 +msgid "Inbound Gateway" +msgstr "入站网关" + +#: src/net/i2p/router/web/TunnelRenderer.java:120 +#: src/net/i2p/router/web/TunnelRenderer.java:161 +msgid "Participant" +msgstr "å‚与节点" + +#: src/net/i2p/router/web/TunnelRenderer.java:125 +msgid "Inactive participating tunnels" +msgstr "ä¸æ´»è·ƒçš„共享隧é“" + +#: src/net/i2p/router/web/TunnelRenderer.java:126 +msgid "Lifetime bandwidth usage" +msgstr "è¿è¡ŒæœŸé—´å¸¦å®½ä½¿ç”¨æƒ…况" + +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "Expiry" +msgstr "到期" + +#: src/net/i2p/router/web/TunnelRenderer.java:155 +msgid "In/Out" +msgstr "å…¥/出" + +#: src/net/i2p/router/web/TunnelRenderer.java:158 +msgid "Participants" +msgstr "å‚与节点" + +#: src/net/i2p/router/web/TunnelRenderer.java:164 +msgid "Endpoint" +msgstr "终端" + +#: src/net/i2p/router/web/TunnelRenderer.java:204 +#: src/net/i2p/router/web/TunnelRenderer.java:210 +msgid "Build in progress" +msgstr "创建ä¸" + +#: src/net/i2p/router/web/TunnelRenderer.java:204 +msgid "inbound" +msgstr "入站" + +#: src/net/i2p/router/web/TunnelRenderer.java:210 +msgid "outbound" +msgstr "出站" + +#: src/net/i2p/router/web/TunnelRenderer.java:214 +msgid "No tunnels; waiting for the grace period to end." +msgstr "æ— éš§é“ï¼›ç‰å¾…宽é™æœŸç»“æŸã€‚" + +#: src/net/i2p/router/web/TunnelRenderer.java:233 +msgid "Tunnel Counts By Peer" +msgstr "æ¯èŠ‚点隧é“计数" + +#~ msgid "" +#~ "If you want the router to restart itself after shutting down, you can " +#~ "choose one of the following. This is useful in some situations - for " +#~ "example, if you changed some settings that client applications only read " +#~ "at startup, such as the routerconsole password or the interface it " +#~ "listens on. A graceful restart will take a few minutes (but your peers " +#~ "will appreciate your patience), while a hard restart does so " +#~ "immediately. After tearing down the router, it will wait 1 minute before " +#~ "starting back up again." +#~ msgstr "" +#~ "å¦‚æžœä½ æƒ³è¦è·¯ç”±å™¨å…³é—åŽé‡æ–°å¯åŠ¨ï¼Œå¯ä»¥é€‰æ‹©ä¸‹é¢çš„选项。é‡å¯åœ¨æŸäº›æƒ…况下有用 " +#~ "- 例如当修改了客户程åºä»…在å¯åŠ¨æ—¶è¯»å–的设置比如路由器控制界é¢çš„密ç ,监å¬çš„" +#~ "接å£ã€‚平滑é‡å¯å¯èƒ½ä¼šç‰å¾…å‡ åˆ†é’Ÿçš„æ—¶é—´ (ä½†å…¶ä»–èŠ‚ç‚¹ä¸€å®šä¼šæ„Ÿæ¿€ä½ çš„è€å¿ƒ),硬é‡" +#~ "å¯å¯ä»¥ç«‹å³å®Œæˆã€‚ 路由关é—åŽå°†ç‰å¾…1分钟å†é‡æ–°å¯åŠ¨ã€‚" +#~ msgid "" +#~ "On the windows platform, there is a small application to sit in the " +#~ "system tray, allowing you to view the router's status (later on, I2P " +#~ "client applications will be able to integrate their own functionality " +#~ "into the system tray as well). If you are on windows, you can either " +#~ "enable or disable that icon here." +#~ msgstr "" +#~ "windows å¹³å°å…许å°ç¨‹åºè¿›é©»ç³»ç»Ÿæ‰˜ç›˜ï¼Œè®©ä½ å¯ä»¥æŸ¥çœ‹è·¯ç”±çŠ¶æ€ï¼Œ(以åŽçš„ I2P 客户" +#~ "端程åºä¹Ÿä¼šå°†å®ƒä»¬çš„功能集æˆåˆ°ç³»ç»Ÿæ‰˜ç›˜é‡Œ)ã€‚å¦‚æžœä½ ä½¿ç”¨Windows, å¯ä»¥åœ¨è¿™é‡Œå¼€å¯" +#~ "或关é—è¿™ä¸ªæ‰˜ç›˜å›¾æ ‡ã€‚" + diff --git a/codeswarm-extractor.rb b/codeswarm-extractor.rb new file mode 100755 index 0000000000000000000000000000000000000000..585dac45dca371b2ca20ff27384f9b3cbe8cb102 --- /dev/null +++ b/codeswarm-extractor.rb @@ -0,0 +1,82 @@ +#!/usr/bin/env ruby1.9 + +require 'date' + +MAPPING={ + '"zzz@mail.i2p"' => 'zzz', + '"z3d@mail.i2p"' => 'dr|z3d', + '"sponge@mail.i2p"' => 'sponge', + '"mkvore-commit@mail.i2p"' => 'mkvore', + '"complication@mail.i2p"' => 'complication', + '"dev@welterde.de"' => 'welterde', + '"Oldaris@mail.i2p"' => 'oldaris', + '"mathiasdm@mail.i2p"' => 'mathiasdm', + '"amiga4000@mail.i2p"' => 'amiga4000', + '"dream@mail.i2p"' => 'dream', + '"walking@mail.i2p"' => 'walking', + '"jrandom@i2p.net"' => 'jrandom', + '"jrandom-transfer@i2p.net"' => 'jrandom', + '"transport@welterde.de"' => 'welterde', + '"echelon@mail.i2p"' => 'eche|on', + '"z3d@i2p"' => 'dr|z3d', + '"cervantes@mail.i2p"' => 'cervantes', + '"BlubMail@mail.i2p"' => 'BlubMail' +} + +roots=[] +`mtn automate roots`.split("\n").map {|n| n.strip}.each do |rev| + roots << rev +end + +revs = [] +roots.each do |root| + `mtn automate descendents #{root}`.split("\n").map {|n| n.strip}.each do |rev| + revs << rev + end +end + +# open the file +f=File::open('/tmp/i2p.xml', 'w') +f << '<?xml version="1.0"?>' +f << "\n" +f << '<file_events>' +f << "\n" +d=[] +revs.each do |rev| + print rev + print " - " + certs_=`mtn automate certs #{rev}`.split("\n").map{|l|l2=l.strip; l2.split(" ", 2) if l2 != ""} + author=certs_[3][1] + date=nil + branch='""' + certs_.each_index do |i| + next unless certs_[i] + if certs_[i][1] + date=certs_[i+1][1] if certs_[i][1].strip === '"date"' + branch=certs_[i+1][1] if certs_[i][1].strip === '"branch"' + end + end + info=`mtn automate get_revision #{rev}`.strip.split("\n").map{|l|l2=l.strip; l2.split(" ", 2) if l2 != ""} + print date + date=DateTime.parse(date).to_time.to_i*1000 + print " - " + print date + print " - " + print branch + print " - " + puts author + info.each do |line| + next unless line + d << [date, (branch.strip[1..-2] + '//' + line[1].strip[1..-2]), (MAPPING[author] or author[1..-2])] if line[0].strip == "patch" + end +end + +d.sort! {|a,b| a[0] <=> b[0]} + +d.each do |a| + f << "<event date=\"#{a[0]}\" filename=\"#{a[1]}\" author=\"#{a[2]}\" />\n" +end + +f << '</file_events>' +f << "\n" +f.close() diff --git a/history.txt b/history.txt index ba49a9f94d598fc9cf85c2db92f0bf04ffdc7afd..30fa01e8f4d35a11339a6bd1853df9624aa83581 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,69 @@ +2009-10-23 zzz + * Certificate: Fix the (apparently unused) readBytes(byte[], int) method + for a null certificate - http://zzz.i2p/topics/388 - thanks HungryHobo + * Console: + - Don't hide link to configui.jsp for IE any more + - Add lang selection on configui.jsp + - Tag strings in configui.jsp + - Load console_big.css if lang == zh + - Add _x() tag for static iniitializers + - HTML transitional input tags + - Rename cssHelper to intl for ease of tagging + * Update: Better error message when .sud file not found or truncated + http://forum.i2p/viewtopic.php?t=3979 + The bug with the file going to the wrong place was fixed a couple months ago. + +2009-10-21 dr|z3d + * Enhance index.jsp with "paperclips" for the main links + * Tighten sidepanel layout to gain us some vertical screen real estate + * Update news.xml with the correct link for Chinese translation page + +2009-10-20 zzz + * I2NP: Remove old TunnelCreateMessage and TunnelCreateStatusMessage + * Logger: Don't kill the whole JVM if we can't open the log file + * MessageHistory: Cleanups + * NetDb: Move renderStatusHTML to routerconsole + * Router Console translation infrastructure: + - Persistent lang setting with routerconsole.lang=xx + - Loading any page with ?lang=xx changes the persistent setting + - Add a custom Jetty handler to load foo_xx.jsp if it + exists for language xx. This is for jsp files with lots + of text in them. Otherwise use inline translate methods. + Not for included jsps. + - Add a script to create and update messages_xx.po translation + files, and create ResourceBundles from them + - Add class to translate strings from cached ResourceBundles + - Add translate wrappers to HelperBase, FormHandler, and *Renderer, + so calls can be made from both jsp and java files + - Add example translations on configupdate.jsp - two in + the jsp itself and one in the helper. + - This is for strings in routerconsole only. Will be expanded + to other webapps and the router later. + * summarynoframe.jsp: + - Refactor to SummaryBarRenderer (saves 100KB) + - Add translate tags + - Use context RNG for nonces + - Transitional HTML style for input tags + * TunnelDispatcher: Drop messages that expire far in the future + * TunnelPoolManager: Move renderStatusHTML to routerconsole + +2009-10-16 dr|z3d + * Extensive UI whitespace cleanups and positional finessing. + +2009-10-16 zzz + * Crypto: Two more test classes out of the lib + * FloodfillMonitor: Slow down the volunteers again + * i2psnark: Add TPB tracker + * NetDb: Rework part 1 of N: + - Flood only to those closest to the key + - Java 5 fixups + * oldconsole.jsp: Remove almost all of it, add lines for tino + * ProfileOrganizerRenderer: + - Move to routerconsole + - Write directly to Writer for speed + * Router: Add router.hideFloodfillParticipant option for testing + * StatisticsManager: Cleanup after release + * 2009-10-12 0.7.7 released 2009-10-11 zzz diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index e04eae9553b7d80e962fb5e586723634fe0e6e4c..b09b508ad1b548b014fb6ec53452612754329f01 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -68,8 +68,8 @@ div.warning { border: 5px solid #fb7; text-align: left; color: inherit; - background-image:url("../images/errortriangle.png"); - background-position: 17px center; + background-image:url("../images/itoopie_sm.png"); + background-position: 12px center; background-repeat:no-repeat; -moz-border-radius: 15px; -moz-box-shadow: inset 0px 0px 0px 2px #f60; @@ -169,11 +169,10 @@ div.routersummary hr { div.routersummary h3 { border: 0px solid #f00; -/* border-bottom: 1px solid #99f !important;*/ - font-size: 10pt; + font-size: 9.5pt; letter-spacing: 0.05em; margin: -7px 1px -7px 1px; - padding: 5px 0px 5px 0px; + padding: 1px 0; background: #c5d5fb; text-transform: uppercase; } @@ -181,10 +180,10 @@ div.routersummary h3 { div.routersummary h4 { border: 0px solid #f00; border-bottom: 0 !important; - font-size: 9pt; + font-size: 8.5pt; letter-spacing: 0.05em; margin: -7px 1px -7px 1px !important; - padding: 2px 3px 3px 3px; + padding: 1px 3px; background: #c1d1f7; text-transform: capitalize; text-decoration: none !important; @@ -194,11 +193,11 @@ div.routersummary h4 { div.routersummary table { border: 0; text-align: center !important; - margin: -5px 5px -5px 2px; + margin: -5px 4px -5px 3px; width: 180px !important; overflow: hidden; font-size: 8pt; - padding: 0px -10px; + padding: 0 -10px; background-image: none !important; background-color: transparent !important; } @@ -209,8 +208,24 @@ div.routersummary tr { border: 0 !important; } +div.tunnels table{ + margin: 0 !important; +} + +.tunnels tr { + padding: 2px 0 !important; + margin-left: -7px !important; +} + div.routersummary form { - margin-top: 8px; + margin-top: -6px !important; + margin-bottom: -4px !important; +} + +div.refresh { + margin-top: 10px !important; + margin-bottom: 10px !important; + padding: 2px 0 !important; } div.routersummary p { @@ -227,21 +242,11 @@ div.routersummary a:hover { } div.routersummary td { - padding: 2px 4px; + padding: 0 4px; background-image: none !important; border: 0 !important; } -div.routersummary tr:nth-child(even) { - background-color: #f60; - background-image: none !important; -} - -div.routersummarytr:nth-child(odd) { - background-color: #f00; - background-image: none !important; -} - div.warning h3 { border-bottom: 5px solid #fb7; padding-bottom: 10px; @@ -249,7 +254,7 @@ div.warning h3 { div.main { margin: 0px 0px 0px 195px; - padding: 15px; + padding: 15px 15px 10px 15px; background: #eef; border: 5px solid #bbf; border-top: 0; @@ -260,35 +265,74 @@ div.main { } div.main ul { - margin: 0; + margin: -10px 0 -10px -10px; } div.main li { padding: 0 0 5px 0; list-style: square; + word-wrap: break-word; + margin-right: 20px; } div.main li:first-child { - padding-top: 5px; + padding-top: 15px; +} + +div.main hr:last-child { + margin: 15px 0 10px 0; } div.main textarea { width: 98% !important; margin: 2px 0 2px 5px; + min-height: 96px; +} + +div.main h2 { + margin-top: 20px; + margin-bottom: -5px; +} + +div.welcome { + margin-top: 5px; +} + +div.main h2:first-child, div.main h3:first-child { + margin-top: 0px; + margin-bottom: -5px; +} + +div.wideload h2 { + margin-bottom: 0px !important; +} + +div.wideload h3:first-child { + margin-top: 0 !important; +} + +div.wideload h3 { + margin-top: 15px !important; + margin-bottom: 0px !important; +} + +div.wideload p !important { + margin-top: 5px; } div.news { margin: -5px 0px 0 195px; - padding: -10px 15px 8px 15px; + padding: -10px 0px 8px 0px; background: #ffffc0; border: 5px solid #bbf; - text-align: justify; - color: inherit; + text-align: right; + color: #770; min-width: 600px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; -moz-box-shadow: inset 0px 0px 0px 1px #99f; + font-size: 7pt; } /* convert the list entry to our title */ @@ -296,34 +340,50 @@ div.news { div.news li { text-align: justify; list-style: none; - margin: -15px 15px -20px -20px; + margin: 15px 15px -10px -20px; padding: 0px 0 15px 0; - border-bottom: 5px solid #cc7; + border-bottom: 2px dotted #cc7; border-top: 0px solid #cc7; - padding: 3px 5px 5px 5px; - font-size: 12pt; + padding: 3px 5px 5px 0; + font-size: 10pt; color: #540; } div.news p { color: #330; + font-size: 9pt; + margin-bottom: -10px; +} +/* +div.news p:first-child { + padding-top: 15px !important; +} + + +div.news p:nth-child(2n) { + padding-top: 15px !important; +} +*/ +div.news p:last-child { + margin-bottom: 10px; } + div.news a:link { - color: #773; + color: #663; text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3); } div.news a:visited { - color: #f00 !important; + color: #773 !important; text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3); } div.news hr { color: #cc7; background: #cc7; - height: 2px; - border: 0px solid #cc7; - margin: 5px 0; + height: 1px; + border: 0px solid #cccc77; + margin: 2px 0 0 0; } div.confignav { @@ -339,10 +399,14 @@ div.configure { padding: 0px 20px 0px 20px; } +div.configure hr { + margin: 15px 0; +} + div.configure table { font-size: 9pt; font-weight: bold; - -moz-box-shadow: inset 0px 0px 1px 1px #001; + border: 1px solid #bbf; } div.configure tr, div.configure td { @@ -353,6 +417,23 @@ div.configure tr { -moz-box-shadow: inset 0px 0px 1px 0px #bbf; } +div.configure li:first-child, div.main li:first-child { + margin-top: -10px; +} + +div.configure li:last-child { + margin-bottom: -5px; +} + +div.configure h2:first-child { + margin-top: 15px; +} + +.topshimten { + margin-top: 15px; + margin-bottom: 15px; +} + div.messages { padding: 0px 10px; background: #fff; @@ -367,8 +448,8 @@ div.messages { } div.messages li, div.messages ul { - padding: 15px 0 5px 5px; - margin: -15px 0 0 0; + padding: 10px 0 0 5px; + margin: -10px 0 0 0; } div.messages span.error { @@ -397,17 +478,18 @@ h1 { h2 { font-size: 14pt; padding: 0px 10px 10px 10px; - border-bottom: 5px solid #bbf; - border-top: 0px solid #bbf; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; letter-spacing: 0.04em; } h3 { font-size: 12pt; padding: 0 10px 10px 10px; - border-bottom: 5px solid #bbf; - border-top: 0px solid #bbf; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; letter-spacing: 0.04em; + margin-bottom: 10px; } .proxyfooter{ @@ -417,7 +499,7 @@ h3 { table { border-collapse: collapse; - border: 5px solid #bbf; + border: 1px solid #bbf; margin: 0 0 5px 0; cell-padding: 1px; font-size: 7.5pt; @@ -442,7 +524,7 @@ th { background-color: #fff; padding: 8px 2px; text-align: center; - border-bottom: 1px solid #88f; + border-bottom: 1px solid #bbf; } tt { @@ -466,11 +548,11 @@ tr:nth-child(odd) { } hr { - color: #bbf; - background: #bbf; - height: 5px; - border: 0px solid #bbf; - margin: 5px 0; + color: #aaf; + background: #aaf; + height: 3px; + border: 0px solid #aaf; + margin: 3px 0; } .statusnotes { @@ -484,6 +566,58 @@ hr { border-top: 0; padding: 4px 0 2px 0; } + +div.joblog { + margin: 10px 0; + line-height: 130% !important; +} + +div.joblog:li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 80% !important; +} + +div.joblog:ul { + word-wrap: break-word !important; + text-align: justify; +} + +div.joblog li:first-child { + margin-top: -10px; +} + +div.joblog li:last-child { + margin-bottom: -10px; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog h3 { + margin: 10px 0 20px 0; +} + +div.joblog h3:first-child { + margin: 5px 0 15px 0; +} + +div.joblog hr { + margin: 15px 0 15px; +} + +div.joblog ol { + margin-bottom: 0px; +} input { margin: 3px 5px 3px 0; @@ -512,13 +646,14 @@ p { .formaction { text-align: right; + margin: -10px -5px; } .langbox { - margin: 20px -15px 0px 5px; + margin: 10px -20px 0px 5px; color: #001; font-size: 7pt; - width: 180px; + width: 220px; text-align: center; float: right; valign: middle; @@ -528,6 +663,16 @@ p { padding: 0 2px; /* Ignored by IE8 */ } +.links { + padding-bottom: -2px; + text-align: justify; + margin-top: 5px !important; +} + +.links li { + list-style-image: url("../images/link.png") !important; +} + a:link{ color: #006; text-decoration: none; @@ -565,7 +710,7 @@ tt { } .tablefooter { - border: 1px solid #88f; + border: 1px solid #bbf; } .tablefooter tr, .tablefooter td { @@ -575,15 +720,17 @@ tt { line-height: 150%; word-wrap: nowrap; padding: 8px 1px; + border-top: 2px solid #bbf; } .tidylist { text-align: justify; padding-right: 30px; + margin-right: 20px; } div.graphspanel { - padding: 20px 10px; + padding: 15px 5px 20px 5px; margin: -20px; background: #ddf url('images/lightbluetile.png'); -moz-border-radius: 4px; @@ -595,11 +742,12 @@ div.graphspanel { } div.graphspanel img { - border: 1px solid #99f; + border: 1px solid #77f; padding: 2px; margin: 6px; - background: #ddf; - -moz-box-shadow: inset 0px 0px 1px 1px #99f; + background: #ccf; + -moz-box-shadow: inset 0px 0px 0px 0px #002; + opacity: 0.9; } div.graphspanel img:hover { @@ -609,17 +757,19 @@ div.graphspanel img:hover { text-align: center !important; background: #001; -moz-box-shadow: inset 0px 0px 2px 1px #f60; + opacity: 1; } div.graphspanel hr { - margin: 20px 0; + margin: 10px 0; } -div.graphspanel form { +div.graphspanel form:last-child { text-align: left; margin: 0 20px; } div.graphspanel h3 { text-align: left; + margin: 10px 20px 10px 20px; } \ No newline at end of file diff --git a/installer/resources/themes/console/classic/console_big.css b/installer/resources/themes/console/classic/console_big.css new file mode 100644 index 0000000000000000000000000000000000000000..f5f9a763c72c4ce83689ff24a43f88782bbb0a24 --- /dev/null +++ b/installer/resources/themes/console/classic/console_big.css @@ -0,0 +1,786 @@ +/* Optimised for less capable browsers and system specifications */ + +body { + margin: 2px 0 0 2px; + padding: 0; + text-align: left; + background: #bbf; + color: #000; + font: 9pt/140% Verdana, Tahoma, Helvetica, sans-serif; +} + +.hide { + display: none; +} + +img { + border: none; +} + +pre { + overflow: auto; + font-size: 9pt !important; + width: 95%; + padding-top: 10px; +} + +div.logo { + float: left; + position-relative: top 20px ; + width: 200px; + margin: 0 0 0 20px; + padding: 10px 5px; + text-align: center; + border: 5px solid #ddf; + background-color: #eef; + -moz-border-radius: 15px; + -moz-box-shadow: inset 0px 0px 0px 2px #99f; + -khtml-border-radius: 15px; + -khtml-box-shadow: inset 0px 0px 0px 2px #99f; +} + +div.logo hr { + color: #ddf; + background: #ddf; + height: 5px; + border: 0px solid #ddf; + margin: 8px -3px; +} + +div.logo a:link, div.logo a:visited { + text-shadow: 1px 1px 1px rgba(0, 0, 32, 0.5); +} + +div.logo a:active { + text-shadow: 1px 1px 1px rgba(255, 96, 0, 0.7); + color: #f60; +} + +div.logo a:hover { + text-shadow: 1px 1px 1px rgba(128, 0, 0, 0.7); + color: #900; +} + +div.warning { + margin: 20px 20px 10px 260px; + padding: 0px 20px 20px 75px; + background: #ffd; + border: 5px solid #fb7; + text-align: left; + color: inherit; + background-image:url("../images/itoopie_sm.png"); + background-position: 12px center; + background-repeat:no-repeat; + -moz-border-radius: 15px; + -moz-box-shadow: inset 0px 0px 0px 2px #f60; + -kthml-border-radius: 15px; + -khtml-box-shadow: inset 0px 0px 0px 2px #f60; +} + +div.warning a:link { + color: #f60; + text-shadow: 1px 1px 1px rgba(255, 96, 0, 0.5); +} + +div.warning a:visited{ + color: #f90; +} + +div.warning a:hover{ + color: #d30; + text-shadow: 1px 1px 1px rgba(255, 96, 0, 0.7); +} + +div.warning a:active{ + color: #900; +} + +div.warning hr { + color: #fb7; + background: #fb7; + height: 5px; + border: 0px solid #fb7; + margin: 5px 0; +} + +/* console error messages */ + +div.sorry { + padding: 20px; + background: #ddf; + margin: -2px 1px 0 195px; + border: 5px solid #bbf; + text-align: justify; + -moz-box-shadow: inset 0px 0px 0px 1px #d00; + word-wrap: break-word; + font-weight: bold; + color: #001; +} + +div.sorry hr { + color: #001; + background: #001; + height: 1px; + border: 1px solid #001; + margin: 10px 0; +} + +div.toolbar { + margin: 0em 0em 2em 0em; + font-weight: bold; + display: none !important; +} + +div.routersummaryouter { + float: left; + width: 200px; + margin: 0; + padding: 0; + border: 0; + clear: left; /* fixes a bug in Opera */ +} + +div.routersummary { + background: #ddf; + width: 185px; + color: inherit; + margin: 0; + padding: 10px 1px 7px 1px; + text-align: center !important; + border: 5px solid #bbf; + font-size: 9pt; + word-wrap: break-word; + font: 9pt/125%; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; +} + +div.routersummary input[type=text] { + text-align: right !important; +} + +div.routersummary hr { + color: #eef; + background: #eef; + height: 2px; + border-bottom: 1px solid #eef; + margin: 8px 1px 7px 1px; + -moz-box-shadow: inset 0px 1px 1px 1px #99f; +} + +div.routersummary h3 { + border: 0px solid #f00; + font-size: 12pt; + letter-spacing: 0.05em; + margin: -7px 1px -7px 1px; + padding: 1px 0; + background: #c5d5fb; + text-transform: uppercase; +} + +div.routersummary h4 { + border: 0px solid #f00; + border-bottom: 0 !important; + font-size: 10pt; + letter-spacing: 0.05em; + margin: -7px 1px -7px 1px !important; + padding: 1px 3px; + background: #c1d1f7; + text-transform: capitalize; + text-decoration: none !important; + color: #2b2; +} + +div.routersummary table { + border: 0; + text-align: center !important; + margin: -5px 4px -5px 3px; + width: 180px !important; + overflow: hidden; + font-size: 9pt; + padding: 0 -10px; + background-image: none !important; + background-color: transparent !important; +} + +div.routersummary tr { + background-image: none !important; + background-color: transparent !important; + border: 0 !important; +} + +div.tunnels table{ + margin: 0 !important; +} + +.tunnels tr { + padding: 2px 0 !important; + margin-left: -7px !important; +} + +div.routersummary form { + margin-top: -6px !important; + margin-bottom: -4px !important; +} + +div.refresh { + margin-top: 10px !important; + margin-bottom: 10px !important; + padding: 2px 0 !important; +} + +div.routersummary p { + padding: 0; +} + +div.routersummary a:link, div.routersummary a:visited { + text-shadow: 1px 1px 1px rgba(0, 0, 32, 0.3); +} + +div.routersummary a:hover { + text-shadow: 1px 1px 1px rgba(255, 96, 0, 0.7); + color: #f60; +} + +div.routersummary td { + padding: 0 4px; + background-image: none !important; + border: 0 !important; +} + +div.warning h3 { + border-bottom: 5px solid #fb7; + padding-bottom: 10px; +} + +div.main { + margin: 0px 0px 0px 195px; + padding: 15px 15px 10px 15px; + background: #eef; + border: 5px solid #bbf; + border-top: 0; + text-align: left; + color: #001; + min-width: 570px; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; +} + +div.main ul { + margin: -10px 0 -10px -10px; +} + +div.main li { + padding: 0 0 5px 0; + list-style: square; + word-wrap: break-word; + margin-right: 20px; +} + +div.main li:first-child { + padding-top: 15px; +} + +div.main hr:last-child { + margin: 15px 0 10px 0; +} + +div.main textarea { + width: 98% !important; + margin: 2px 0 2px 5px; + min-height: 96px; +} + +div.main h2 { + margin-top: 20px; + margin-bottom: -5px; +} + +div.welcome { + margin-top: 5px; +} + +div.main h2:first-child, div.main h3:first-child { + margin-top: 0px; + margin-bottom: -5px; +} + +div.wideload h2 { + margin-bottom: 0px !important; +} + +div.wideload h3:first-child { + margin-top: 0 !important; +} + +div.wideload h3 { + margin-top: 15px !important; + margin-bottom: 0px !important; +} + +div.wideload p !important { + margin-top: 5px; +} + +div.news { + margin: -5px 0px 0 195px; + padding: -10px 0px 8px 0px; + background: #ffffc0; + border: 5px solid #bbf; + text-align: right; + color: #770; + min-width: 600px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 10px; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; + font-size: 7pt; +} + +/* convert the list entry to our title */ + +div.news li { + text-align: justify; + list-style: none; + margin: 15px 15px -10px -20px; + padding: 0px 0 15px 0; + border-bottom: 2px dotted #cc7; + border-top: 0px solid #cc7; + padding: 3px 5px 5px 0; + font-size: 10pt; + color: #540; +} + +div.news p { + color: #330; + font-size: 9pt; + margin-bottom: -10px; +} +/* +div.news p:first-child { + padding-top: 15px !important; +} + + +div.news p:nth-child(2n) { + padding-top: 15px !important; +} +*/ +div.news p:last-child { + margin-bottom: 10px; +} + +div.news a:link { + color: #663; + text-shadow: 1px 1px 1px rgba(128, 128, 48, 0.3); +} + +div.news a:visited { + color: #773 !important; + text-shadow: 1px 1px 1px rgba(128, 128, 48, 0.3); +} + +div.news hr { + color: #cc7; + background: #cc7; + height: 1px; + border: 0px solid #cccc77; + margin: 2px 0 0 0; +} + +div.confignav { + padding: 12px 0 15px 0; + background: #cfc; + margin: -20px -20px 0 -20px; + border: 5px solid #bbf; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; +} + +div.configure { + margin: 1px -20px 0 -20px; + padding: 0px 20px 0px 20px; +} + +div.configure hr { + margin: 15px 0; +} + +div.configure table { + font-size: 9pt; + font-weight: bold; + border: 1px solid #bbf; +} + +div.configure tr, div.configure td { + padding: 10px 2px; +} + +div.configure tr { + -moz-box-shadow: inset 0px 0px 1px 0px #bbf; +} + +div.configure li:first-child, div.main li:first-child { + margin-top: -10px; +} + +div.configure li:last-child { + margin-bottom: -5px; +} + +div.configure h2:first-child { + margin-top: 15px; +} + +.topshimten { + margin-top: 15px; + margin-bottom: 15px; +} + +div.messages { + padding: 0px 10px; + background: #fff; + border: 5px solid #bbf; + border-right: 0; + margin: -5px -15px 10px -20px; + text-align: center; + font-size: 9pt; + font-weight: bold; + color: #474; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; +} + +div.messages li, div.messages ul { + padding: 10px 0 0 5px; + margin: -10px 0 0 0; +} + +div.messages span.error { + color: #d00000; +} + +div.messages span.notice { + font-style: italic; +} + +h1 { + font-size: 18pt; + text-shadow: 1px 1px 1px rgba(0, 0, 32, 0.7); + text-align: center; + border: 5px solid #bbf; + padding: 13px 10px 12px 10px; + margin: 0 0px 0 195px; + line-height: 93%; + text-transform: uppercase; + letter-spacing: 0.3em; + background: #fff; + min-width: 600px; + -moz-box-shadow: inset 0px 0px 0px 1px #99f; +} + +h2 { + font-size: 14pt; + padding: 0px 10px 10px 10px; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; + letter-spacing: 0.04em; +} + +h3 { + font-size: 12pt; + font-family:ºÚÌå; + padding: 0 10px 10px 10px; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; + letter-spacing: 0.04em; + margin-bottom: 10px; +} + +.proxyfooter{ + font-size: 7pt; + display: none !important; +} + +table { + border-collapse: collapse; + border: 1px solid #bbf; + margin: 0 0 5px 0; + cell-padding: 1px; + font-size: 9pt; + background: #fff; + width: 100%; +} + +table hr { + padding: 0px 0; + color: #bbf; + background: #bbf; + border: 0px solid #bbf; + margin: 0px -5px; + height: 1px; +} + +table tt { + font-size: 9pt; +} + +th { + background-color: #fff; + padding: 8px 2px; + text-align: center; + border-bottom: 1px solid #bbf; +} + +tt { + font-size: 9pt; +} + +tt, pre { + font: 9pt "Lucida Console", "DejaVu Sans Mono", Courier, mono; +} + +td { + padding: 4px; +} + +tr:nth-child(even) { + background-color: #eef; +} + +tr:nth-child(odd) { + background-color: #ddf; +} + +hr { + color: #aaf; + background: #aaf; + height: 3px; + border: 0px solid #aaf; + margin: 3px 0; +} + +.statusnotes { + font-style: italic; + font-size: 9pt; + color: #001; + text-align: center; + margin: -7px 0 7px 0; + background: #bbf; + border: 5px solid #bbf; + border-top: 0; + padding: 4px 0 2px 0; +} + +div.joblog { + margin: 10px 0; + line-height: 130% !important; +} + +div.joblog:li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 80% !important; +} + +div.joblog:ul { + word-wrap: break-word !important; + text-align: justify; +} + +div.joblog li:first-child { + margin-top: -10px; +} + +div.joblog li:last-child { + margin-bottom: -10px; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog h3 { + margin: 10px 0 10px 0; +} + +div.joblog h3:first-child { + margin: 5px 0 15px 0; +} + +div.joblog hr { + margin: 15px 0 15px; +} + +div.joblog ol { + margin-bottom: 0px; +} + +input { + margin: 3px 5px 3px 0; + vertical-align: middle; +} + +input[type=text] { + margin: 3px 5px 3px 5px; + vertical-align: middle; +} +select { + margin: 3px 5px 3px 5px; + vertical-align: middle; +} + +submit { + margin: 3px 5px 3px 5px; + padding: 2px 0; + font: 9pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif; +} + +table td b{ + font-weight:normal; +} + +i { + font-weight:normal; + font-size:10pt; + font-family:"ºÚÌå"; +} + +p { + padding: 5px 20px 0px 20px; + text-align: justify; +} + +.formaction { + text-align: right; + margin: -10px -5px; +} + +.langbox { + margin: 10px -20px 0px 5px; + color: #001; + font-size: 7pt; + width: 220px; + text-align: center; + float: right; + valign: middle; +} + +.langbox img { + padding: 0 2px; /* Ignored by IE8 */ +} + +.links { + padding-bottom: -2px; + text-align: justify; + margin-top: 5px !important; +} + +.links li { + list-style-image: url("../images/link.png") !important; +} + +a{ + white-space:nowrap; +} + +a:link{ + color: #006; + text-decoration: none; +} + +a:visited{ + color: #448; + text-decoration: none; +} + +a:hover{ + color: #f60; + text-decoration: underline; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} + +pre { + font-size: 9pt; + margin: 0px 20px; +} + +tt { + font-size: 9pt; + font-weight: bold; + color: darkgreen; +} + +.tablefooter { + border: 1px solid #bbf; +} + +.tablefooter tr, .tablefooter td { + background: #bbf; + font-size: 9pt; + font-weight: bold; + line-height: 150%; + word-wrap: nowrap; + padding: 8px 1px; + border-top: 2px solid #bbf; +} + +.tidylist { + text-align: justify; + padding-right: 30px; + margin-right: 20px; +} + +div.graphspanel { + padding: 15px 5px 20px 5px; + margin: -20px; + background: #ddf url('images/lightbluetile.png'); + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + border: 5px solid #bbf; + -moz-box-shadow: inset 0px 0px 1px 0px #002; + text-align: center !important; +} + +div.graphspanel img { + border: 1px solid #77f; + padding: 2px; + margin: 6px; + background: #ccf; + -moz-box-shadow: inset 0px 0px 0px 0px #002; + opacity: 0.9; +} + +div.graphspanel img:hover { + border: 1px solid #003; + padding: 2px; + margin: 6px; + text-align: center !important; + background: #001; + -moz-box-shadow: inset 0px 0px 2px 1px #f60; + opacity: 1; +} + +div.graphspanel hr { + margin: 10px 0; +} + +div.graphspanel form:last-child { + text-align: left; + margin: 0 20px; +} + +div.graphspanel h3 { + text-align: left; + margin: 10px 20px 10px 20px; +} \ No newline at end of file diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 7f2a7f204579441c01ee96ea58f7253741081fee..7ea556b58f4b94bf83cd0107ada4914ab051e6d8 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -124,10 +124,10 @@ div.routersummary hr { div.routersummary h3 { border: 0; - font-size: 10pt; + font-size: 9.5pt; letter-spacing: 0.04em; - margin: -7px -9px -10px -9px; - padding: 3px 0px 5px 0px; + margin: -7px -9px -8px -9px; + padding: 2px 0 3px 0 !important; background: #007; text-transform: uppercase; -moz-border-radius: 0; @@ -143,7 +143,7 @@ div.routersummary h4 { font-size: 8.5pt; letter-spacing: 0.03em; margin: -7px -9px -10px -9px !important; - padding: 2px 3px 5px 3px; + padding: 1px 3px 4px 3px; background: #005; text-transform: capitalize; text-decoration: none !important; @@ -154,11 +154,11 @@ div.routersummary h4 { div.routersummary table { border: 0; text-align: center !important; - margin: -1px -4px -4px -4px; + margin: -5px -4px -5px -5px !important; width: 185px !important; overflow: hidden; font-size: 8pt; - padding: 0px -10px; + padding: 0 -10px; background-image: none !important; background-color: transparent !important; } @@ -170,13 +170,23 @@ div.routersummary tr { } div.routersummary form { - margin-top: 8px; + margin: -6px 0 -7px; +} + +div.routersummary form:first-child { + margin: 6px 0 -4px 0 !important; } div.routersummary p { padding: 0; } +div.refresh { + margin-top: -10px !important; + margin-bottom: -4px !important; + padding: 2px 0 0px 0 !important; +} + div.routersummary a:link, div.routersummary a:visited { text-shadow: 0px 0px 1px rgba(192, 192, 255, 0.5); } @@ -187,20 +197,27 @@ div.routersummary a:hover { } div.routersummary td { - padding: 2px 4px; + padding: 0px 2px 0px 2px; background-image: none !important; border: 0 !important; } +div routersummary hr:last-child { + margin-top: 5px; + margin-bottom: -5px !important; +} -div.routersummary tr:nth-child(even) { - background-color: #f60; - background-image: none !important; +div.tunnels { + padding-top: 3px !important; + margin-left: -2px; } -div.routersummarytr:nth-child(odd) { - background-color: #f00; - background-image: none !important; +div.tunnels table { + margin: -3px 0 !important; +} + +div.tunnels td { + padding: 1px 2px 1px 2px; } div.warning { @@ -214,8 +231,8 @@ div.warning { -khtml-border-radius: 4px; border-radius: 4px; text-align: justify; - background-image:url("images/errortriangle.png"); - background-position:15px center; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; background-repeat:no-repeat; -moz-box-shadow: inset 0px 0px 0px 1px #f00; -khtml-box-shadow: inset 0px 0px 0px 1px #f00; @@ -269,16 +286,17 @@ div.main textarea { div.news { margin: 15px 15px 15px 220px; - padding: 20px 30px 20px 30px; + padding: 5px 30px 10px 30px; border: 1px solid #99f; background: #004; background-image: -moz-linear-gradient(top, bottom, from(#003), to(#005), color-stop(30%, #003), color-stop(100%, #001)); /* background: #003 url("images/darkbluetile.png");*/ - color: #eef; + color: #aaf; border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; - text-align: justify; + font-size: 7.5pt; + text-align: right; -moz-box-shadow: inset 0px 0px 1px 0px #eef; -khtml-box-shadow: inset 0px 0px 1px 0px #eef; box-shadow: inset 0px 0px 1px 0px #eef; @@ -287,12 +305,34 @@ div.news { div.news li { text-align: justify; list-style: url('images/info_dark.png'); - margin: 0 10px 0 30px; - padding: 5px; + margin: 0 10px 0 20px; + padding: 5px 5px 5px 0; vertical-align: middle; word-wrap: break-word; + color: #99f; +} + +div.news h4 { + border-bottom: 1px; + border-bottom-style: dotted; + border-bottom-color: #99f; + padding: 0 0 5px 0; + margin: 5px 0 10px 0; + font-size: 10pt; + opacity: 0.8; + text-transform: capitalize; +} + +div.news p { + margin-top: -5px; + font-size: 8.5pt; + color: #eef; } +div.news hr { + margin: -2px 0 5px 0; +} + div.confignav { padding: 15px 10px !important; margin: 15px 0; @@ -301,7 +341,7 @@ div.confignav { -khtml-border-radius: 4px; border-radius: 4px; border: 1px solid #99f; - font-size: 10pt !important; + font-size: 9.5pt !important; font-weight: bold !important; line-height: 160% !important; -moz-box-shadow: inset 0px 0px 1px 0px #eef; @@ -486,6 +526,14 @@ div.main li { text-align: justify !important; } +.tidylist:first-child { + padding-top: 5px; +} + +.tidylist:last-child { + padding-bottom: 5px; +} + ol { display: inline; margin: 1px 0 0 0; @@ -493,7 +541,7 @@ ol { } ul { - display: inline; +/* display: inline; */ margin: 0; padding: 0; } @@ -511,7 +559,7 @@ a:link, h2 a:link{ } a:visited{ - color: #7bb; + color: #77f; text-decoration: none; font-weight: bold; word-wrap: break-word; @@ -525,10 +573,14 @@ a:hover{ } .links { - list-style-image: url("images/link_dark.png"); - margin: 0 5px 0 0px; - padding: 0px 5px; + padding-bottom: -2px; text-align: justify; + margin-top: 10px; + margin-bottom: -10px; +} + +.links li { + list-style-image: url("../images/link_dark.png") !important; } p { @@ -574,7 +626,7 @@ h2 { -moz-border-radius: 4px; -khtml-border-radius: 4px; vertical-align: middle; - margin: 15px 0 15px 0 !important; + margin: 15px 0 12px 0 !important; -moz-box-shadow: inset 0px 0px 1px 0px #eef; -khtml-box-shadow: inset 0px 0px 1px 0px #eef; box-shadow: inset 0px 0px 1px 0px #eef; @@ -594,12 +646,11 @@ h3 { border: 1px solid #99f; border-left: 5px solid #99f; padding: 3px 5px 3px 5px; -/* margin: 20px 0 15px 0;*/ + margin: 12px 0 10px 0; border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; -khtml-border-radius: 0 4px 4px 0; background: #002; -/* background: url(images/lightbluebg.png);*/ } h4 { @@ -676,6 +727,11 @@ hr { margin: 10px 0; } +hr:last-child { + margin-top: 20px; + margin-bottom: 20px; +} + sidebarlogo { text-align: center; } @@ -792,8 +848,8 @@ form {} color: #eef; text-align: center; border: 1px solid #99f !important; - border-top: 0px !important; - margin: -5px 0 5px 0; +/* border-top: 0px !important;*/ + margin: -3px 0 5px 0; padding: 7px; background: #004; -moz-box-shadow: inset 0px 0px 0px 1px #009; @@ -801,7 +857,7 @@ form {} box-shadow: inset 0px 0px 0px 1px #009; } -.joblog { +div.joblog { margin: 15px 0 15px 0; padding: 5px 20px 10px 20px !important; border: 1px solid #99f; @@ -811,7 +867,7 @@ form {} border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; - text-align: justify; + text-align: justify !important; -moz-box-shadow: inset 0px 0px 1px 0px #eef; -khtml-box-shadow: inset 0px 0px 1px 0px #eef; box-shadow: inset 0px 0px 1px 0px #eef; @@ -820,18 +876,35 @@ form {} div.joblog:li { word-wrap: break-word !important; - text-align: justify; + text-align: justify !important; + line-height: 80% !important; } - .joblog:ul { +div.joblog:ul { word-wrap: break-word !important; text-align: justify; } +div.joblog li:first-child { + margin-top: 10px; +} + +div.joblog li:last-child { + margin-bottom: 0; +} + div.joblog form:first-child { margin-top: 10px; } +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + .smallhead { font-size: 7pt } diff --git a/installer/resources/themes/console/images/itoopie_sm.png b/installer/resources/themes/console/images/itoopie_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9b87d573bdff9a98db1fb8da68ffec4140d2e6 Binary files /dev/null and b/installer/resources/themes/console/images/itoopie_sm.png differ diff --git a/installer/resources/themes/console/images/link.png b/installer/resources/themes/console/images/link.png new file mode 100644 index 0000000000000000000000000000000000000000..e0eba7969888b86b7f9b554434dc9750c1218c9e Binary files /dev/null and b/installer/resources/themes/console/images/link.png differ diff --git a/installer/resources/themes/console/images/link_dark.png b/installer/resources/themes/console/images/link_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e33c92544f0daf08363c3a6156beb43d1f22d4b4 Binary files /dev/null and b/installer/resources/themes/console/images/link_dark.png differ diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 55db139fbf4b98f2bf746d0f4cebce1169f74efc..cd413faf445d08e54e4a1e0436bcffa3d7bbc1b8 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -119,12 +119,17 @@ div.routersummary hr { -moz-box-shadow: inset 0px 1px 1px 1px #001; } +div routersummary hr:last-child { + margin-top: 5px; + margin-bottom: -5px !important; +} + div.routersummary h3 { border: 0; - font-size: 10pt; + font-size: 9.5pt; letter-spacing: 0.04em; margin: -7px -9px -7px -9px; - padding: 5px 0px 5px 0px; + padding: 1px 0; background: #c5d5fb; text-transform: uppercase; background-image: -moz-linear-gradient(top, bottom, from(#ddf), to(#c5d5fb), color-stop(25%, #c5d5fb), color-stop(100%, #ddf)); @@ -136,7 +141,7 @@ div.routersummary h4 { font-size: 8.5pt; letter-spacing: 0.02em; margin: -7px -9px -7px -9px !important; - padding: 2px 3px 3px 3px; + padding: 0px 3px 1px 3px; background: #c1d1f7; text-transform: capitalize; text-decoration: none !important; @@ -146,7 +151,7 @@ div.routersummary h4 { div.routersummary table { border: 0; text-align: center !important; - margin: -2px -4px; + margin: -7px -5px -6px -5px; width: 185px !important; overflow: hidden; font-size: 8pt; @@ -161,14 +166,36 @@ div.routersummary tr { border: 0 !important; } +div.tunnels { + margin-top: 6px !important; + margin-left: -2px !important; + margin-bottom: 3px !important; + padding-top: 3px !important; +} + +.tunnels tr { + padding: 4px 0 !important; +} + div.routersummary form { - margin-top: 8px; + margin: -6px 0 -5px 0; +} + +div.routersummary form:last-child { + margin: 0 !important; + padding: 0; } div.routersummary p { padding: 0; } +div.refresh { + margin-top: -6px !important; + margin-bottom: 0px !important; + padding: 2px 0 0px 0 !important; +} + div.routersummary a:link, div.routersummary a:visited { text-shadow: 0px 0px 1px rgba(0, 0, 32, 0.5); } @@ -179,26 +206,16 @@ div.routersummary a:hover { } div.routersummary td { - padding: 2px 4px; + padding: 1px 3px; background-image: none !important; border: 0 !important; } -div.routersummary tr:nth-child(even) { - background-color: #f60; - background-image: none !important; -} - -div.routersummarytr:nth-child(odd) { - background-color: #f00; - background-image: none !important; -} - /* proxy error messages */ div.warning { margin: 5px 20px 10px 240px; - padding: 0px 25px 20px 75px; + padding: 5px 25px 20px 75px; background: #fff; border: 1px solid #002; text-align: left; @@ -207,11 +224,12 @@ div.warning { -khtml-border-radius: 4px; border-radius: 4px; text-align: justify; - background-image:url("images/errortriangle.png"); - background-position:15px center; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; background-repeat:no-repeat; -moz-box-shadow: inset 0px 0px 1px 0px #d00; word-wrap: break-word; + min-width: 400px; } /* console error messages */ @@ -260,6 +278,10 @@ div.main hr, hr { margin: 10px 0; } +hr:last-child { + margin-top: 20px !important; +} + div.main textarea { background: #eef; color: #001; @@ -268,18 +290,24 @@ div.main textarea { div.news { margin: 0px 15px 10px 220px; - padding: 10px 25px 15px 25px; + padding: 10px 25px 7px 25px; border: 1px solid #003; color: #410; border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; - text-align: justify !important; + text-align: right !important; + font-size: 7pt; line-height: 140%; background: #fea url('images/sandtile.png'); -moz-box-shadow: inset 0px 0px 1px 0px #410; } +div.news p { + font-size: 8.5pt; + text-align: justify !important; +} + div.news a:link{ color: #630; text-decoration: none; @@ -303,13 +331,13 @@ div.news hr{ background: #410; height: 1px; border: 0px solid #410; - margin: 10px 0; + margin: 10px 0 5px; } div.news li { text-align: justify; list-style: none; - margin: 0 0 20px 0 !important; + margin: 10px 0 20px 0 !important; padding: 5px 0; vertical-align: bottom; border: 1px solid #410; @@ -320,7 +348,7 @@ div.news li { -khtml-border-radius: 0 4px 4px 0; background: #fb1; font-size: 10pt; - opacity: 0.8; + opacity: 0.7; } div.news h4 { @@ -338,7 +366,7 @@ div.confignav { -khtml-border-radius: 4px; border-radius: 4px; border: 1px solid #000022; - font-size: 10pt !important; + font-size: 9.5pt !important; font-weight: bold !important; line-height: 160% !important; -moz-box-shadow: inset 0px 0px 1px 0px #002; @@ -508,10 +536,21 @@ div.main li { word-wrap: break-word; } +div.main li:first-child { + margin-top: 10px; +} .tidylist { text-align: justify !important; } +.tidylist li:first-child { + margin-top: -10px !important; +} + +.tidylist:last-child { + padding-bottom: 5px; +} + ol { margin: 1px 0 0 5px; @@ -520,7 +559,7 @@ ol { ul { display: inline; - margin: 5px 0; + margin: 0; padding: 0; } @@ -530,14 +569,14 @@ code { } a:link{ - color: #007; + color: #008; text-decoration: none; font-weight: bold; word-wrap: break-word; } a:visited{ - color: #606; + color: #004; text-decoration: none; font-weight: bold; } @@ -554,10 +593,23 @@ a:active{ font-weight: bold; } -.links { - list-style: url(images/link.png); - margin: 10px 5px 0 0px; - padding: 10px 20px 10px 30px; +.links li { + list-style: url(../images/link.png) !important; + padding-bottom: -2px; + text-align: justify; + line-height: 120% !important; +} + +.links li:first-child { + padding-top: 0 !important; +} + +.links li:last-child { + padding-bottom: -15px !important; +} + +.links ul { + margin-top: -5px !important; } p { @@ -595,7 +647,7 @@ h2 { border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; - margin: 15px 0px 15px 0 !important; + margin: 15px 0px 12px 0 !important; -moz-box-shadow: inset 0px 0px 1px 0px #002; word-wrap: break-word; } @@ -612,7 +664,7 @@ h3 { border: 1px solid #002; border-left: 5px solid #002; padding: 3px 5px 3px 5px; - margin: 15px 0 15px 0; + margin: 12px 0 12px 0; border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; -khtml-border-radius: 0 4px 4px 0; @@ -803,7 +855,7 @@ form {} background: #bcf; -moz-box-shadow: inset 0px 0px 2px 1px #eef; } - +/* .joblog { margin: 15px 0; padding: 10px 20px !important; @@ -830,6 +882,59 @@ form {} .joblog table { margin-top: 10px; } +*/ + +div.joblog { + margin: 15px 0; + padding: 10px 20px !important; + border: 1px solid #003; + background-color: #004; + background: #ddf url('images/lightbluetile.png'); + color: #001; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: justify; + -moz-box-shadow: inset 0px 0px 1px 0px #002; + overflow: auto; + } + + div.joblog:ul { + word-wrap: break-word !important; + text-align: justify; + line-height: 100% !important; +} + + div.joblog:li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 80% !important; + padding: 0; +} + +div.joblog li:first-child { + margin-top: 10px; + +} +div.joblog li:last-child { + margin-bottom: 5px; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog hr { + margin: 15px 0; +} .smallhead { font-size: 7pt diff --git a/news.xml b/news.xml index 7f0fd04f309b8572b9e235286da443e1d5d0eaa5..4dd4db902de3261049733a2fdd6641a45e108fd8 100644 --- a/news.xml +++ b/news.xml @@ -9,14 +9,21 @@ publicurl="http://dev.i2p.net/pipermail/i2p/2005-July/000826.html" anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141" publiclogs="http://www.i2p.net/meeting141" /> + +<h4><ul><li>2009-10-18: Website & Console Translation - Help Needed!</li></ul></h4> + <p> +Shortly after the release of <a href="http://www.i2p2.i2p/release-0.7.7.html">I2P version 0.7.7</a>, we are happy to announce the first stage of the <a href="http://i2p2.i2p/index_zh.html">Chinese translation</a> of the <a href="http://www.i2p2.i2p">website</a>, thanks to our new Chinese translator, "walking". This we hope is the start of a bigger trend to get the website and console translated into YOUR language. Please visit the #i2p chat channel on <a href="irc://irc.freenode.net/i2p"> Freenode IRC</a> or anonymously over I2P via <a href="irc://127.0.0.1:6668/i2p">localhost:6668</a> if you wish to help. We appeal at this time especially to French and Spanish translators, since we seem to have plenty of you running I2P!</p> + <h4><ul><li>2009-10-12: <b>0.7.7 <a href="http://www.i2p2.i2p/release-0.7.7.html">Released</a></b></li></ul></h4> -</p><p> +<p> I2P version 0.7.7 contains several anonymity improvements. The use of session keys for crypto was completely reworked, -and I2PSnark now uses its own tunnels for tracker communication. +and <a href="/i2psnark">I2PSnark</a> now uses its own tunnels for tracker communication. Work continues on improving the router console, -including conformance to HTML standards and better support of UTF-8. +including conformance to HTML standards, better support of UTF-8, and dr|z3d's ongoing +<a href="/configui.jsp">console theme</a> wizardry, including an extensively +reworked "classic" theme optimized for less capable computers or browsers. </p><p> Work also continues on increasing speeds, both by reducing the number of session keys transferred, by improving the diff --git a/readme.html b/readme.html index 077d776cc9b8199f8265b46c70489f470b92d6c8..fdb3682a96027f05b6da97b8671e5e2a0e9f2bc9 100644 --- a/readme.html +++ b/readme.html @@ -6,7 +6,7 @@ <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>Welcome to I2P!</h2> +<div class="welcome"><h2>Welcome to I2P!</h2></div> <p>If you've just started I2P, the Active: numbers on the left should start to grow over the next few minutes and you'll see a "shared clients" local destination listed on the left (if not, <a href="#trouble">see below</a>). Once those show @@ -14,7 +14,7 @@ up, you can:</p> <ul> <li><b>browse "eepsites"</b> - on I2P there are anonymously hosted websites - tell your browser to use the <b>HTTP proxy at 127.0.0.1 port 4444</b>, then - browse to an eepsite:<br /> + browse to an eepsite:<br> <ul class="links"> <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> and <a href="http://perv.i2p/stats.cgi">perv.i2p</a>: sites tracking active @@ -37,7 +37,7 @@ up, you can:</p> </ul><br> There are many more eepsites - just follow the links from the ones you see, bookmark your favorites, and visit them often! - </li><br> + </li> <ul> <li class="tidylist"><b>browse the web</b> - there is currently an HTTP "outproxy" in I2P hooked up to your own HTTP proxy on port 4444 - simply diff --git a/readme_de.html b/readme_de.html index 14dcc90eae3ab0375cab5b43550fe77dbacea508..54dbcb242ba51ba90dc7ba01bc15c80e71815d5d 100644 --- a/readme_de.html +++ b/readme_de.html @@ -1,22 +1,22 @@ <div align="right"> <div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>Willkommen zu I2P!</h2> +<div class="welcome"><h2>Willkommen zu I2P!</h2></div> <p>Wenn Du gerade I2P gestartet hast, sollten die "Active:" Zahlen links in den nächsten paar Minuten anwachsen und Du siehst dann dort ein "shared clients" lokales Ziel gelistet (falls nicht, <a href="#trouble">siehe Unten</a>). Sobald das erscheint, kannst Du:</p> <ul> - <li class="tidylist"><b>"Eepsites" besuchen</b> - In I2P sind anonym gehostete Websites - - Stelle Deinen Browser so ein, über den <b>HTTP proxy: 127.0.0.1 port 4444</b> zu surfen, dann besuche eine Eepsite:<br /> + <li><b>"Eepsites" besuchen</b> - In I2P sind anonym gehostete Websites - + Stelle Deinen Browser so ein, über den <b>HTTP proxy: 127.0.0.1 port 4444</b> zu surfen, dann besuche eine Eepsite:<br> <ul class="links"> - <li class="tidylist"><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> und + <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> und <a href="http://perv.i2p/stats.cgi">perv.i2p</a>: Webseiten, die aktive Eepsites beobachten</li> - <li class="tidylist"><a href="http://forum.i2p/">forum.i2p</a>: Eine sichere und anonyme Verbindung zu <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> - <li class="tidylist"><a href="http://www.i2p2.i2p/index_de.html">www.i2p2.i2p</a> und der Spiegel <a href="http://i2p-projekt.i2p/index_de.html">i2p-projekt.i2p</a>: + <li><a href="http://forum.i2p/">forum.i2p</a>: Eine sichere und anonyme Verbindung zu <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> + <li><a href="http://www.i2p2.i2p/index_de.html">www.i2p2.i2p</a> und der Spiegel <a href="http://i2p-projekt.i2p/index_de.html">i2p-projekt.i2p</a>: Sichere und anonyme Verbindung zu <a href="http://www.i2p2.de/index_de.html">www.i2p2.de</a></li> - <li class="tidylist"><a href="http://eepsites.i2p/">eepsites.i2p</a>: Eine anonym gehostete Suchseite für Eepsites</li> - <li class="tidylist"><a href="http://ugha.i2p/">ugha.i2p</a>: Ugha's Eepsite, ein öffentliches Wiki mit vielen Links</li> - <li class="tidylist"><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: Freenet proxy</li> - <li class="tidylist"><a href="http://echelon.i2p">echelon.i2p</a>: Software Archive und Informationen zu I2P</li> - <li class="tidylist"><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: Anonymer Pastebin</li> + <li><a href="http://eepsites.i2p/">eepsites.i2p</a>: Eine anonym gehostete Suchseite für Eepsites</li> + <li><a href="http://ugha.i2p/">ugha.i2p</a>: Ugha's Eepsite, ein öffentliches Wiki mit vielen Links</li> + <li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: Freenet proxy</li> + <li><a href="http://echelon.i2p">echelon.i2p</a>: Software Archive und Informationen zu I2P</li> + <li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: Anonymer Pastebin</li> </ul><br /> Es gibt viel mehr Eepsites - folge einfach den Links die du findest, bookmarke Deine Favoriten und besuche sie oft!</li><br /> diff --git a/readme_fr.html b/readme_fr.html index faaf90136ea58b1f6765a929560a1225be8f2ef1..a95ffe266843581412cf8da6975e8697219ceb90 100644 --- a/readme_fr.html +++ b/readme_fr.html @@ -1,24 +1,24 @@ <div align="right"> <div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>Bienvenu a I2P!</h2> +<div class="welcome"><h2>Bienvenu a I2P!</h2></div> <p>Si vous venez juste de lancer I2P, les chiffres sur la gauche à coté de Active devraient commencer à augmenter dans les prochaines minutes et vous verrez un "Shared client" en destination locale listés sur la gauche (si non, <a href=#trouble>voir plus bas</a>). Une fois qu'ils apparaissent, vous pouvez:</p> <ul> - <li class="tidylist"><b>parcourir les "eepsites"</b> - sur I2P il y a des sites web anonymes hébergés - dites à votre navigateur d'utiliser <b>le HTTP proxy a l'adresse 127.0.0.1 port 4444</b>, ensuite vous pouvez naviguer sur les eepsites:<br /> + <li><b>parcourir les "eepsites"</b> - sur I2P il y a des sites web anonymes hébergés - dites à votre navigateur d'utiliser <b>le HTTP proxy a l'adresse 127.0.0.1 port 4444</b>, ensuite vous pouvez naviguer sur les eepsites:<br> <ul class="links"> - <li class="tidylist"><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> et + <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> et <a href="http://perv.i2p/stats.cgi">perv.i2p</a>: listent les eepsites actifs</li> - <li class="tidylist"><a href="http://forum.i2p/">forum.i2p</a>: une connection sécurisée et anonyme vers <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> - <li class="tidylist"><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> et le miroir <a href="http://i2p-projekt.i2p">i2p-projekt.i2p</a>: + <li><a href="http://forum.i2p/">forum.i2p</a>: une connection sécurisée et anonyme vers <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> + <li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> et le miroir <a href="http://i2p-projekt.i2p">i2p-projekt.i2p</a>: connections sécurisées et anonyme vers <a href="http://www.i2p2.de/">www.i2p2.de</a></li> - <li class="tidylist"><a href="http://eepsites.i2p/">eepsites.i2p</a>: un moteur de recherche d'eepsites</li> - <li class="tidylist"><a href="http://ugha.i2p/">ugha.i2p</a>: l'eepsite d'ugha, un wiki que chaucun peut éditer ainsi que</li> - <li class="tidylist"><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: un proxy Freenet 0.5</li> - <li class="tidylist"><a href="http://echelon.i2p">echelon.i2p</a>: archive</li> - <li class="tidylist"><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: Pastebin anonyme</li> - <br /> + <li><a href="http://eepsites.i2p/">eepsites.i2p</a>: un moteur de recherche d'eepsites</li> + <li><a href="http://ugha.i2p/">ugha.i2p</a>: l'eepsite d'ugha, un wiki que chaucun peut éditer ainsi que</li> + <li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: un proxy Freenet 0.5</li> + <li><a href="http://echelon.i2p">echelon.i2p</a>: archive</li> + <li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: Pastebin anonyme</li> + <br> </ul> - Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos favoris et visitez-les souvent!</li><br /> + Il y a bien plus d'eepsites - suivez juste les liens au départ de ceux sur lesquels vous êtes, mettez-les dans vos favoris et visitez-les souvent!</li><br> <li class="tidylist"><b>Parcourez le web</b> - Il y a pour l'instant un outproxy HTTP sur I2P attaché à votre propre proxy HTTP sur le port 4444 - vous devez simplement configurer le proxy de votre navigateur pour l'utiliser (comme expliqué ci-dessus) et aller sur n'importe quel URL normale - vos requêtes seront relayées par le réseau i2p.</li> <li class="tidylist"><b>Transfer de fichiers</b> - Il y a un <a href="i2psnark/">port</a> intégré de <a href="http://www.klomp.org/snark/">Snark</a> le client <a href="http://www.bittorrent.com/">BitTorrent</a>.</li> <li class="tidylist"><b>Utiliser le service de mail anonyme</b> - Postman a créé un sytème de mails compatible avec un client de messagerie normal (POP3 / SMTP) qui permet d'envoyer des emails autant au sein d'i2p que vers et à partir de l'internet normal! Créez-vous un compte à <a href="http://hq.postman.i2p/">hq.postman.i2p</a>. diff --git a/readme_nl.html b/readme_nl.html index 0e46e7a1fad2e0a63c39211b3bbfdfad74f9f150..71fe16cb17b919fb0f9c50bd20e955cad986b7a8 100644 --- a/readme_nl.html +++ b/readme_nl.html @@ -1,11 +1,11 @@ <div align="right"> <div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>Welkom bij I2P!</h2> +<div class="welcome"><h2>Welkom bij I2P!</h2></div> <p>Als je net I2P opgestart hebt, zullen de 'Active:' (Actieve) getallen aan de linkerkant in de komende minuten stijgen, en je zal een "Shared clients" (Gedeelde clients) lokale bestemming zien staan aan de linkerkant (indien niet, <a href=#trouble>zie hieronder</a>). Eenmaal je deze bestemming ziet, kan je:</p> <ul> - <li><b>surfen naar "eepsites"</b> - op I2P zijn er anonieme websites - stel je browser in om de <b>HTTP proxy op 127.0.0.1, poort 4444</b> te gebruiken, en surf vervolgens naar een eepsite:<br /><br /> - <ul> + <li><b>surfen naar "eepsites"</b> - op I2P zijn er anonieme websites - stel je browser in om de <b>HTTP proxy op 127.0.0.1, poort 4444</b> te gebruiken, en surf vervolgens naar een eepsite:<br> + <ul class="links"> <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> en <a href="http://perv.i2p/stats.cgi">perv.i2p</a>: sites die lijsten bijhouden van actieve eepsites</li> <li><a href="http://forum.i2p/">forum.i2p</a>: een beveiligde en anonieme verbinding naar <a href="http://forum.i2p2.de/">forum.i2p2.de</a></li> @@ -16,23 +16,23 @@ <li><a href="http://fproxy.tino.i2p">fproxy.tino.i2p</a>: proxy naar het Freenet-netwerk</li> <li><a href="http://echelon.i2p">echelon.i2p</a>: software archive and information for I2P</li> - <li class="tidylist"><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: anonieme Pastebin</li> - </ul><br /> - Er zijn nog veel meer eepsites - volg gewoon de links vanaf diegene die je ziet. Voeg de beste toe aan je favorieten, en bezoek ze regelmatig!</li><br /> - <li><b>surfen op het web</b> - er is momenteel een HTTP "outproxy" in I2P, vastgehaakt aan je eigen HTTP proxy op poort 4444 - stel eenvoudigweg de proxy van je browser in om deze te gebruiken (zoals hierboven voor eepsites) en ga naar een willekeurige normale URL - je verzoeken voor websites worden rondgestuurd via het I2P-network.</li> - <li><b>bestanden versturen</b> - er is een geintegreerde <a href="i2psnark/">aangepaste versie</a> van de + <li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: anonieme Pastebin</li> + </ul><br> + Er zijn nog veel meer eepsites - volg gewoon de links vanaf diegene die je ziet. Voeg de beste toe aan je favorieten, en bezoek ze regelmatig!</li> +<ul><li class="tidylist"><b>surfen op het web</b> - er is momenteel een HTTP "outproxy" in I2P, vastgehaakt aan je eigen HTTP proxy op poort 4444 - stel eenvoudigweg de proxy van je browser in om deze te gebruiken (zoals hierboven voor eepsites) en ga naar een willekeurige normale URL - je verzoeken voor websites worden rondgestuurd via het I2P-network.</li> + <li class="tidylist"><b>bestanden versturen</b> - er is een geintegreerde <a href="i2psnark/">aangepaste versie</a> van de <a href="http://www.klomp.org/snark/">Snark</a> <a href="http://www.bittorrent.com/">BitTorrent</a> client.</li> - <li><b>anonieme e-mail gebruiken</b> - postman heeft een e-mailsysteem gecreerd, compatibel met normale e-mail + <li class="tidylist"><b>anonieme e-mail gebruiken</b> - postman heeft een e-mailsysteem gecreerd, compatibel met normale e-mail clients (POP3 / SMTP) dat toelaat e-mail binnen I2P evenals e-mail van en naar het gewone internet te versturen. Maak je eigen account op <a href="http://hq.postman.i2p/">hq.postman.i2p</a>. In i2p zit een gebundelde <a href="/susimail/susimail">susimail</a>, een webgebaseerde anonimiteits-georienteerde pop3/smtp-client ingesteld om postman zijn e-mailservices te gebruiken.</li> - <li><b>anoniem chatten</b> - start je eigen IRC-client op en verbind met + <li class="tidylist"><b>anoniem chatten</b> - start je eigen IRC-client op en verbind met de server op <b>127.0.0.1 poort 6668</b>. Dit wijst naar een of twee anoniem gehoste IRC servers, maar zowel jij als zei weten niet waar de andere is.</li> - <li><b>anoniem bloggen</b> - neem een kijkje bij <a href="http://syndie.i2p2.de/">Syndie</a></li> - <li>en veel meer</li> + <li class="tidylist"><b>anoniem bloggen</b> - neem een kijkje bij <a href="http://syndie.i2p2.de/">Syndie</a></li> + <li class="tidylist">en veel meer</li> </ul> <h2>Wil je je eigen eepsite?</h2> diff --git a/readme_sv.html b/readme_sv.html index 8d35f797da7e340a79d33732dca8535a7e7ef40e..4c02cfcdfb9591ffc22b800bc21702837bc59891 100644 --- a/readme_sv.html +++ b/readme_sv.html @@ -1,7 +1,7 @@ <div align="right"> <div class="langbox" align="right"><a href="/index.jsp?lang=en"><img src="/flags.jsp?c=us" title="English" alt="English"></a> <a href="/index.jsp?lang=zh"><img src="/flags.jsp?c=cn" title="Chinese" alt="Chinese"></a> <a href="/index.jsp?lang=de"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a> <a href="/index.jsp?lang=fr"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a> <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>Welcome to I2P!</h2> +<div class="welcome"><h2>Welcome to I2P!</h2></div> <p>Om du just har startat I2P kommer de "Aktiva: #/#" börja öka inom några få minuter och du kommer se en destination kallad "delade klienter" på den vänstra listan (om inte <a href="#trouble">se @@ -9,7 +9,7 @@ nedan</a>). När de syns kan du:</p> <ul> <li><b>surfa på "eepsidor"</b> - inom I2P finns det anonyma sajter - ställ in din webbläsare till att använda <b>HTTP proxy vid -127.0.0.1 port 4444</b>, surfa sen till en eepsida:<br /> +127.0.0.1 port 4444</b>, surfa sen till en eepsida:<br> <ul class="links"> <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> och @@ -30,9 +30,9 @@ wiki som alla kan förändra, innehåller många länkar</ Freenet proxy</li> <li><a href="http://echelon.i2p">echelon.i2p</a>: programvaruförrÃ¥d och information om I2P</li> <li><a href="http://paste.i2p2.i2p">paste.i2p2.i2p</a>: anonym och säker pastebin</li> - </ul><br /> + </ul><br> Det finns många fler eepsidor - följ bara länkarna från dom du ser, - spara dina favoriter och besök dom ofta!</li><br /> + spara dina favoriter och besök dom ofta!</li><br> <li><b>surfa på nätet</b> - det finns för närvarande en "utproxy" i I2P som är ansluten till din egen HTTP proxt på port 4444 - ställ helt enkelt in din diff --git a/readme_zh.html b/readme_zh.html index fd3e85ff96d14fd1e14f4bb2efad5b60238cc1d9..82bf1abf1ed45f673b5a132fbbb7b85dcd0248e8 100644 --- a/readme_zh.html +++ b/readme_zh.html @@ -6,10 +6,10 @@ <a href="/index.jsp?lang=nl"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a> <a href="/index.jsp?lang=sv"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a></div> </div> -<h2>欢迎使用 I2P!</h2> -<p>如果 I2P å·²ç»è¿è¡Œï¼Œæœªæ¥çš„å‡ åˆ†é’Ÿé‡ŒæŽ§åˆ¶å°å·¦ä¾§çš„活动节点(Active)æ•°é‡å°†ä¼šå¢žåŠ ,并会出现å为共享客户端("shared clients") çš„æœ¬åœ°ç›®æ ‡ã€‚(如果没有,è¯·è§ <a href="/i2p-zhcn/i2psrc/i2p.i2p/readme_zh.html#trouble">疑难解ç”</a>)。待出现以上消æ¯åŽï¼Œæ‚¨å¯ä»¥:</p> +<div class="welcome"><h2>欢迎使用 I2P!</h2></div> +<p>如果 I2P å·²ç»è¿è¡Œï¼Œæœªæ¥çš„å‡ åˆ†é’Ÿé‡ŒæŽ§åˆ¶å°å·¦ä¾§çš„活动节点(Active)æ•°é‡å°†ä¼šå¢žåŠ ,并会出现å为共享客户端("shared clients") çš„æœ¬åœ°ç›®æ ‡ã€‚(如果没有,è¯·è§ <a href="#trouble">疑难解ç”</a>)。待出现以上消æ¯åŽï¼Œæ‚¨å¯ä»¥:</p> <ul> - <li><B>æµè§ˆ I2P 站点 "eepsites"</B> - I2P 网络内匿åè¿è¡Œçš„å°ç«™ - 您è¦é¦–先设置æµè§ˆå™¨çš„ <b>HTTP 代ç†</b> 为 127.0.0.1:4444 然åŽæ‰èƒ½æµè§ˆ I2P 站点 - <ul> + <li><B>æµè§ˆ I2P 站点 "eepsites"</B> - I2P 网络内匿åè¿è¡Œçš„å°ç«™ - 您è¦é¦–先设置æµè§ˆå™¨çš„ <b>HTTP 代ç†</b> 为 127.0.0.1:4444 然åŽæ‰èƒ½æµè§ˆ I2P 站点 - <ul class="links"> <li><a href="http://inproxy.tino.i2p/status.php">inproxy.tino.i2p</a> å’Œ <a href="http://perv.i2p/stats.cgi">perv.i2p</a>: 这两个站点用于跟踪哪些 I2P 站点在线。</li> <li><a href="http://forum.i2p/">forum.i2p</a>:I2På®˜æ–¹è®ºå› <a href="http://forum.i2p2.de/">forum.i2p2.de</a> 的匿åå…¥å£ (个人的I2P站点会在论å›çš„EEPSITE讨论区å‘布)</li> <li><a href="http://www.i2p2.i2p/">www.i2p2.i2p</a> ä¸Žé•œåƒ <a href="http://i2p-projekt.i2p/">i2p-projekt.i2p</a>: å¯ä»¥å®‰å…¨åŒ¿å的访问I2P官网 <a href="http://www.i2p2.de/">www.i2p2.de</a></li> @@ -21,7 +21,7 @@ </ul> <br> I2P网络ä¸è¿˜æœ‰å¾ˆå¤šå…¶ä»–网站(EEPSITE) - 访问上é¢çš„ç½‘ç«™ä½ ä¼šæ‰¾åˆ°æ›´å¤šï¼Œæ”¶è—ä½ å–œçˆ±çš„ I2P 网站,别忘了常去看看ï¼</li><br> <li><b>æµè§ˆ Web 网页</b> - ç›®å‰ IP2 网络ä¸çš„出å£ä»£ç†("Outproxy")åªæœ‰ä¸€ä¸ªï¼Œå®ƒä»¥HTTP代ç†çš„å½¢å¼æŒ‚接在本地计算机的4444端å£ä¸Šã€‚- å°†æµè§ˆå™¨çš„代ç†è®¾ç½®æŒ‡å‘为上述地å€(127.0.0.1:4444)åŽï¼Œè®¿é—®ä»»ä½•æ™®é€šé“¾æŽ¥å³å¯ - 您的HTTP请求将在 I2P ç½‘ç»œå†…éƒ¨ä¼ é€’ã€‚</li> - <li><b>文件交æ¢</b> - I2Pçš„å…¶ä¸ä¸€ä¸ªæœ¬åœ° <a href="/i2p-zhcn/i2psrc/i2p.i2p/i2psnark/">端å£</a> 用于内置的 <a href="http://www.klomp.org/snark/">Snark</a> <a href="http://www.bittorrent.com/">BitTorrent</a> 客户端。</li> + <li><b>文件交æ¢</b> - I2Pçš„å…¶ä¸ä¸€ä¸ªæœ¬åœ° <a href="/i2psnark">端å£</a> 用于内置的 <a href="http://www.klomp.org/snark/">Snark</a> <a href="http://www.bittorrent.com/">BitTorrent</a> 客户端。</li> <li><b>匿å电邮</b> - POSTMAN 建立了兼容普通邮件客户端 (POP3 / SMTP)的邮件系统,这个系统å¯ä»¥åœ¨ I2P ç½‘ç»œå†…éƒ¨æ”¶å‘ Email 也å¯ä»¥æ”¶å‘æ¥è‡ªå¤–部 Internet 的邮件ï¼I2P的邮件å¸æˆ·è¯·åˆ° <a href="http://hq.postman.i2p/">hq.postman.i2p</a> 申请。I2Pä¸é›†æˆäº†Webç•Œé¢çš„pop3/stmp邮件客户端 <a href="/susimail/susimail">SUSIMail</a>,并已设置好使用POSTMAN 的邮件æœåŠ¡ã€‚</li> <li><b>匿åèŠå¤©</b> - æ‰“å¼€ä½ çš„ IRC èŠå¤©ç¨‹åºï¼Œè¿žæŽ¥è‡³ <b>127.0.0.1:6668 </b>å³å¯è®¿é—®I2P的匿å IRC æœåŠ¡å™¨ï¼Œä½†æ— è®ºä½ è¿˜æ˜¯æœåŠ¡å™¨éƒ½ä¸çŸ¥é“èŠå¤©çš„人在哪里。</li> <li><b>匿ååšå®¢</b> - 请访问 <a href="http://syndie.i2p2.de/">Syndie</a></li> diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 8aa072fcf9438648320c85ef3852d1e13da4f6b8..5a4225cae2be185e40050c37f96e53fda74c1635 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 0; + public final static long BUILD = 6; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java index 29aac8f7b11f2fde3fb8a95f07bce5174056d1b8..743acf17a6afbc19eda6a499f817adeec6006e48 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -642,11 +642,11 @@ public class NTCPTransport extends TransportImpl { long totalRecv = 0; StringBuilder buf = new StringBuilder(512); - buf.append("<p><b id=\"ntcpcon\"><h3>NTCP connections: ").append(peers.size()); + buf.append("<div class=\"wideload\"><h3 id=\"ntcpcon\">NTCP connections: ").append(peers.size()); buf.append(". Limit: ").append(getMaxConnections()); buf.append(". Timeout: ").append(DataHelper.formatDuration(_pumper.getIdleTimeout())); - buf.append(".</b></h3>\n" + - "<div class=\"wideload\"><table>\n" + + buf.append(".</h3>\n" + + "<table>\n" + "<tr><th><a href=\"#def.peer\">Peer</a></th>" + "<th>Dir</th>" + "<th align=\"right\"><a href=\"#def.idle\">Idle</a></th>" + @@ -730,7 +730,7 @@ public class NTCPTransport extends TransportImpl { "</td></tr>\n"); } - buf.append("</table></div></p>\n"); + buf.append("</table>\n"); out.write(buf.toString()); buf.setLength(0); } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index 06b429889e06725d35110919bea90604b0b2b79c..2bdf8a466f82fc781ce8754b21ae3802330f4b5e 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -1771,7 +1771,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append(". Limit: ").append(getMaxConnections()); buf.append(". Timeout: ").append(DataHelper.formatDuration(_expireTimeout)); buf.append(".</h3>\n"); - buf.append("<div class=\"wideload\"><table>\n"); + buf.append("<table>\n"); buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">Peer</a>"); if (sortFlags != FLAG_ALPHA) buf.append(" <a href=\"").append(urlBase).append("?sort=0\">V</a> "); @@ -2002,7 +2002,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority buf.append(sendTotal).append("</b></td> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n"); buf.append(" <td align=\"center\"><b>").append(resentTotal); buf.append("</b></td> <td align=\"center\"><b>").append(dupRecvTotal).append("</b></td>\n"); - buf.append(" </tr></table></div></p><p>\n"); + buf.append(" </tr></table></div>\n"); long bytesTransmitted = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes(); // NPE here early double averagePacketSize = _context.statManager().getRate("udp.sendPacketSize").getLifetimeAverageValue(); @@ -2011,7 +2011,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority double nondupSent = ((double)bytesTransmitted - ((double)resentTotal)*averagePacketSize); double bwResent = (nondupSent <= 0 ? 0d : ((((double)resentTotal)*averagePacketSize) / nondupSent)); buf.append("<h3>Percentage of bytes retransmitted (lifetime): ").append(formatPct(bwResent)); - buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br></p>\n"); + buf.append("</h3><i>(Includes retransmission required by packet loss)</i>\n"); out.write(buf.toString()); buf.setLength(0); out.write(KEY); @@ -2031,7 +2031,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } private static final String KEY = "<h3>Definitions:</h3><div class=\"configure\">" + - "<br><b id=\"def.peer\">Peer</b>: the remote peer.<br>\n" + + "<p><b id=\"def.peer\">Peer</b>: the remote peer.<br>\n" + "<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br>\n" + "<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br>\n" + "<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br>\n" + @@ -2049,10 +2049,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority "<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br>\n" + "<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br>\n" + "<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br>\n" + - "<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer." + + "<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer.</p>" + "</div>\n"; - /** + /* * Cache the bid to reduce object churn */ private class SharedBid extends TransportBid {