add 2-param method, tag the java messages, fix the buttons, clean up add and create forms

This commit is contained in:
zzz
2009-12-10 18:08:50 +00:00
parent c39f047703
commit e5248b09ab
5 changed files with 331 additions and 94 deletions

View File

@ -426,4 +426,9 @@ public class I2PSnarkUtil {
public String getString(String s, Object o) { public String getString(String s, Object o) {
return Translate.getString(s, o, _context, BUNDLE_NAME); return Translate.getString(s, o, _context, BUNDLE_NAME);
} }
/** {0} and {1} */
public String getString(String s, Object o, Object o2) {
return Translate.getString(s, o, o2, _context, BUNDLE_NAME);
}
} }

View File

@ -81,7 +81,7 @@ public class SnarkManager implements Snark.CompleteListener {
_peerCoordinatorSet = new PeerCoordinatorSet(); _peerCoordinatorSet = new PeerCoordinatorSet();
_connectionAcceptor = new ConnectionAcceptor(_util); _connectionAcceptor = new ConnectionAcceptor(_util);
int minutes = getStartupDelayMinutes(); int minutes = getStartupDelayMinutes();
_messages.add("Adding torrents in " + minutes + (minutes == 1 ? " minute" : " minutes")); _messages.add(_("Adding torrents in {0} minutes", minutes));
I2PAppThread monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor"); I2PAppThread monitor = new I2PAppThread(new DirMonitor(), "Snark DirMonitor");
monitor.setDaemon(true); monitor.setDaemon(true);
monitor.start(); monitor.start();
@ -217,6 +217,7 @@ public class SnarkManager implements Snark.CompleteListener {
String upLimit, String upBW, boolean useOpenTrackers, String openTrackers) { String upLimit, String upBW, boolean useOpenTrackers, String openTrackers) {
boolean changed = false; boolean changed = false;
if (eepHost != null) { if (eepHost != null) {
// unused, we use socket eepget
int port = _util.getEepProxyPort(); int port = _util.getEepProxyPort();
try { port = Integer.parseInt(eepPort); } catch (NumberFormatException nfe) {} try { port = Integer.parseInt(eepPort); } catch (NumberFormatException nfe) {}
String host = _util.getEepProxyHost(); String host = _util.getEepProxyHost();
@ -237,9 +238,9 @@ public class SnarkManager implements Snark.CompleteListener {
_util.setMaxUploaders(limit); _util.setMaxUploaders(limit);
changed = true; changed = true;
_config.setProperty(PROP_UPLOADERS_TOTAL, "" + limit); _config.setProperty(PROP_UPLOADERS_TOTAL, "" + limit);
addMessage("Total uploaders limit changed to " + limit); addMessage(_("Total uploaders limit changed to {0}", limit));
} else { } else {
addMessage("Minimum total uploaders limit is " + Snark.MIN_TOTAL_UPLOADERS); addMessage(_("Minimum total uploaders limit is {0}", Snark.MIN_TOTAL_UPLOADERS));
} }
} }
} }
@ -251,9 +252,9 @@ public class SnarkManager implements Snark.CompleteListener {
_util.setMaxUpBW(limit); _util.setMaxUpBW(limit);
changed = true; changed = true;
_config.setProperty(PROP_UPBW_MAX, "" + limit); _config.setProperty(PROP_UPBW_MAX, "" + limit);
addMessage("Up BW limit changed to " + limit + "KBps"); addMessage(_("Up BW limit changed to {0}KBps", limit));
} else { } else {
addMessage("Minimum Up BW limit is " + MIN_UP_BW + "KBps"); addMessage(_("Minimum up bandwidth limit is {0}KBps", MIN_UP_BW));
} }
} }
} }
@ -297,27 +298,27 @@ public class SnarkManager implements Snark.CompleteListener {
} }
} }
if (snarksActive) { if (snarksActive) {
addMessage("Cannot change the I2CP settings while torrents are active"); addMessage(_("Cannot change the I2CP settings while torrents are active"));
_log.debug("i2cp host [" + i2cpHost + "] i2cp port " + port + " opts [" + opts _log.debug("i2cp host [" + i2cpHost + "] i2cp port " + port + " opts [" + opts
+ "] oldOpts [" + oldOpts + "]"); + "] oldOpts [" + oldOpts + "]");
} else { } else {
if (_util.connected()) { if (_util.connected()) {
_util.disconnect(); _util.disconnect();
addMessage("Disconnecting old I2CP destination"); addMessage(_("Disconnecting old I2CP destination"));
} }
Properties p = new Properties(); Properties p = new Properties();
p.putAll(opts); p.putAll(opts);
addMessage("I2CP settings changed to " + i2cpHost + ":" + port + " (" + i2cpOpts.trim() + ")"); addMessage(_("I2CP settings changed to {0}", i2cpHost + ":" + port + " (" + i2cpOpts.trim() + ")"));
_util.setI2CPConfig(i2cpHost, port, p); _util.setI2CPConfig(i2cpHost, port, p);
boolean ok = _util.connect(); boolean ok = _util.connect();
if (!ok) { if (!ok) {
addMessage("Unable to connect with the new settings, reverting to the old I2CP settings"); addMessage(_("Unable to connect with the new settings, reverting to the old I2CP settings"));
_util.setI2CPConfig(oldI2CPHost, oldI2CPPort, oldOpts); _util.setI2CPConfig(oldI2CPHost, oldI2CPPort, oldOpts);
ok = _util.connect(); ok = _util.connect();
if (!ok) if (!ok)
addMessage("Unable to reconnect with the old settings!"); addMessage(_("Unable to reconnect with the old settings!"));
} else { } else {
addMessage("Reconnected on the new I2CP destination"); addMessage(_("Reconnected on the new I2CP destination"));
_config.setProperty(PROP_I2CP_HOST, i2cpHost.trim()); _config.setProperty(PROP_I2CP_HOST, i2cpHost.trim());
_config.setProperty(PROP_I2CP_PORT, "" + port); _config.setProperty(PROP_I2CP_PORT, "" + port);
_config.setProperty(PROP_I2CP_OPTS, i2cpOpts.trim()); _config.setProperty(PROP_I2CP_OPTS, i2cpOpts.trim());
@ -328,7 +329,7 @@ public class SnarkManager implements Snark.CompleteListener {
Snark snark = getTorrent(name); Snark snark = getTorrent(name);
if ( (snark != null) && (snark.acceptor != null) ) { if ( (snark != null) && (snark.acceptor != null) ) {
snark.acceptor.restart(); snark.acceptor.restart();
addMessage("I2CP listener restarted for " + snark.meta.getName()); addMessage(_("I2CP listener restarted for \"{0}\"", snark.meta.getName()));
} }
} }
} }
@ -338,26 +339,32 @@ public class SnarkManager implements Snark.CompleteListener {
} }
if (shouldAutoStart() != autoStart) { if (shouldAutoStart() != autoStart) {
_config.setProperty(PROP_AUTO_START, autoStart + ""); _config.setProperty(PROP_AUTO_START, autoStart + "");
addMessage("Adjusted autostart to " + autoStart); if (autoStart)
addMessage(_("Enabled autostart"));
else
addMessage(_("Disabled autostart"));
changed = true; changed = true;
} }
if (_util.shouldUseOpenTrackers() != useOpenTrackers) { if (_util.shouldUseOpenTrackers() != useOpenTrackers) {
_config.setProperty(I2PSnarkUtil.PROP_USE_OPENTRACKERS, useOpenTrackers + ""); _config.setProperty(I2PSnarkUtil.PROP_USE_OPENTRACKERS, useOpenTrackers + "");
addMessage((useOpenTrackers ? "En" : "Dis") + "abled open trackers - torrent restart required to take effect."); if (useOpenTrackers)
addMessage(_("Enabled open trackers - torrent restart required to take effect."));
else
addMessage(_("Disabled open trackers - torrent restart required to take effect."));
changed = true; changed = true;
} }
if (openTrackers != null) { if (openTrackers != null) {
if (openTrackers.trim().length() > 0 && !openTrackers.trim().equals(_util.getOpenTrackerString())) { if (openTrackers.trim().length() > 0 && !openTrackers.trim().equals(_util.getOpenTrackerString())) {
_config.setProperty(I2PSnarkUtil.PROP_OPENTRACKERS, openTrackers.trim()); _config.setProperty(I2PSnarkUtil.PROP_OPENTRACKERS, openTrackers.trim());
_util.setOpenTrackerString(openTrackers); _util.setOpenTrackerString(openTrackers);
addMessage("Open Tracker list changed - torrent restart required to take effect."); addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
changed = true; changed = true;
} }
} }
if (changed) { if (changed) {
saveConfig(); saveConfig();
} else { } else {
addMessage("Configuration unchanged."); addMessage(_("Configuration unchanged."));
} }
} }
@ -367,7 +374,7 @@ public class SnarkManager implements Snark.CompleteListener {
DataHelper.storeProps(_config, _configFile); DataHelper.storeProps(_config, _configFile);
} }
} catch (IOException ioe) { } catch (IOException ioe) {
addMessage("Unable to save the config to '" + _configFile.getAbsolutePath() + "'."); addMessage(_("Unable to save the config to {0}", _configFile.getAbsolutePath()));
} }
} }
@ -385,10 +392,10 @@ public class SnarkManager implements Snark.CompleteListener {
public void addTorrent(String filename) { addTorrent(filename, false); } public void addTorrent(String filename) { addTorrent(filename, false); }
public void addTorrent(String filename, boolean dontAutoStart) { public void addTorrent(String filename, boolean dontAutoStart) {
if ((!dontAutoStart) && !_util.connected()) { if ((!dontAutoStart) && !_util.connected()) {
addMessage("Connecting to I2P"); addMessage(_("Connecting to I2P"));
boolean ok = _util.connect(); boolean ok = _util.connect();
if (!ok) { if (!ok) {
addMessage("Error connecting to I2P - check your I2CP settings!"); addMessage(_("Error connecting to I2P - check your I2CP settings!"));
return; return;
} }
} }
@ -397,7 +404,7 @@ public class SnarkManager implements Snark.CompleteListener {
filename = sfile.getCanonicalPath(); filename = sfile.getCanonicalPath();
} catch (IOException ioe) { } catch (IOException ioe) {
_log.error("Unable to add the torrent " + filename, ioe); _log.error("Unable to add the torrent " + filename, ioe);
addMessage("ERR: Could not add the torrent '" + filename + "': " + ioe.getMessage()); addMessage(_("Error: Could not add the torrent {0}", filename) + ": " + ioe.getMessage());
return; return;
} }
File dataDir = getDataDir(); File dataDir = getDataDir();
@ -436,7 +443,7 @@ public class SnarkManager implements Snark.CompleteListener {
} }
} }
} catch (IOException ioe) { } catch (IOException ioe) {
addMessage("Torrent in " + sfile.getName() + " is invalid: " + ioe.getMessage()); addMessage(_("Torrent in \"{0}\" is invalid", sfile.getName()) + ": " + ioe.getMessage());
if (sfile.exists()) if (sfile.exists())
sfile.delete(); sfile.delete();
return; return;
@ -451,9 +458,9 @@ public class SnarkManager implements Snark.CompleteListener {
File f = new File(filename); File f = new File(filename);
if (!dontAutoStart && shouldAutoStart()) { if (!dontAutoStart && shouldAutoStart()) {
torrent.startTorrent(); torrent.startTorrent();
addMessage("Torrent added and started: '" + f.getName() + "'."); addMessage(_("Torrent added and started: \"{0}\"", f.getName()));
} else { } else {
addMessage("Torrent added: '" + f.getName() + "'."); addMessage(_("Torrent added: \"{0}\"", f.getName()));
} }
} }
@ -549,19 +556,19 @@ public class SnarkManager implements Snark.CompleteListener {
// basic validation of url // basic validation of url
if ((!announce.startsWith("http://")) || if ((!announce.startsWith("http://")) ||
(announce.indexOf(".i2p/") < 0)) // need to do better than this (announce.indexOf(".i2p/") < 0)) // need to do better than this
return "Non-i2p tracker in " + info.getName() + ", deleting it from our list of trackers!"; return _("Non-i2p tracker in \"{0}\", deleting it from our list of trackers!", info.getName());
List files = info.getFiles(); List files = info.getFiles();
if ( (files != null) && (files.size() > MAX_FILES_PER_TORRENT) ) { if ( (files != null) && (files.size() > MAX_FILES_PER_TORRENT) ) {
return "Too many files in " + info.getName() + " (" + files.size() + "), deleting it!"; return _("Too many files in \"{0}\" ({1}), deleting it!", info.getName(), files.size());
} else if ( (files == null) && (info.getName().endsWith(".torrent")) ) { } else if ( (files == null) && (info.getName().endsWith(".torrent")) ) {
return "Torrent file " + info.getName() + " cannot end in '.torrent', deleting it!"; return _("Torrent file \"{0}\" cannot end in '.torrent', deleting it!", info.getName());
} else if (info.getPieces() <= 0) { } else if (info.getPieces() <= 0) {
return "No pieces in " + info.getName() + "? deleting it!"; return _("No pieces in \"{0}\", deleting it!", info.getName());
} else if (info.getPieces() > Storage.MAX_PIECES) { } else if (info.getPieces() > Storage.MAX_PIECES) {
return "Too many pieces in " + info.getName() + ", limit is " + Storage.MAX_PIECES + ", deleting it!"; return _("Too many pieces in \"{0}\", limit is {1}, deleting it!", info.getName(), Storage.MAX_PIECES);
} else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) { } else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) {
return "Pieces are too large in " + info.getName() + " (" + DataHelper.formatSize(info.getPieceLength(0)) + return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize(info.getPieceLength(0))) + ' ' +
"B, limit is " + DataHelper.formatSize(Storage.MAX_PIECE_SIZE) + "B), deleting it."; _("Limit is {0}B", DataHelper.formatSize(Storage.MAX_PIECE_SIZE));
} else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) { } else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
System.out.println("torrent info: " + info.toString()); System.out.println("torrent info: " + info.toString());
List lengths = info.getLengths(); List lengths = info.getLengths();
@ -569,8 +576,7 @@ public class SnarkManager implements Snark.CompleteListener {
for (int i = 0; i < lengths.size(); i++) for (int i = 0; i < lengths.size(); i++)
System.out.println("File " + i + " is " + lengths.get(i) + " long."); System.out.println("File " + i + " is " + lengths.get(i) + " long.");
return "Torrents larger than " + DataHelper.formatSize(Storage.MAX_TOTAL_SIZE) + return _("Torrents larger than {0}B are not supported yet, deleting \"{1}\"", Storage.MAX_TOTAL_SIZE, info.getName());
"B are not supported yet (because we're paranoid): " + info.getName() + ", deleting it!";
} else { } else {
// ok // ok
return null; return null;
@ -586,7 +592,7 @@ public class SnarkManager implements Snark.CompleteListener {
filename = sfile.getCanonicalPath(); filename = sfile.getCanonicalPath();
} catch (IOException ioe) { } catch (IOException ioe) {
_log.error("Unable to remove the torrent " + filename, ioe); _log.error("Unable to remove the torrent " + filename, ioe);
addMessage("ERR: Could not remove the torrent '" + filename + "': " + ioe.getMessage()); addMessage(_("Error: Could not remove the torrent {0}", filename) + ": " + ioe.getMessage());
return null; return null;
} }
int remaining = 0; int remaining = 0;
@ -607,7 +613,7 @@ public class SnarkManager implements Snark.CompleteListener {
////_util. ////_util.
} }
if (!wasStopped) if (!wasStopped)
addMessage("Torrent stopped: '" + sfile.getName() + "'."); addMessage(_("Torrent stopped: \"{0}\"", sfile.getName()));
} }
return torrent; return torrent;
} }
@ -622,7 +628,7 @@ public class SnarkManager implements Snark.CompleteListener {
torrentFile.delete(); torrentFile.delete();
if (torrent.storage != null) if (torrent.storage != null)
removeTorrentStatus(torrent.storage.getMetaInfo()); removeTorrentStatus(torrent.storage.getMetaInfo());
addMessage("Torrent removed: '" + torrentFile.getName() + "'."); addMessage(_("Torrent removed: \"{0}\"", torrentFile.getName()));
} }
} }
@ -655,7 +661,7 @@ public class SnarkManager implements Snark.CompleteListener {
public void torrentComplete(Snark snark) { public void torrentComplete(Snark snark) {
File f = new File(snark.torrent); File f = new File(snark.torrent);
long len = snark.meta.getTotalLength(); long len = snark.meta.getTotalLength();
addMessage("Download finished: " + f.getName() + " (size: " + DataHelper.formatSize(len) + "B)"); addMessage(_("Download finished: \"{0}\"", f.getName()) + " (" + _("size: {0}B", DataHelper.formatSize(len)) + ')');
updateStatus(snark); updateStatus(snark);
} }
@ -683,7 +689,7 @@ public class SnarkManager implements Snark.CompleteListener {
// already known. noop // already known. noop
} else { } else {
if (shouldAutoStart() && !_util.connect()) if (shouldAutoStart() && !_util.connect())
addMessage("Unable to connect to I2P!"); addMessage(_("Unable to connect to I2P!"));
addTorrent((String)foundNames.get(i), !shouldAutoStart()); addTorrent((String)foundNames.get(i), !shouldAutoStart());
} }
} }
@ -699,6 +705,21 @@ public class SnarkManager implements Snark.CompleteListener {
} }
} }
/** translate */
private String _(String s) {
return _util.getString(s);
}
/** translate */
private String _(String s, Object o) {
return _util.getString(s, o);
}
/** translate */
private String _(String s, Object o, Object o2) {
return _util.getString(s, o, o2);
}
/** /**
* "name", "announceURL=websiteURL" pairs * "name", "announceURL=websiteURL" pairs
*/ */

