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) {
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();
_connectionAcceptor = new ConnectionAcceptor(_util);
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");
monitor.setDaemon(true);
monitor.start();
@ -217,6 +217,7 @@ public class SnarkManager implements Snark.CompleteListener {
String upLimit, String upBW, boolean useOpenTrackers, String openTrackers) {
boolean changed = false;
if (eepHost != null) {
// unused, we use socket eepget
int port = _util.getEepProxyPort();
try { port = Integer.parseInt(eepPort); } catch (NumberFormatException nfe) {}
String host = _util.getEepProxyHost();
@ -237,9 +238,9 @@ public class SnarkManager implements Snark.CompleteListener {
_util.setMaxUploaders(limit);
changed = true;
_config.setProperty(PROP_UPLOADERS_TOTAL, "" + limit);
addMessage("Total uploaders limit changed to " + limit);
addMessage(_("Total uploaders limit changed to {0}", limit));
} 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);
changed = true;
_config.setProperty(PROP_UPBW_MAX, "" + limit);
addMessage("Up BW limit changed to " + limit + "KBps");
addMessage(_("Up BW limit changed to {0}KBps", limit));
} 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) {
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
+ "] oldOpts [" + oldOpts + "]");
} else {
if (_util.connected()) {
_util.disconnect();
addMessage("Disconnecting old I2CP destination");
addMessage(_("Disconnecting old I2CP destination"));
}
Properties p = new Properties();
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);
boolean ok = _util.connect();
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);
ok = _util.connect();
if (!ok)
addMessage("Unable to reconnect with the old settings!");
addMessage(_("Unable to reconnect with the old settings!"));
} 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_PORT, "" + port);
_config.setProperty(PROP_I2CP_OPTS, i2cpOpts.trim());
@ -328,7 +329,7 @@ public class SnarkManager implements Snark.CompleteListener {
Snark snark = getTorrent(name);
if ( (snark != null) && (snark.acceptor != null) ) {
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) {
_config.setProperty(PROP_AUTO_START, autoStart + "");
addMessage("Adjusted autostart to " + autoStart);
if (autoStart)
addMessage(_("Enabled autostart"));
else
addMessage(_("Disabled autostart"));
changed = true;
}
if (_util.shouldUseOpenTrackers() != 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;
}
if (openTrackers != null) {
if (openTrackers.trim().length() > 0 && !openTrackers.trim().equals(_util.getOpenTrackerString())) {
_config.setProperty(I2PSnarkUtil.PROP_OPENTRACKERS, openTrackers.trim());
_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;
}
}
if (changed) {
saveConfig();
} else {
addMessage("Configuration unchanged.");
addMessage(_("Configuration unchanged."));
}
}
@ -367,7 +374,7 @@ public class SnarkManager implements Snark.CompleteListener {
DataHelper.storeProps(_config, _configFile);
}
} 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, boolean dontAutoStart) {
if ((!dontAutoStart) && !_util.connected()) {
addMessage("Connecting to I2P");
addMessage(_("Connecting to I2P"));
boolean ok = _util.connect();
if (!ok) {
addMessage("Error connecting to I2P - check your I2CP settings!");
addMessage(_("Error connecting to I2P - check your I2CP settings!"));
return;
}
}
@ -397,7 +404,7 @@ public class SnarkManager implements Snark.CompleteListener {
filename = sfile.getCanonicalPath();
} catch (IOException 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;
}
File dataDir = getDataDir();
@ -436,7 +443,7 @@ public class SnarkManager implements Snark.CompleteListener {
}
}
} 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())
sfile.delete();
return;
@ -451,9 +458,9 @@ public class SnarkManager implements Snark.CompleteListener {
File f = new File(filename);
if (!dontAutoStart && shouldAutoStart()) {
torrent.startTorrent();
addMessage("Torrent added and started: '" + f.getName() + "'.");
addMessage(_("Torrent added and started: \"{0}\"", f.getName()));
} 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
if ((!announce.startsWith("http://")) ||
(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();
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")) ) {
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) {
return "No pieces in " + info.getName() + "? deleting it!";
return _("No pieces in \"{0}\", deleting it!", info.getName());
} 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) {
return "Pieces are too large in " + info.getName() + " (" + DataHelper.formatSize(info.getPieceLength(0)) +
"B, limit is " + DataHelper.formatSize(Storage.MAX_PIECE_SIZE) + "B), deleting it.";
return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize(info.getPieceLength(0))) + ' ' +
_("Limit is {0}B", DataHelper.formatSize(Storage.MAX_PIECE_SIZE));
} else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
System.out.println("torrent info: " + info.toString());
List lengths = info.getLengths();
@ -569,8 +576,7 @@ public class SnarkManager implements Snark.CompleteListener {
for (int i = 0; i < lengths.size(); i++)
System.out.println("File " + i + " is " + lengths.get(i) + " long.");
return "Torrents larger than " + DataHelper.formatSize(Storage.MAX_TOTAL_SIZE) +
"B are not supported yet (because we're paranoid): " + info.getName() + ", deleting it!";
return _("Torrents larger than {0}B are not supported yet, deleting \"{1}\"", Storage.MAX_TOTAL_SIZE, info.getName());
} else {
// ok
return null;
@ -586,7 +592,7 @@ public class SnarkManager implements Snark.CompleteListener {
filename = sfile.getCanonicalPath();
} catch (IOException 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;
}
int remaining = 0;
@ -607,7 +613,7 @@ public class SnarkManager implements Snark.CompleteListener {
////_util.
}
if (!wasStopped)
addMessage("Torrent stopped: '" + sfile.getName() + "'.");
addMessage(_("Torrent stopped: \"{0}\"", sfile.getName()));
}
return torrent;
}
@ -622,7 +628,7 @@ public class SnarkManager implements Snark.CompleteListener {
torrentFile.delete();
if (torrent.storage != null)
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) {
File f = new File(snark.torrent);
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);
}
@ -683,7 +689,7 @@ public class SnarkManager implements Snark.CompleteListener {
// already known. noop
} else {
if (shouldAutoStart() && !_util.connect())
addMessage("Unable to connect to I2P!");
addMessage(_("Unable to connect to I2P!"));
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
*/

View File

@ -215,7 +215,7 @@ public class I2PSnarkServlet extends HttpServlet {
String action = req.getParameter("action");
if (action == null) {
// noop
} else if ("Add torrent".equals(action)) {
} else if (_("Add torrent").equals(action)) {
String newFile = req.getParameter("newFile");
String newURL = req.getParameter("newURL");
// NOTE - newFile currently disabled in HTML form - see below
@ -259,7 +259,7 @@ public class I2PSnarkServlet extends HttpServlet {
} else {
// no file or URL specified
}
} else if ("Stop".equals(action)) {
} else if (_("Stop").equals(action)) {
String torrent = req.getParameter("torrent");
if (torrent != null) {
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");
if (torrent != null) {
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");
boolean autoStart = req.getParameter("autoStart") != null;
String seedPct = req.getParameter("seedPct");
@ -370,7 +370,7 @@ public class I2PSnarkServlet extends HttpServlet {
boolean useOpenTrackers = req.getParameter("useOpenTrackers") != null;
String openTrackers = req.getParameter("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");
if (baseData != null && baseData.trim().length() > 0) {
File baseFile = new File(_manager.getDataDir(), baseData);
@ -395,12 +395,12 @@ public class I2PSnarkServlet extends HttpServlet {
FileOutputStream out = new FileOutputStream(torrentFile);
out.write(info.getTorrentData());
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
_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) {
_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 {
_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("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">");
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(": <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)
//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("\" name=\"action\" ><br>\n");
out.write("<span class=\"snarkAddInfo\">");
out.write(_("Alternately, you can copy .torrent files to {0} .", _manager.getDataDir().getAbsolutePath()));
out.write("<br>\n");
out.write(_("Removing that .torrent file will cause the torrent to stop."));
out.write("<br></span>\n");
out.write("<tr><td>&nbsp;<td><span class=\"snarkAddInfo\">");
out.write(_("Alternately, you can copy .torrent files to the directory {0}.", _manager.getDataDir().getAbsolutePath()));
out.write("\n");
out.write(_("Removing a .torrent file will cause the torrent to stop."));
out.write("<br></span></table>\n");
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("<span class=\"snarkConfigTitle\">");
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(_("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
+ "\" title=\"");
out.write(_("File to seed (must be within the specified path)"));
out.write("\" ><br>\n");
out.write(_("File or directory to seed (must be within the specified path)"));
out.write("\" ><tr><td>\n");
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("</option>\n");
Map trackers = _manager.getTrackers();
@ -791,13 +791,13 @@ public class I2PSnarkServlet extends HttpServlet {
}
out.write("</select>\n");
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=\"");
out.write(_("Custom tracker URL"));
out.write(_("Specify custom tracker announce URL"));
out.write("\" > ");
out.write("<input type=\"submit\" value=\"");
out.write("<tr><td>&nbsp;<td><input type=\"submit\" value=\"");
out.write(_("Create torrent"));
out.write("\" name=\"action\" >\n");
out.write("\" name=\"action\" ></table>\n");
out.write("</form>\n</span></div>");
}
@ -862,9 +862,9 @@ public class I2PSnarkServlet extends HttpServlet {
out.write(_("Up bandwidth limit"));
out.write(": <td><input type=\"text\" name=\"upBW\" value=\""
+ _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(_("Configure"));
out.write(_("View or change router bandwidth"));
out.write("</a>)</i><br>\n");
out.write("<tr><td>");
@ -916,10 +916,12 @@ public class I2PSnarkServlet extends HttpServlet {
out.write("</form></div>");
}
/** translate */
private String _(String s) {
return _manager.util().getString(s);
}
/** translate */
private String _(String s, Object o) {
return _manager.util().getString(s, o);
}

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\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"
"Last-Translator: foo <foo@bar>\n"
"Language-Team: foo <foo@bar>\n"
@ -17,6 +17,188 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\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
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr ""
@ -104,19 +286,24 @@ msgstr ""
msgid "{0} connected peers"
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-format
msgid "Torrent file {0} does not exist"
msgstr ""
#: ../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
msgid "Torrent already running: {0}"
msgstr ""
#: ../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
msgid "Torrent already in the queue: {0}"
msgstr ""
@ -145,6 +332,16 @@ msgstr ""
msgid "Invalid URL - must start with http://"
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-format
msgid "Starting up torrent {0}"
@ -173,25 +370,35 @@ msgstr ""
msgid "Data dir deleted: {0}"
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
msgid "Error creating torrent - you must select a tracker"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
#, java-format
msgid "Torrent created for {0}"
msgid "Torrent created for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:401
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting {0}"
"please do so before starting \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
#, java-format
msgid "Error creating a torrent for {0}"
msgid "Error creating a torrent for \"{0}\""
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:406
@ -285,18 +492,10 @@ msgstr ""
msgid "Stop the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
msgid "Stop"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:621
msgid "Start the torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:623
msgid "Start"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr ""
@ -341,17 +540,13 @@ msgstr ""
msgid "From URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:748
msgid "Add torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
#, java-format
msgid "Alternately, you can copy .torrent files to {0} ."
msgstr ""
#: ../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 ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:769
@ -378,10 +573,6 @@ msgstr ""
msgid "Custom tracker URL"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
msgid "Create torrent"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816
msgid "Configuration"
msgstr ""
@ -448,21 +639,17 @@ msgstr ""
msgid "I2CP options"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "Save configuration"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:964
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:966
#, java-format
msgid "Torrent fetched from {0}"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:991
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:993
#, java-format
msgid "Torrent at {0} was not valid"
msgstr ""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:996
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998
#, java-format
msgid "Torrent was not retrieved from {0}"
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 */
public static String getLanguage(I2PAppContext ctx) {
String lang = ctx.getProperty(PROP_LANG);