From 0c74e640df93b07e618a6f1adee0abfec5638c36 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 22 Oct 2009 22:25:53 +0000 Subject: [PATCH] * 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 --- apps/routerconsole/java/bundle-messages.sh | 4 ++- .../src/net/i2p/router/web/CSSHelper.java | 5 +++ .../net/i2p/router/web/ConfigUIHelper.java | 21 ++++++++++-- .../src/net/i2p/router/web/HelperBase.java | 10 ++++++ .../java/src/net/i2p/router/web/Messages.java | 2 +- .../i2p/router/web/SummaryBarRenderer.java | 4 +-- apps/routerconsole/jsp/confignav.jsp | 3 -- apps/routerconsole/jsp/configui.jsp | 33 +++++++++++-------- apps/routerconsole/jsp/css.jsp | 8 +++++ 9 files changed, 67 insertions(+), 23 deletions(-) diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh index 629fc95f05..3b80c80e9c 100755 --- a/apps/routerconsole/java/bundle-messages.sh +++ b/apps/routerconsole/java/bundle-messages.sh @@ -26,6 +26,7 @@ do # extract strings from java and jsp files, and update messages.po files # translate calls must be one of the forms: # _("foo") + # _x("foo") # cssHelper._("foo") # cssHelper.title("foo") # handler._("foo") @@ -35,7 +36,8 @@ do # then ant distclean updater. find src ../jsp/WEB-INF -name *.java > $TMPFILE xgettext -f $TMPFILE -F -L java \ - --keyword=_ --keyword=cssHelper._ --keyword=cssHelper.title --keyword=handler._ --keyword=formhandler._ \ + --keyword=_ --keyword=_x --keyword=cssHelper._ --keyword=cssHelper.title \ + --keyword=handler._ --keyword=formhandler._ \ -o ${i}t if [ $? -ne 0 ] then diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index 715c800931..d4f825a9a1 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -29,6 +29,11 @@ public class CSSHelper extends HelperBase { _context.router().setConfigSetting(Messages.PROP_LANG, lang); } + /** needed for conditional css loads for zh */ + public String getLang() { + return Messages.getLanguage(_context); + } + /** translate the title and display consistently */ public String title(String s) { StringBuilder buf = new StringBuilder(128); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java index 7815f5cba1..96556b418a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java @@ -3,7 +3,7 @@ package net.i2p.router.web; public class ConfigUIHelper extends HelperBase { public ConfigUIHelper() {} - private static final String themes[] = {"classic", "dark", "light"}; + private static final String themes[] = {_x("classic"), _x("dark"), _x("light")}; public String getSettings() { StringBuilder buf = new StringBuilder(512); @@ -12,7 +12,24 @@ public class ConfigUIHelper extends HelperBase { buf.append("<input type=\"radio\" class=\"optbox\" name=\"theme\" "); if (theme.equals(current)) buf.append("checked=\"true\" "); - buf.append("value=\"").append(theme).append("\"/>").append(theme).append("<br>\n"); + buf.append("value=\"").append(theme).append("\">").append(_(theme)).append("<br>\n"); + } + return buf.toString(); + } + + private static final String langs[] = {"de", "en", "fr", "nl", "se", "zh"}; + private static final String xlangs[] = {_x("German"), _x("English"), _x("French"), + _x("Dutch"), _x("Swedish"), _x("Chinese")}; + + public String getLangSettings() { + StringBuilder buf = new StringBuilder(512); + String current = Messages.getLanguage(_context); + for (int i = 0; i < langs.length; i++) { + // we use "lang" so it is set automagically in CSSHelper + buf.append("<input type=\"radio\" class=\"optbox\" name=\"lang\" "); + if (langs[i].equals(current)) + buf.append("checked=\"true\" "); + buf.append("value=\"").append(langs[i]).append("\">").append(_(xlangs[i])).append("<br>\n"); } return buf.toString(); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java index 63762ec14d..e5e640957d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java @@ -34,4 +34,14 @@ public abstract class HelperBase { public String _(String s) { return Messages.getString(s, _context); } + + /** + * Mark a string for extraction by xgettext and translation. + * Use this only in static initializers. + * It does not translate! + * @return s + */ + public static String _x(String s) { + return s; + } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/Messages.java b/apps/routerconsole/java/src/net/i2p/router/web/Messages.java index df7c5319f3..a251f7e124 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/Messages.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/Messages.java @@ -54,7 +54,7 @@ public class Messages { } } - private static String getLanguage(I2PAppContext ctx) { + public static String getLanguage(I2PAppContext ctx) { String lang = ctx.getProperty(PROP_LANG); if (lang == null || lang.length() <= 0) lang = _localeLang; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index e7d6ee4126..7a9d91d5bd 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -202,9 +202,9 @@ public class SummaryBarRenderer { buf.append("<button type=\"submit\" name=\"updateAction\" value=\"Unsigned\" >") .append(_("Download Unsigned")) .append("<br>") - .append(_helper.getUnsignedUpdateVersion()) - .append(' ') .append(_("Update")) + .append(' ') + .append(_helper.getUnsignedUpdateVersion()) .append("</button>\n"); } buf.append("</form>\n"); diff --git a/apps/routerconsole/jsp/confignav.jsp b/apps/routerconsole/jsp/confignav.jsp index bba31052ec..699a572371 100644 --- a/apps/routerconsole/jsp/confignav.jsp +++ b/apps/routerconsole/jsp/confignav.jsp @@ -2,11 +2,8 @@ <center> <% if (request.getRequestURI().indexOf("config.jsp") != -1) { %>Network | <% } else { %><a href="config.jsp">Network</a> | <% } - String userAgent = request.getHeader("User-Agent"); - if (userAgent == null || !userAgent.contains("MSIE")) { if (request.getRequestURI().indexOf("configui.jsp") != -1) { %>UI | <% } else { %><a href="configui.jsp">UI</a> | <% } - } if (request.getRequestURI().indexOf("configservice.jsp") != -1) { %>Service | <% } else { %><a href="configservice.jsp">Service</a> | <% } if (request.getRequestURI().indexOf("configupdate.jsp") != -1) { diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index 89f7d7c2bf..1bf276237c 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.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 UI</title> +<html><head> <%@include file="css.jsp" %> +<%=cssHelper.title("config UI")%> </head><body> <%@include file="summary.jsp" %> @@ -11,7 +12,7 @@ <jsp:useBean class="net.i2p.router.web.ConfigUIHelper" id="uihelper" scope="request" /> <jsp:setProperty name="uihelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" /> -<h1>I2P UI Configuration</h1> +<h1><%=uihelper._("I2P UI Configuration")%></h1> <div class="main" id="main"> <%@include file="confignav.jsp" %> @@ -20,23 +21,27 @@ <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>Router Console Theme</h3> -<% - // userAgent defined in confignav - if (userAgent == null || !userAgent.contains("MSIE")) { -%> +<div class="configure"><h3><%=uihelper._("Router Console Theme")%></h3> <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); System.setProperty("net.i2p.router.web.ConfigUIHandler.nonce", new java.util.Random().nextLong()+""); %> - <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUIHandler.nonce")%>" /> - <input type="hidden" name="action" value="blah" /> + <input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUIHandler.nonce")%>" > + <input type="hidden" name="action" value="blah" > +<% + String userAgent = request.getHeader("User-Agent"); + if (userAgent == null || !userAgent.contains("MSIE")) { +%> <jsp:getProperty name="uihelper" property="settings" /> -<hr><div class="formaction"> -<input type="submit" name="shouldsave" value="Apply" /> <input type="reset" value="Cancel" /> -</div></form></div> <% } else { %> -Theme selection disabled for Internet Explorer, sorry.<hr>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. +<%=uihelper._("Theme selection disabled for Internet Explorer, sorry.")%> +<hr> +<%=uihelper._("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.")%> <% } %> +<h3><%=uihelper._("Router Console Language")%></h3> +<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" > +</div></form></div> </div></body></html> diff --git a/apps/routerconsole/jsp/css.jsp b/apps/routerconsole/jsp/css.jsp index 865e907235..62aceaa93f 100644 --- a/apps/routerconsole/jsp/css.jsp +++ b/apps/routerconsole/jsp/css.jsp @@ -29,4 +29,12 @@ cssHelper.setLang(request.getParameter("lang")); %> <link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css"> +<% + // make the fonts bigger for chinese + if (cssHelper.getLang().equals("zh")) { +%> +<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css"> +<% + } +%> <!--[if IE]><link href="/themes/console/classic/ieshim.css" rel="stylesheet" type="text/css" /><![endif]--> -- GitLab