View File

@ -215,7 +215,7 @@ public class I2PSnarkServlet extends HttpServlet {
String action = req.getParameter("action"); String action = req.getParameter("action");
if (action == null) { if (action == null) {
// noop // noop
} else if ("Add torrent".equals(action)) { } else if (_("Add torrent").equals(action)) {
String newFile = req.getParameter("newFile"); String newFile = req.getParameter("newFile");
String newURL = req.getParameter("newURL"); String newURL = req.getParameter("newURL");
// NOTE - newFile currently disabled in HTML form - see below // NOTE - newFile currently disabled in HTML form - see below
@ -259,7 +259,7 @@ public class I2PSnarkServlet extends HttpServlet {
} else { } else {
// no file or URL specified // no file or URL specified
} }
} else if ("Stop".equals(action)) { } else if (_("Stop").equals(action)) {
String torrent = req.getParameter("torrent"); String torrent = req.getParameter("torrent");
if (torrent != null) { if (torrent != null) {
byte infoHash[] = Base64.decode(torrent); byte infoHash[] = Base64.decode(torrent);
@ -274,7 +274,7 @@ public class I2PSnarkServlet extends HttpServlet {
} }
} }
} }
} else if ("Start".equals(action)) { } else if (_("Start").equals(action)) {
String torrent = req.getParameter("torrent"); String torrent = req.getParameter("torrent");
if (torrent != null) { if (torrent != null) {
byte infoHash[] = Base64.decode(torrent); byte infoHash[] = Base64.decode(torrent);
@ -356,7 +356,7 @@ public class I2PSnarkServlet extends HttpServlet {
} }
} }
} }
} else if ("Save configuration".equals(action)) { } else if (_("Save configuration").equals(action)) {
String dataDir = req.getParameter("dataDir"); String dataDir = req.getParameter("dataDir");
boolean autoStart = req.getParameter("autoStart") != null; boolean autoStart = req.getParameter("autoStart") != null;
String seedPct = req.getParameter("seedPct"); String seedPct = req.getParameter("seedPct");
@ -370,7 +370,7 @@ public class I2PSnarkServlet extends HttpServlet {
boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null; boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null;
String openTrackers = req.getParameter("openTrackers"); String openTrackers = req.getParameter("openTrackers");
_manager.updateConfig(dataDir, autoStart, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, upLimit, upBW, useOpenTrackers, openTrackers); _manager.updateConfig(dataDir, autoStart, seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts, upLimit, upBW, useOpenTrackers, openTrackers);
} else if ("Create torrent".equals(action)) { } else if (_("Create torrent").equals(action)) {
String baseData = req.getParameter("baseFile"); String baseData = req.getParameter("baseFile");
if (baseData != null && baseData.trim().length() > 0) { if (baseData != null && baseData.trim().length() > 0) {
File baseFile = new File(_manager.getDataDir(), baseData); File baseFile = new File(_manager.getDataDir(), baseData);
@ -395,12 +395,12 @@ public class I2PSnarkServlet extends HttpServlet {
FileOutputStream out = new FileOutputStream(torrentFile); FileOutputStream out = new FileOutputStream(torrentFile);
out.write(info.getTorrentData()); out.write(info.getTorrentData());
out.close(); out.close();
_manager.addMessage(_("Torrent created for {0}", baseFile.getName()) + ": " + torrentFile.getAbsolutePath()); _manager.addMessage(_("Torrent created for \"{0}\"", baseFile.getName()) + ": " + torrentFile.getAbsolutePath());
// now fire it up, but don't automatically seed it // now fire it up, but don't automatically seed it
_manager.addTorrent(torrentFile.getCanonicalPath(), true); _manager.addTorrent(torrentFile.getCanonicalPath(), true);
_manager.addMessage(_("Many I2P trackers require you to register new torrents before seeding - please do so before starting {0}", baseFile.getName())); _manager.addMessage(_("Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"", baseFile.getName()));
} catch (IOException ioe) { } catch (IOException ioe) {
_manager.addMessage(_("Error creating a torrent for {0}", baseFile.getAbsolutePath()) + ": " + ioe.getMessage()); _manager.addMessage(_("Error creating a torrent for \"{0}\"", baseFile.getAbsolutePath()) + ": " + ioe.getMessage());
} }
} else { } else {
_manager.addMessage(_("Cannot create a torrent for the nonexistent data: {0}", baseFile.getAbsolutePath())); _manager.addMessage(_("Cannot create a torrent for the nonexistent data: {0}", baseFile.getAbsolutePath()));
@ -739,19 +739,19 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n"); out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n");
out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">"); out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">");
out.write(_("Add Torrent")); out.write(_("Add Torrent"));
out.write("</span><br>\n"); out.write("</span><br>\n<table border=\"0\"><tr><td>");
out.write(_("From URL")); out.write(_("From URL"));
out.write(": <input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" > \n"); out.write(":<td><input type=\"text\" name=\"newURL\" size=\"80\" value=\"" + newURL + "\" > \n");
// not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve) // not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
out.write("<input type=\"submit\" value=\""); out.write("<tr><td>&nbsp;<td><input type=\"submit\" value=\"");
out.write(_("Add torrent")); out.write(_("Add torrent"));
out.write("\" name=\"action\" ><br>\n"); out.write("\" name=\"action\" ><br>\n");
out.write("<span class=\"snarkAddInfo\">"); out.write("<tr><td>&nbsp;<td><span class=\"snarkAddInfo\">");
out.write(_("Alternately, you can copy .torrent files to {0} .", _manager.getDataDir().getAbsolutePath())); out.write(_("Alternately, you can copy .torrent files to the directory {0}.", _manager.getDataDir().getAbsolutePath()));
out.write("<br>\n"); out.write("\n");
out.write(_("Removing that .torrent file will cause the torrent to stop.")); out.write(_("Removing a .torrent file will cause the torrent to stop."));
out.write("<br></span>\n"); out.write("<br></span></table>\n");
out.write("</form>\n</span></div>"); out.write("</form>\n</span></div>");
} }
@ -767,16 +767,16 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n"); out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" >\n");
out.write("<span class=\"snarkConfigTitle\">"); out.write("<span class=\"snarkConfigTitle\">");
out.write(_("Create Torrent")); out.write(_("Create Torrent"));
out.write("</span><br>\n"); out.write("</span><br>\n<table border=\"0\"><tr><td>");
//out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n"); //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
out.write(_("Data to seed")); out.write(_("Data to seed"));
out.write(": " + _manager.getDataDir().getAbsolutePath() + File.separatorChar out.write(":<td>" + _manager.getDataDir().getAbsolutePath() + File.separatorChar
+ "<input type=\"text\" name=\"baseFile\" size=\"20\" value=\"" + baseFile + "<input type=\"text\" name=\"baseFile\" size=\"20\" value=\"" + baseFile
+ "\" title=\""); + "\" title=\"");
out.write(_("File to seed (must be within the specified path)")); out.write(_("File or directory to seed (must be within the specified path)"));
out.write("\" ><br>\n"); out.write("\" ><tr><td>\n");
out.write(_("Tracker")); out.write(_("Tracker"));
out.write(": <select name=\"announceURL\"><option value=\"\">"); out.write(":<td><select name=\"announceURL\"><option value=\"\">");
out.write(_("Select a tracker")); out.write(_("Select a tracker"));
out.write("</option>\n"); out.write("</option>\n");
Map trackers = _manager.getTrackers(); Map trackers = _manager.getTrackers();
@ -791,13 +791,13 @@ public class I2PSnarkServlet extends HttpServlet {
} }
out.write("</select>\n"); out.write("</select>\n");
out.write(_("or")); out.write(_("or"));
out.write(" <input type=\"text\" name=\"announceURLOther\" size=\"50\" value=\"http://\" " + out.write("<tr><td>&nbsp;<td><input type=\"text\" name=\"announceURLOther\" size=\"50\" value=\"http://\" " +
"title=\""); "title=\"");
out.write(_("Custom tracker URL")); out.write(_("Specify custom tracker announce URL"));
out.write("\" > "); out.write("\" > ");
out.write("<input type=\"submit\" value=\""); out.write("<tr><td>&nbsp;<td><input type=\"submit\" value=\"");
out.write(_("Create torrent")); out.write(_("Create torrent"));
out.write("\" name=\"action\" >\n"); out.write("\" name=\"action\" ></table>\n");
out.write("</form>\n</span></div>"); out.write("</form>\n</span></div>");
} }
@ -862,9 +862,9 @@ public class I2PSnarkServlet extends HttpServlet {
out.write(_("Up bandwidth limit")); out.write(_("Up bandwidth limit"));
out.write(": <td><input type=\"text\" name=\"upBW\" value=\"" out.write(": <td><input type=\"text\" name=\"upBW\" value=\""
+ _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" > KBps <i>("); + _manager.util().getMaxUpBW() + "\" size=\"3\" maxlength=\"3\" > KBps <i>(");
out.write(_("Half available bandwidth< recommended.")); out.write(_("Half available bandwidth recommended."));
out.write(" <a href=\"/config.jsp\" target=\"blank\">"); out.write(" <a href=\"/config.jsp\" target=\"blank\">");
out.write(_("Configure")); out.write(_("View or change router bandwidth"));
out.write("</a>)</i><br>\n"); out.write("</a>)</i><br>\n");
out.write("<tr><td>"); out.write("<tr><td>");
@ -916,10 +916,12 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("</form></div>"); out.write("</form></div>");
} }
/** translate */
private String _(String s) { private String _(String s) {
return _manager.util().getString(s); return _manager.util().getString(s);
} }
/** translate */
private String _(String s, Object o) { private String _(String s, Object o) {
return _manager.util().getString(s, o); return _manager.util().getString(s, o);
} }

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: I2P i2psnark\n" "Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-10 14:50+0000\n" "POT-Creation-Date: 2009-12-10 17:41+0000\n"
"PO-Revision-Date: 2009-10-19 12:50+0000\n" "PO-Revision-Date: 2009-10-19 12:50+0000\n"
"Last-Translator: foo <foo@bar>\n" "Last-Translator: foo <foo@bar>\n"
"Language-Team: foo <foo@bar>\n" "Language-Team: foo <foo@bar>\n"
@ -17,6 +17,188 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:84
#, java-format
msgid "Adding torrents in {0} minutes"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:241
#, java-format
msgid "Total uploaders limit changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:243
#, java-format
msgid "Minimum total uploaders limit is {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:255
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:257
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:301
msgid "Cannot change the I2CP settings while torrents are active"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:307
msgid "Disconnecting old I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:311
#, java-format
msgid "I2CP settings changed to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:315
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:319
msgid "Unable to reconnect with the old settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:321
msgid "Reconnected on the new I2CP destination"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:332
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:343
msgid "Enabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:345
msgid "Disabled autostart"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:351
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:353
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:360
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:367
msgid "Configuration unchanged."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:377
#, java-format
msgid "Unable to save the config to {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:395
msgid "Connecting to I2P"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:398
msgid "Error connecting to I2P - check your I2CP settings!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:407
#, java-format
msgid "Error: Could not add the torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:446
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:461
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:463
#, java-format
msgid "Torrent added: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:559
#, java-format
msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:562
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:564
#, java-format
msgid "Torrent file \"{0}\" cannot end in '.torrent', deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:566
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:568
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:570
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:571
#, java-format
msgid "Limit is {0}B"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:579
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:595
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:616
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:631
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:664
#, java-format
msgid "Download finished: \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:664
#, java-format
msgid "size: {0}B"
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:692
msgid "Unable to connect to I2P!"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:86
msgid "I2PSnark - Anonymous BitTorrent Client" msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "" msgstr ""
@ -104,19 +286,24 @@ msgstr ""
msgid "{0} connected peers" msgid "{0} connected peers"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748
msgid "Add torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:226
#, java-format #, java-format
msgid "Torrent file {0} does not exist" msgid "Torrent file {0} does not exist"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:236
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
#, java-format #, java-format
msgid "Torrent already running: {0}" msgid "Torrent already running: {0}"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:238 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:238
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format #, java-format
msgid "Torrent already in the queue: {0}" msgid "Torrent already in the queue: {0}"
msgstr "" msgstr ""
@ -145,6 +332,16 @@ msgstr ""
msgid "Invalid URL - must start with http://" msgid "Invalid URL - must start with http://"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
msgid "Stop"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:277
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:623
msgid "Start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:287 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:287
#, java-format #, java-format
msgid "Starting up torrent {0}" msgid "Starting up torrent {0}"
@ -173,25 +370,35 @@ msgstr ""
msgid "Data dir deleted: {0}" msgid "Data dir deleted: {0}"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:359
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "Save configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:373
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
msgid "Create torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:383
msgid "Error creating torrent - you must select a tracker" msgid "Error creating torrent - you must select a tracker"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
#, java-format #, java-format
msgid "Torrent created for {0}" msgid "Torrent created for \"{0}\""
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401
#, java-format #, java-format
msgid "" msgid ""
"Many I2P trackers require you to register new torrents before seeding - " "Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting {0}" "please do so before starting \"{0}\""
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
#, java-format #, java-format
msgid "Error creating a torrent for {0}" msgid "Error creating a torrent for \"{0}\""
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406
@ -285,18 +492,10 @@ msgstr ""
msgid "Stop the torrent" msgid "Stop the torrent"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
msgid "Stop"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:621 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:621
msgid "Start the torrent" msgid "Start the torrent"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:623
msgid "Start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
msgid "Remove the torrent from the active list, deleting the .torrent file" msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "" msgstr ""
@ -341,17 +540,13 @@ msgstr ""
msgid "From URL" msgid "From URL"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748
msgid "Add torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
#, java-format #, java-format
msgid "Alternately, you can copy .torrent files to {0} ." msgid "Alternately, you can copy .torrent files to {0} ."
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:753
msgid "Removing that .torrent file will cause the torrent to stop." msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769
@ -378,10 +573,6 @@ msgstr ""
msgid "Custom tracker URL" msgid "Custom tracker URL"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
msgid "Create torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
@ -448,21 +639,17 @@ msgstr ""
msgid "I2CP options" msgid "I2CP options"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966
msgid "Save configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
#, java-format #, java-format
msgid "Torrent fetched from {0}" msgid "Torrent fetched from {0}"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
#, java-format #, java-format
msgid "Torrent at {0} was not valid" msgid "Torrent at {0} was not valid"
msgstr "" msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:996 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998
#, java-format #, java-format
msgid "Torrent was not retrieved from {0}" msgid "Torrent was not retrieved from {0}"
msgstr "" msgstr ""

