diff --git a/.tx/config b/.tx/config
index 1d7c4551a..30b4dea74 100644
--- a/.tx/config
+++ b/.tx/config
@@ -619,21 +619,21 @@ trans.tr_TR = installer/resources/eepsite/docroot/help/index_tr.html
;; Text on /console
;;
type = HTML
-source_file = installer/resources/readme/readme.html
+source_file = apps/routerconsole/resources/docs/readme.html
source_lang = en
-trans.ar = installer/resources/readme/readme_ar.html
-trans.de = installer/resources/readme/readme_de.html
-trans.fr = installer/resources/readme/readme_fr.html
+trans.ar = apps/routerconsole/resources/docs/readme_ar.html
+trans.de = apps/routerconsole/resources/docs/readme_de.html
+trans.fr = apps/routerconsole/resources/docs/readme_fr.html
;; Java converts id to in
-trans.id = installer/resources/readme/readme_in.html
-trans.it = installer/resources/readme/readme_it.html
-trans.ja = installer/resources/readme/readme_ja.html
-trans.pl = installer/resources/readme/readme_pl.html
-trans.pt = installer/resources/readme/readme_pt.html
-trans.ro = installer/resources/readme/readme_ro.html
-trans.ru_RU = installer/resources/readme/readme_ru.html
-trans.tr_TR = installer/resources/readme/readme_tr.html
-trans.zh_CN = installer/resources/readme/readme_zh.html
+trans.id = apps/routerconsole/resources/docs/readme_in.html
+trans.it = apps/routerconsole/resources/docs/readme_it.html
+trans.ja = apps/routerconsole/resources/docs/readme_ja.html
+trans.pl = apps/routerconsole/resources/docs/readme_pl.html
+trans.pt = apps/routerconsole/resources/docs/readme_pt.html
+trans.ro = apps/routerconsole/resources/docs/readme_ro.html
+trans.ru_RU = apps/routerconsole/resources/docs/readme_ru.html
+trans.tr_TR = apps/routerconsole/resources/docs/readme_tr.html
+trans.zh_CN = apps/routerconsole/resources/docs/readme_zh.html
[main]
host = https://www.transifex.com
diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml
index 5b65c97d1..553fea3b1 100644
--- a/apps/routerconsole/java/build.xml
+++ b/apps/routerconsole/java/build.xml
@@ -140,7 +140,7 @@
-
+
@@ -338,10 +338,13 @@
-
+
+
+
+
+ basedir="../jsp/" excludes="web.xml, **/*.java, *.jsp, *.jsi, web-fragment.xml, web-out.xml">
@@ -351,7 +354,7 @@
-
+
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java
index 2200b9af6..b16768260 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ContentHelper.java
@@ -1,6 +1,10 @@
package net.i2p.router.web;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
import java.util.Locale;
import net.i2p.util.FileUtil;
@@ -12,12 +16,16 @@ public class ContentHelper extends HelperBase {
private String _lang;
/**
- * Caution, use absolute paths only, do not assume files are in CWD
+ * Caution, use absolute paths only for getContent() and getTextContent(),
+ * do not assume files are in CWD.
+ * Use relative path for getResource().
*/
public void setPage(String page) { _page = page; }
+
public void setStartAtBeginning(String moo) {
_startAtBeginning = Boolean.parseBoolean(moo);
}
+
public void setLang(String l) {
/*****
if((_lang == null || !_lang.equals(l)) && (l != null)) {
@@ -106,4 +114,61 @@ public class ContentHelper extends HelperBase {
return newname;
return _page;
}
+
+ /**
+ * Convert file.ext to file_lang.ext if it exists.
+ * Get lang from the cgi lang param, then properties, then from the default locale.
+ * _context must be set to check the property.
+ * @return "" on error
+ * @since 0.9.49
+ */
+ public String getResource() {
+ if (_page == null || _page.contains(".."))
+ return "";
+ String lang = _lang;
+ String page = null;
+ int lastdot = _page.lastIndexOf('.');
+ if (lastdot <= 0) {
+ page = _page;
+ } else {
+ if (lang == null || lang.length() <= 0) {
+ if (_context != null)
+ lang = _context.getProperty(Messages.PROP_LANG);
+ if (lang == null || lang.length() <= 0) {
+ lang = Locale.getDefault().getLanguage();
+ if (lang == null || lang.length() <= 0)
+ page = _page;
+ }
+ }
+ }
+ if (page == null) {
+ if (lang.equals("en"))
+ page = _page;
+ else
+ page = _page.substring(0, lastdot) + '_' + lang + _page.substring(lastdot);
+ }
+ InputStream is = ContentHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + page);
+ if (is == null) {
+ is = ContentHelper.class.getResourceAsStream("/net/i2p/router/web/resources/" + _page);
+ if (is == null)
+ return "";
+ }
+ BufferedReader in = null;
+ StringBuilder buf = new StringBuilder(20000);
+ try {
+ in = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ String line = null;
+ int i = 0;
+ while ( (line = in.readLine()) != null) {
+ buf.append(line);
+ if (_maxLines > 0 && ++i >= _maxLines)
+ break;
+ }
+ } catch (IOException ioe) {
+ } finally {
+ if (in != null) try { in.close(); } catch (IOException ioe) {}
+ try { is.close(); } catch (IOException ioe) {}
+ }
+ return buf.toString();
+ }
}
diff --git a/apps/routerconsole/jsp/console.jsp b/apps/routerconsole/jsp/console.jsp
index 446e51b85..497ac0c8f 100644
--- a/apps/routerconsole/jsp/console.jsp
+++ b/apps/routerconsole/jsp/console.jsp
@@ -34,8 +34,8 @@
<%=intl._t("Welcome to I2P")%>
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
-
+
-
+