diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
index 6a016b67fd7302a6390a4a47ef4ebfcce7f7c7bc..c14def2c95096c1e4b041b7de68c93765dd66028 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
@@ -439,83 +439,125 @@ class SummaryBarRenderer {
            .append("\" href=\"/configadvanced\" target=\"_top\">")
            .append(_t("Advanced"))
            .append("</a></h3>\n")
+           .append("<hr class=\"b\"><table id=\"sb_advanced\"><tr><td>");
 
-           .append("<hr class=\"b\"><table id=\"sb_advanced\"><tr><td>")
+        // Store all items in map so they are sorted by translated name, then output
+        Map<String, String> svcs = new TreeMap<String, String>(Collator.getInstance());
+        StringBuilder rbuf = new StringBuilder(128);
 
-           .append("<a target=\"_top\" title=\"")
+        String tx = _t("Certs");
+        rbuf.append("<a target=\"_top\" title=\"")
            .append(_t("Review active encryption certificates used in console"))
            .append("\" href=\"/certs\">")
-           .append(nbsp(_t("Certs")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("Changelog");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("View full changelog"))
            .append("\" href=\"/viewhistory\" target=\"_blank\">")
-           .append(nbsp(_t("Changelog")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("Debug");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("View router debug information"))
            .append("\" href=\"/debug\" target=\"_top\">")
-           .append(nbsp(_t("Debug")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
            // 7 days
-           .append("<a href=\"/events?from=604800000\" target=\"_top\" title=\"")
+        tx = _t("Events");
+        rbuf.setLength(0);
+        rbuf.append("<a href=\"/events?from=604800000\" target=\"_top\" title=\"")
            .append(_t("View historical log of router events"))
            .append("\">")
-           .append(nbsp(_t("Events")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("Jars");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("Review extended info about installed .jar and .war files"))
            .append("\" href=\"/jars\" target=\"_top\">")
-           .append(nbsp(_t("Jars")))
+           .append(nbsp(tx))
            .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
         File javadoc = new File(_context.getBaseDir(), "docs/javadoc/index.html");
-        if (javadoc.exists())
-            buf.append("<a title=\"")
+        if (javadoc.exists()) {
+            tx = "Javadoc";
+            rbuf.setLength(0);
+            rbuf.append("<a title=\"")
                .append(_t("Documentation for the I2P API"))
                .append("\" href=\"/javadoc/index.html\" target=\"_blank\">Javadoc</a>\n");
+            svcs.put(tx, rbuf.toString());
+        }
 
-        buf.append("<a href=\"/jobs\" target=\"_top\" title=\"")
+        tx = _t("Jobs");
+        rbuf.setLength(0);
+        rbuf.append("<a href=\"/jobs\" target=\"_top\" title=\"")
            .append(_t("Show the router's workload, and how it's performing"))
            .append("\">")
-           .append(nbsp(_t("Jobs")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("LeaseSets");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("View active leasesets (debug mode)"))
            .append("\" href=\"/netdb?l=2\" target=\"_top\">")
-           .append(nbsp(_t("LeaseSets")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("NetDB Search");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("Network database search tool"))
            .append("\" href=\"/netdb?f=4\" target=\"_top\">")
-           .append(nbsp(_t("NetDB Search")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("Proof");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("Signed proof of ownership of this router"))
            .append("\" href=\"/proof\" target=\"_top\">")
-           .append(nbsp(_t("Proof")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a href=\"/stats\" target=\"_top\" title=\"")
+        tx = _t("Stats");
+        rbuf.setLength(0);
+        rbuf.append("<a href=\"/stats\" target=\"_top\" title=\"")
            .append(_t("Textual router performance statistics"))
            .append("\">")
-           .append(nbsp(_t("Stats")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("<a title=\"")
+        tx = _t("Sybils");
+        rbuf.setLength(0);
+        rbuf.append("<a title=\"")
            .append(_t("Review possible sybils in network database"))
            .append("\" href=\"/netdb?f=3\" target=\"_top\">")
-           .append(nbsp(_t("Sybils")))
-           .append("</a>\n")
+           .append(nbsp(tx))
+           .append("</a>\n");
+        svcs.put(tx, rbuf.toString());
 
-           .append("</td></tr></table>");
+        for (String row : svcs.values()) {
+             buf.append(row);
+        }
+        buf.append("</td></tr></table>");
         return buf.toString();
     }