View File

@ -76,6 +76,28 @@ public abstract class Translate {
} }
} }
/** for {0} and {1} */
public static String getString(String s, Object o, Object o2, I2PAppContext ctx, String bun) {
String lang = getLanguage(ctx);
if (lang.equals(TEST_LANG))
return TEST_STRING + '(' + o + ',' + o2 + ')' + TEST_STRING;
String x = getString(s, ctx, bun);
Object[] oArray = new Object[2];
oArray[0] = o;
oArray[1] = o2;
try {
MessageFormat fmt = new MessageFormat(x, new Locale(lang));
return fmt.format(oArray, new StringBuffer(), null).toString();
} catch (IllegalArgumentException iae) {
System.err.println("Bad format: orig: \"" + s +
"\" trans: \"" + x +
"\" param1: \"" + o +
"\" param2: \"" + o2 +
"\" lang: " + lang);
return "FIXME: " + x + ' ' + o + ',' + o2;
}
}
/** @return lang in routerconsole.lang property, else current locale */ /** @return lang in routerconsole.lang property, else current locale */
public static String getLanguage(I2PAppContext ctx) { public static String getLanguage(I2PAppContext ctx) {
String lang = ctx.getProperty(PROP_LANG); String lang = ctx.getProperty(PROP_LANG);