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("").append(theme).append("
\n"); + buf.append("value=\"").append(theme).append("\">").append(_(theme)).append("
\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("").append(_(xlangs[i])).append("
\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("\n"); } buf.append("\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 @@
<% if (request.getRequestURI().indexOf("config.jsp") != -1) { %>Network | <% } else { %>Network | <% } - String userAgent = request.getHeader("User-Agent"); - if (userAgent == null || !userAgent.contains("MSIE")) { if (request.getRequestURI().indexOf("configui.jsp") != -1) { %>UI | <% } else { %>UI | <% } - } if (request.getRequestURI().indexOf("configservice.jsp") != -1) { %>Service | <% } else { %>Service | <% } 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"%> -I2P Router Console - config UI + <%@include file="css.jsp" %> +<%=cssHelper.title("config UI")%> <%@include file="summary.jsp" %> @@ -11,7 +12,7 @@ " /> -

I2P UI Configuration

+

<%=uihelper._("I2P UI Configuration")%>

<%@include file="confignav.jsp" %> @@ -20,23 +21,27 @@ " /> -

Router Console Theme

-<% - // userAgent defined in confignav - if (userAgent == null || !userAgent.contains("MSIE")) { -%> +

<%=uihelper._("Router Console Theme")%>

<% 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()+""); %> - " /> - + " > + +<% + String userAgent = request.getHeader("User-Agent"); + if (userAgent == null || !userAgent.contains("MSIE")) { +%> -
- -
<% } else { %> -Theme selection disabled for Internet Explorer, sorry.
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.")%> +
+<%=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.")%> <% } %> +

<%=uihelper._("Router Console Language")%>

+ +<%=uihelper._("Please contribute to the router console translation project! Contact the developers on IRC #i2p to help.")%> +
+ +
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")); %> console.css" rel="stylesheet" type="text/css"> +<% + // make the fonts bigger for chinese + if (cssHelper.getLang().equals("zh")) { +%> +console_big.css" rel="stylesheet" type="text/css"> +<% + } +%>