diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh
index ddc6785a0..879c86089 100755
--- a/apps/routerconsole/java/bundle-messages.sh
+++ b/apps/routerconsole/java/bundle-messages.sh
@@ -39,7 +39,8 @@ ROUTERFILES="\
../../../router/java/src/net/i2p/router/transport/TransportManager.java \
../../../router/java/src/net/i2p/router/transport/GetBidsJob.java \
../../../router/java/src/net/i2p/router/Blocklist.java \
- ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java"
+ ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java \
+ ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java"
# add ../java/ so the refs will work in the po file
JPATHS="../java/src ../jsp/WEB-INF ../java/strings $JFILE $ROUTERFILES"
diff --git a/history.txt b/history.txt
index 3a7c82806..507a10e75 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,5 @@
2010-03-05 zzz
+ * Console: Tag reseed messages
* I2PSOCKSIRCTunnel:
- New, for filtering IRC client traffic when using SOCKS
* I2PTunnelIRCClient:
diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
index f4b9ee430..3847ef004 100644
--- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
+++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
@@ -18,6 +18,7 @@ import net.i2p.util.EepGet;
import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
import net.i2p.util.SSLEepGet;
+import net.i2p.util.Translate;
/**
* Moved from ReseedHandler in routerconsole. See ReseedChecker for additional comments.
@@ -41,6 +42,10 @@ public class Reseeder {
private static final String PROP_STATUS = "net.i2p.router.web.ReseedHandler.statusMessage";
public static final String PROP_PROXY_HOST = "router.reseedProxyHost";
public static final String PROP_PROXY_PORT = "router.reseedProxyPort";
+ private static final String RESEED_TIPS =
+ _x("Ensure that nothing blocks outbound HTTP, check logs " +
+ "and if nothing helps, read FAQ about reseeding manually.");
+
public Reseeder(RouterContext ctx) {
_context = ctx;
@@ -63,7 +68,6 @@ public class Reseeder {
}
- /** Todo: translate the messages sent via PROP_STATUS */
public class ReseedRunner implements Runnable, EepGet.StatusListener {
private boolean _isRunning;
private String _proxyHost;
@@ -71,7 +75,7 @@ public class Reseeder {
public ReseedRunner() {
_isRunning = false;
- System.setProperty(PROP_STATUS, "Reseeding.");
+ System.setProperty(PROP_STATUS, _("Reseeding"));
}
public boolean isRunning() { return _isRunning; }
public void run() {
@@ -105,10 +109,6 @@ public class Reseeder {
* save them into this router's netDb dir.
*
*/
- private static final String RESEED_TIPS =
- "Ensure that nothing blocks outbound HTTP, check logs " +
- "and if nothing helps, read FAQ about reseeding manually.";
-
private void reseed(boolean echoStatus) {
List URLList = new ArrayList();
String URLs = _context.getProperty("i2p.reseedURL", DEFAULT_SEED_URL);
@@ -139,14 +139,14 @@ public class Reseeder {
try {
System.setProperty(PROP_ERROR, "");
- System.setProperty(PROP_STATUS, "Reseeding: fetching seed URL.");
+ System.setProperty(PROP_STATUS, _("Reseeding: fetching seed URL."));
System.err.println("Reseed from " + seedURL);
URL dir = new URL(seedURL);
byte contentRaw[] = readURL(dir);
if (contentRaw == null) {
System.setProperty(PROP_ERROR,
- "Last reseed failed fully (failed reading seed URL). " +
- RESEED_TIPS);
+ _("Last reseed failed fully (failed reading seed URL).") + ' ' +
+ _(RESEED_TIPS));
// Logging deprecated here since attemptFailed() provides better info
_log.debug("Failed reading seed URL: " + seedURL);
return;
@@ -171,8 +171,8 @@ public class Reseeder {
if (total <= 0) {
_log.error("Read " + contentRaw.length + " bytes from seed " + seedURL + ", but found no routerInfo URLs.");
System.setProperty(PROP_ERROR,
- "Last reseed failed fully (no routerInfo URLs at seed URL). " +
- RESEED_TIPS);
+ _("Last reseed failed fully (no routerInfo URLs at seed URL).") + ' ' +
+ _(RESEED_TIPS));
return;
}
@@ -184,8 +184,7 @@ public class Reseeder {
for (Iterator iter = urlList.iterator(); iter.hasNext() && fetched < 200; ) {
try {
System.setProperty(PROP_STATUS,
- "Reseeding: fetching router info from seed URL (" +
- fetched + " successful, " + errors + " errors, " + total + " total).");
+ _("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors));
fetchSeed(seedURL, (String)iter.next());
fetched++;
@@ -206,13 +205,13 @@ public class Reseeder {
// because some routerInfos will always fail.
if ((failPercent >= 10) && (failPercent < 90)) {
System.setProperty(PROP_ERROR,
- "Last reseed failed partly (" + failPercent + "% of " + total + "). " +
- RESEED_TIPS);
+ _("Last reseed failed partly ({0}% of {1}).", failPercent, total) + ' ' +
+ _(RESEED_TIPS));
}
if (failPercent >= 90) {
System.setProperty(PROP_ERROR,
- "Last reseed failed (" + failPercent + "% of " + total + "). " +
- RESEED_TIPS);
+ _("Last reseed failed ({0}% of {1}).", failPercent, total) + ' ' +
+ _(RESEED_TIPS));
}
if (fetched > 0)
_context.netDb().rescan();
@@ -221,8 +220,8 @@ public class Reseeder {
_isRunning = false;
} catch (Throwable t) {
System.setProperty(PROP_ERROR,
- "Last reseed failed fully (exception caught). " +
- RESEED_TIPS);
+ _("Last reseed failed fully (exception caught).") + ' ' +
+ _(RESEED_TIPS));
_log.error("Error reseeding", t);
}
}
@@ -270,6 +269,28 @@ public class Reseeder {
}
+ /**
+ * Mark a string for extraction by xgettext and translation.
+ * Use this only in static initializers.
+ * It does not translate!
+ * @return s
+ */
+ private static final String _x(String s) {
+ return s;
+ }
+
+ private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
+
+ /** translate */
+ public String _(String key) {
+ return Translate.getString(key, _context, BUNDLE_NAME);
+ }
+
+ /** translate */
+ public String _(String s, Object o, Object o2) {
+ return Translate.getString(s, o, o2, _context, BUNDLE_NAME);
+ }
+
/******
public static void main(String args[]) {
if ( (args != null) && (args.length == 1) && (!Boolean.valueOf(args[0]).booleanValue()) ) {