diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java index 3eafb645e..4cea2ae81 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java +++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java @@ -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); + } } diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 2ad0107d6..655282922 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -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 */ diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 0cf576a18..b613a04cc 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -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("\n"); out.write("
"); out.write(_("Add Torrent")); - out.write("
\n"); + out.write("
\n
"); out.write(_("From URL")); - out.write(": \n"); + out.write(": \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:
\n"); - out.write("
 
\n"); - out.write(""); - out.write(_("Alternately, you can copy .torrent files to {0} .", _manager.getDataDir().getAbsolutePath())); - out.write("
\n"); - out.write(_("Removing that .torrent file will cause the torrent to stop.")); - out.write("
\n"); + out.write("
 "); + 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("
\n"); out.write("\n
"); } @@ -767,16 +767,16 @@ public class I2PSnarkServlet extends HttpServlet { out.write("\n"); out.write(""); out.write(_("Create Torrent")); - out.write("
\n"); + out.write("
\n
"); //out.write("From file:
\n"); out.write(_("Data to seed")); - out.write(": " + _manager.getDataDir().getAbsolutePath() + File.separatorChar + out.write(":
" + _manager.getDataDir().getAbsolutePath() + File.separatorChar + "
\n"); + out.write(_("File or directory to seed (must be within the specified path)")); + out.write("\" >
\n"); out.write(_("Tracker")); - out.write(": \n"); out.write(_("or")); - out.write("   "); - out.write(" \n"); + out.write("\" name=\"action\" >
\n"); out.write("\n"); } @@ -862,9 +862,9 @@ public class I2PSnarkServlet extends HttpServlet { out.write(_("Up bandwidth limit")); out.write(": KBps ("); - out.write(_("Half available bandwidth< recommended.")); + out.write(_("Half available bandwidth recommended.")); out.write(" "); - out.write(_("Configure")); + out.write(_("View or change router bandwidth")); out.write(")
\n"); out.write(""); @@ -916,10 +916,12 @@ public class I2PSnarkServlet extends HttpServlet { out.write(""); } + /** translate */ private String _(String s) { return _manager.util().getString(s); } + /** translate */ private String _(String s, Object o) { return _manager.util().getString(s, o); } diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po index f501c93f1..e238b3cf6 100644 --- a/apps/i2psnark/locale/messages_de.po +++ b/apps/i2psnark/locale/messages_de.po @@ -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 \n" "Language-Team: foo \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 "" diff --git a/core/java/src/net/i2p/util/Translate.java b/core/java/src/net/i2p/util/Translate.java index 47f555077..75803968a 100644 --- a/core/java/src/net/i2p/util/Translate.java +++ b/core/java/src/net/i2p/util/Translate.java @@ -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);