[freenet-cvs] r13187 - in trunk/freenet/src/freenet: clients/http clients/http/bookmark config l10n node node/fcp node/updater oldplugins/plugin pluginmanager support

toad at freenetproject.org toad at freenetproject.org
Thu May 10 00:09:05 UTC 2007


Author: toad
Date: 2007-05-10 00:09:05 +0000 (Thu, 10 May 2007)
New Revision: 13187

Modified:
   trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
   trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
   trunk/freenet/src/freenet/clients/http/SymlinkerToadlet.java
   trunk/freenet/src/freenet/clients/http/bookmark/BookmarkManager.java
   trunk/freenet/src/freenet/config/BooleanOption.java
   trunk/freenet/src/freenet/config/IntOption.java
   trunk/freenet/src/freenet/config/LongOption.java
   trunk/freenet/src/freenet/config/ShortOption.java
   trunk/freenet/src/freenet/config/StringArrOption.java
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/node/ConfigurablePersister.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeClientCore.java
   trunk/freenet/src/freenet/node/NodeIPDetector.java
   trunk/freenet/src/freenet/node/NodeStats.java
   trunk/freenet/src/freenet/node/TestnetHandler.java
   trunk/freenet/src/freenet/node/fcp/FCPServer.java
   trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java
   trunk/freenet/src/freenet/oldplugins/plugin/PluginManager.java
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
   trunk/freenet/src/freenet/support/LoggerHook.java
Log:
L10n keys for most InvalidConfigValueException's, including those for all non-advanced options, and a few advanced options too (which non-dev users are likely to use, although we don't want to present them to newbies)

Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -619,7 +619,7 @@
 		}catch (BindException e){
 			Logger.error(core,"Failed to start FProxy port already bound: isn't Freenet already running ?");
 			System.err.println("Failed to start FProxy port already bound: isn't Freenet already running ?");
-			throw new InvalidConfigValueException("Can't bind fproxy on that port!");
+			throw new InvalidConfigValueException(l10n("cantBindPort"));
 		}catch (IOException ioe) {
 			Logger.error(core,"Failed to start FProxy: "+ioe, ioe);
 		}

Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -27,6 +27,7 @@
 import freenet.config.SubConfig;
 import freenet.io.AllowedHosts;
 import freenet.io.NetworkInterface;
+import freenet.l10n.L10n;
 import freenet.node.NodeClientCore;
 import freenet.support.Logger;
 import freenet.support.OOMHandler;
@@ -72,7 +73,7 @@
 		
 		public void set(int newPort) throws InvalidConfigValueException {
 			if(port != newPort)
-				throw new InvalidConfigValueException("Cannot change FProxy port number on the fly");
+				throw new InvalidConfigValueException(L10n.getString("cannotChangePortOnTheFly"));
 			// FIXME
 		}
 	}
@@ -89,7 +90,10 @@
 					networkInterface.setBindTo(bindTo);
 					SimpleToadletServer.this.bindTo = bindTo;
 				} catch (IOException e) {
-					throw new InvalidConfigValueException("could not change bind to! " + e.getMessage()); 
+					// This is an advanced option for reasons of reducing clutter,
+					// but it is expected to be used by regular users, not devs.
+					// So we translate the error messages.
+					throw new InvalidConfigValueException(l10n("couldNotChangeBindTo", "error", e.getLocalizedMessage())); 
 				}
 			}
 		}
@@ -117,7 +121,7 @@
 		
 		public void set(String CSSName) throws InvalidConfigValueException {
 			if((CSSName.indexOf(':') != -1) || (CSSName.indexOf('/') != -1))
-				throw new InvalidConfigValueException("CSS name must not contain slashes or colons!");
+				throw new InvalidConfigValueException(l10n("illegalCSSName"));
 			cssName = CSSName;
 			pageMaker.setTheme(cssName);
 		}
@@ -143,9 +147,9 @@
 			else {
 				File tmp = new File(val.trim());
 				if(!core.allowUploadFrom(tmp))
-					throw new InvalidConfigValueException("We can't let you set that setting: \"" + tmp + "\" isn't in a directory from which uploads are allowed!");				
+					throw new InvalidConfigValueException(l10n("cssOverrideNotInUploads", "filename", tmp.toString()));
 				else if(!tmp.canRead() || !tmp.isFile())
-					throw new InvalidConfigValueException("We can't read the given file! (" + val + ')');
+					throw new InvalidConfigValueException(l10n("cssOverrideCantRead", "filename", tmp.toString()));
 				cssOverride = tmp.getAbsoluteFile();
 			}
 			pageMaker.setOverride(cssOverride);
@@ -454,4 +458,13 @@
 	public boolean isAllowedFullAccess(InetAddress remoteAddr) {
 		return this.allowedFullAccess.allowed(remoteAddr);
 	}
+	
+	private static String l10n(String key, String pattern, String value) {
+		return L10n.getString("SimpleToadletServer."+key, pattern, value);
+	}
+
+	private static String l10n(String key) {
+		return L10n.getString("SimpleToadletServer."+key);
+	}
+
 }

Modified: trunk/freenet/src/freenet/clients/http/SymlinkerToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SymlinkerToadlet.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/clients/http/SymlinkerToadlet.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -33,7 +33,7 @@
 			public void set(String[] val) throws InvalidConfigValueException {
 				//if(storeDir.equals(new File(val))) return;
 				// FIXME
-				throw new InvalidConfigValueException("Cannot set the plugins that's loaded.");
+				throw new InvalidConfigValueException(L10n.getString("PluginManager.cannotSetOnceLoaded"));
 			}
 		});
 		

Modified: trunk/freenet/src/freenet/clients/http/bookmark/BookmarkManager.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/bookmark/BookmarkManager.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/clients/http/bookmark/BookmarkManager.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -13,6 +13,7 @@
 import freenet.config.SubConfig;
 import freenet.keys.FreenetURI;
 import freenet.keys.USK;
+import freenet.l10n.L10n;
 import freenet.node.NodeClientCore;
 import freenet.support.api.StringArrCallback;
 
@@ -138,8 +139,7 @@
 								matcher.group(2), node.alerts), false);
 
 					} else
-						throw new InvalidConfigValueException(
-								"Malformed Bookmark");
+						throw new InvalidConfigValueException(l10n("malformedBookmark"));
 
 				} catch (MalformedURLException mue) {
 					throw new InvalidConfigValueException(mue.getMessage());
@@ -194,6 +194,10 @@
 		return true;
 	}
 
+	public String l10n(String key) {
+		return L10n.getString("BookmarkManager."+key);
+	}
+
 	public BookmarkCallback makeCB() {
 		return new BookmarkCallback();
 	}

Modified: trunk/freenet/src/freenet/config/BooleanOption.java
===================================================================
--- trunk/freenet/src/freenet/config/BooleanOption.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/config/BooleanOption.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -3,6 +3,7 @@
  * http://www.gnu.org/ for further details of the GPL. */
 package freenet.config;
 
+import freenet.l10n.L10n;
 import freenet.support.api.BooleanCallback;
 
 public class BooleanOption extends Option {
@@ -33,7 +34,7 @@
 		} else if(val.equalsIgnoreCase("false") || val.equalsIgnoreCase("no")) {
 			set(false);
 		} else
-			throw new OptionFormatException("Unrecognized boolean: "+val);
+			throw new OptionFormatException(L10n.getString("BooleanOption.parseError", "val", val));
 	}
 	
 	public void set(boolean b) throws InvalidConfigValueException {
@@ -51,7 +52,7 @@
 		} else if(val.equalsIgnoreCase("false") || val.equalsIgnoreCase("no")) {
 			currentValue = false;
 		} else
-			throw new OptionFormatException("Unrecognized boolean: "+val);
+			throw new OptionFormatException(L10n.getString("BooleanOption.parseError", "val", val));
 	}
 
 	public boolean isDefault() {

Modified: trunk/freenet/src/freenet/config/IntOption.java
===================================================================
--- trunk/freenet/src/freenet/config/IntOption.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/config/IntOption.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -3,6 +3,7 @@
  * http://www.gnu.org/ for further details of the GPL. */
 package freenet.config;
 
+import freenet.l10n.L10n;
 import freenet.support.Fields;
 import freenet.support.api.IntCallback;
 
@@ -51,7 +52,7 @@
 		try{
 			x = Fields.parseInt(val);
 		} catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("parseError", "val", val));
 		}
 		cb.set(x);
 		cachedStringValue = val;
@@ -63,12 +64,16 @@
 		try{
 			x = Fields.parseInt(val);
 		} catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("parseError", "val", val));
 		}
 		cachedStringValue = val;
 		currentValue = x;
 	}
 
+	private String l10n(String key, String pattern, String value) {
+		return L10n.getString("IntOption."+key, pattern, value);
+	}
+
 	public String getValueString() {
 		int val = getValue();
 		if(cachedStringValue != null) return cachedStringValue;

Modified: trunk/freenet/src/freenet/config/LongOption.java
===================================================================
--- trunk/freenet/src/freenet/config/LongOption.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/config/LongOption.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -3,6 +3,7 @@
  * http://www.gnu.org/ for further details of the GPL. */
 package freenet.config;
 
+import freenet.l10n.L10n;
 import freenet.support.Fields;
 import freenet.support.api.LongCallback;
 
@@ -51,7 +52,7 @@
 		try{
 			x = Fields.parseLong(val);
 		}catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("parseError", "val", val));
 		}
 		cb.set(x);
 		cachedStringValue = val;
@@ -71,12 +72,16 @@
 		try{
 			x = Fields.parseLong(val);
 		}catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("parseError", "val", val));
 		}
 		cachedStringValue = val;
 		currentValue = x;
 	}
 
+	private String l10n(String key, String pattern, String value) {
+		return L10n.getString("LongOption."+key, pattern, value);
+	}
+
 	public boolean isDefault() {
 		getValue();
 		return currentValue == defaultValue;

Modified: trunk/freenet/src/freenet/config/ShortOption.java
===================================================================
--- trunk/freenet/src/freenet/config/ShortOption.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/config/ShortOption.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -1,5 +1,6 @@
 package freenet.config;
 
+import freenet.l10n.L10n;
 import freenet.support.Fields;
 import freenet.support.api.ShortCallback;
 
@@ -30,7 +31,7 @@
 		try{
 			x= Fields.parseShort(val);
 		} catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("unrecognisedShort", "val", val));
 		}
 		cb.set(x);
 		currentValue = x;
@@ -45,11 +46,15 @@
 		try{
 			x = Fields.parseShort(val);
 		} catch (NumberFormatException e) {
-			throw new InvalidConfigValueException("The value specified can't be parsed : "+val);
+			throw new InvalidConfigValueException(l10n("unrecognisedShort", "val", val));
 		}
 		currentValue = x;
 	}
 
+	private String l10n(String key, String pattern, String value) {
+		return L10n.getString("ShortOption."+key, pattern, value);
+	}
+
 	public boolean isDefault() {
 		getValue();
 		return currentValue == defaultValue;

Modified: trunk/freenet/src/freenet/config/StringArrOption.java
===================================================================
--- trunk/freenet/src/freenet/config/StringArrOption.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/config/StringArrOption.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -2,6 +2,7 @@
 
 import java.util.Arrays;
 
+import freenet.l10n.L10n;
 import freenet.support.URLDecoder;
 import freenet.support.URLEncodedFormatException;
 import freenet.support.URLEncoder;
@@ -41,7 +42,7 @@
 		try {
 			setValue(stringToArray(val));
 		} catch (URLEncodedFormatException e) {
-			throw new InvalidConfigValueException("Cannot parse value: "+e);
+			throw new InvalidConfigValueException(l10n("parseError", "error", e.getLocalizedMessage()));
 		}
 	}
 	
@@ -69,10 +70,14 @@
 		try {
 			this.currentValue = stringToArray(val);
 		} catch (URLEncodedFormatException e) {
-			throw new InvalidConfigValueException("Cannot parse value: "+e);
+			throw new InvalidConfigValueException(l10n("parseError", "error", e.getLocalizedMessage()));
 		}
 	}
 	
+	private String l10n(String key, String pattern, String value) {
+		return L10n.getString("StringArrOption."+key, pattern, value);
+	}
+
 	public static String arrayToString(String[] arr) {
 		if (arr == null)
 			return null;

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties	2007-05-10 00:09:05 UTC (rev 13187)
@@ -136,6 +136,7 @@
 BookmarkItem.bookmarkUpdatedWithLink=The bookmarked site ${link}${name}${/link} has been updated to edition ${edition}.
 BookmarkItem.deleteBookmarkUpdateNotification=Delete notification
 BookmarkItem.unnamedBookmark=Unnamed Bookmark
+BookmarkManager.malformedBookmark=Malformed Bookmark
 ConfigToadlet.appliedTitle=Configuration Applied
 ConfigToadlet.appliedSuccess=Configuration changes were applied successfully.
 ConfigToadlet.appliedFailureTitle=Configuration Not Applied
@@ -279,6 +280,7 @@
 FProxyToadlet.stats=view statistics
 FProxyToadlet.translationTitle=Translation
 FProxyToadlet.translation=helper to translate the node's interface into your native language
+FProxyToadlet.cantBindPort=Can't bind fproxy on that port!
 LocalFileInsertToadlet.dirAccessDenied=You cannot browse this directory
 LocalFileInsertToadlet.listingTitle=Listing of ${path}
 LocalFileInsertToadlet.listing=Directory Listing: ${path}
@@ -561,10 +563,19 @@
 FcpServer.assumeDownloadDDAIsAllowedLong=Assume that download DDA is allowed ? if false, you have to issue a TestDDARequest before making any DDA access.
 FcpServer.assumeUploadDDAIsAllowed=Assume that upload DDA is allowed ?
 FcpServer.assumeUploadDDAIsAllowedLong=Assume that upload DDA is allowed ? if false, you have to issue a TestDDARequest before making any DDA access.
+FcpServer.downloadsFileIsDirectory=Invalid filename for downloads list: is a directory
+FcpServer.downloadsFileUnreadable=File exists but cannot be read
+FcpServer.downloadsFileParentDoesNotExist=Parent directory does not exist
+FcpServer.downloadsFileExistsCannotReadOrWrite=File exists but cannot read and write it
+FcpServer.downloadsFileDoesNotExistCannotCreate=File does not exist and cannot create it
+FcpServer.downloadsFileCanCreateCannotReadOrWrite=Created file but cannot read and write it
+FcpServer.cannotStartOrStopOnTheFly=Cannot start or stop the FCP server on the fly
+FcpServer.couldNotChangeBindTo=Could not change FCP bind address: ${error}.
 TestnetHandler.enable=Enable testnet mode? (DANGEROUS)
 TestnetHandler.enableLong=Whether to enable testnet mode (DANGEROUS!). Testnet mode eliminates your anonymity in exchange for greatly assisting the developers in debugging the node.
 TestnetHandler.port=Testnet port
 TestnetHandler.portLong=Testnet port number (-1 = listenPort+1000)
+TestnetHandler.cannotEnableDisableOnTheFly=On-line enable/disable of testnet mode impossible; restart the node and get new connections
 TextModeClientInterfaceServer.enabled=Enable TMCI
 TextModeClientInterfaceServer.enabledLong=Whether to enable the TMCI
 TextModeClientInterfaceServer.bindTo=IP address to bind to
@@ -628,8 +639,19 @@
 Node.buggyJVMTitle=Buggy JVM Warning
 Node.deadlockTitle=Deadlocking likely due to buggy JVM/kernel combination
 Node.deadlockWarning=WARNING: Your system appears to be running a Sun JVM with NPTL. This has been known to cause the node to freeze up due to the JVM losing a lock. Please disable NPTL if possible by setting the environment variable LD_ASSUME_KERNEL=2.4.1. Recent versions of the Freenet installer should have this already; either reinstall, or edit run.sh (https://emu.freenetproject.org/svn/trunk/apps/installer/installclasspath/run.sh). On some systems you may need to install the pthreads libraries to make this work. Note that the node will try to automatically restart itself in the event of such a deadlock, but this is not be 100% reliable and will take time.
+Node.bwlimitMustBePositive=Bandwidth limit must be positive
+Node.bandwidthLimitMustBePositiveOrMinusOne=Bandwidth limit must be positive or -1
+Node.invalidStoreSize=Store size must be at least 32MB
+Node.mustBePositive=Config value must be positive
+Node.storeMaxMemTooHigh=Giving more than 80% of your ram to BDB is probably not what you want to do!
+Node.errorApplyingConfig=Error while applying the new config : ${error}
+NodeStats.valueTooLow=This value is too low for that setting, increase it!
+NodeStats.mustBePercentValueNotFull=This value must be a percentage between 0 and 99.
+NodeClientCore.couldNotFindOrCreateDir=Could not find or create directory
+NodeClientCore.movingTempDirOnTheFlyNotSupported=Moving temp directory on the fly not supported at present
 NodeIPDetector.maybeSymmetricTitle=Connection problems
 NodeIPDetector.maybeSymmetric=It looks like your node may be behind a symmetric NAT. You may have connection problems: If you are behind a symmetric NAT you will probably only be able to connect to peers which are open to the internet.
+NodeIPDetector.unknownHostErrorInIPOverride=Unknown host: ${error}
 NodeUpdateManager.enabled=Check for, and download new versions
 NodeUpdateManager.enabledLong=Should your node automatically check for new versions of Freenet. If yes, new versions will be automatically detected and downloaded, but not necessarily installed. This setting resets itself always back to false unless the node runs within the wrapper.
 NodeUpdateManager.installNewVersions=Automatically install new versions
@@ -643,6 +665,10 @@
 NodeUpdateManager.updateFailedTitle=Update Failed!
 NodeUpdateManager.updateFailed=Update Failed: ${reason}
 NodeUpdateManager.updateCatastropheTitle=Catastrophic Update Failure!
+NodeUpdateManager.noUpdateWithoutWrapper=Cannot update because not running under wrapper
+NodeUpdateManager.invalidUpdateURI=Invalid update URI: ${error}
+NodeUpdateManager.invalidRevocationURI=Invalid revocation URI: ${error}
+NodeUpdateManager.invalidExtURI=Invalid ext URI: ${error}
 UpdateDeployContext.updateCatastrophe=CATASTROPHIC ERROR: Deleted ${old} but cannot rename ${new} to ${old} therefore THE NODE WILL NOT START! Please resolve the problem by renaming ${new} to ${old} manually.
 UpdateDeployContext.updateFailedNonStandardConfig=Not able to update because of non-standard config: written main=${main} ext=${ext} - should not happen! Report this to the devs, include your wrapper.conf.
 UpdateDeployContext.updateFailedCannotDeleteOldConfig=Cannot delete ${old} so cannot rename over it. Update failed.
@@ -653,6 +679,7 @@
 PluginManager.loadedPluginsLong=A list of plugins that are started when the node starts
 PluginManager.loadedOnStartup=Plugins to load on startup
 PluginManager.loadedOnStartupLong=Classpath, name and location for plugins to load when node starts up
+PluginManager.cannotSetOnceLoaded=Cannot set the plugins list once loaded
 RequestStarterGroup.scheduler=Priority policy of the scheduler
 RequestStarterGroup.schedulerLong=Set the priority policy scheme used by the scheduler.
 SimpleToadletServer.enabled=Enable FProxy?
@@ -661,6 +688,7 @@
 SimpleToadletServer.bindToLong=IP address to bind to
 SimpleToadletServer.port=FProxy port number
 SimpleToadletServer.portLong=FProxy port number
+SimpleToadletServer.cannotChangePortOnTheFly=Cannot change FProxy port number on the fly
 SimpleToadletServer.cssName=CSS Name
 SimpleToadletServer.cssNameLong=Name of the CSS FProxy should use
 SimpleToadletServer.advancedMode=Enable Advanced Mode?
@@ -675,6 +703,10 @@
 SimpleToadletServer.allowedFullAccessLong=Hosts granted full access (i.e. change config settings, restart, etc) to the node. WARNING: Be very careful who you give full fproxy access to!
 SimpleToadletServer.cssOverride=Override the CSS with a custom one (WARNING!)
 SimpleToadletServer.cssOverrideLong=That setting allows you to override the node's CSS with a custom file. WARNING: CSSes can be dangerous and won't be filtered! use at your own risks. (consider mailing devl at freenetproject to get it included in the main distribution ;) )
+SimpleToadletServer.couldNotChangeBindTo=Could not change FProxy bind address: ${error}.
+SimpleToadletServer.illegalCSSName=CSS name must not contain slashes or colons!
+SimpleToadletServer.cssOverrideNotInUploads=We can't let you set that setting: "${filename} isn't in a directory from which uploads are allowed!
+SimpleToadletServer.cssOverrideCantRead=We cannot read the given CSS override file: ${filename}
 LogConfigHandler.enabled=Enable logging?
 LogConfigHandler.enabledLong=Set to false to completely disable logging
 LogConfigHandler.dirName=Logging directory
@@ -800,4 +832,12 @@
 UserAlertManager.alertsOnHomepage= | See them on ${link}the Freenet Homepage${/link}.
 PluginManager.pluginReqNewerJVMTitle=Later JVM required by plugin ${name}.
 PluginManager.pluginReqNewerJVM=The plugin ${name} seems to require a later JVM. Please install at least Sun java 1.5, or remove the plugin.
+LoggerHook.unrecognizedPriority=Unrecognised priority name: ${name}.
+BooleanOption.parseError=Unrecognized boolean: ${val} - try true or false
+IntOption.parseError=The value specified can't be parsed as a 32-bit integer : ${val}
+LongOption.parseError=The value specified can't be parsed as a 64-bit integer : ${val}
+ShortOption.parseError=The value specified can't be parsed as a 16-bit integer : ${val}
+ShortOption.parseError=Cannot parse value as a string array: ${error}
+ConfigurablePersister.existsCannotReadWrite=File exists and cannot read/write it
+ConfigurablePersister.doesNotExistCannotCreate=File does not exist and cannot be created
 End
\ No newline at end of file

Modified: trunk/freenet/src/freenet/node/ConfigurablePersister.java
===================================================================
--- trunk/freenet/src/freenet/node/ConfigurablePersister.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/ConfigurablePersister.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -5,6 +5,7 @@
 
 import freenet.config.InvalidConfigValueException;
 import freenet.config.SubConfig;
+import freenet.l10n.L10n;
 import freenet.node.Node.NodeInitException;
 import freenet.support.api.StringCallback;
 
@@ -39,26 +40,26 @@
 		while(true) {
 			if(f.exists()) {
 				if(!(f.canRead() && f.canWrite()))
-					throw new InvalidConfigValueException("File exists and cannot read/write it");
+					throw new InvalidConfigValueException(l10n("existsCannotReadWrite"));
 				break;
 			} else {
 				try {
 					f.createNewFile();
 				} catch (IOException e) {
-					throw new InvalidConfigValueException("File does not exist and cannot be created");
+					throw new InvalidConfigValueException(l10n("doesNotExistCannotCreate"));
 				}
 			}
 		}
 		while(true) {
 			if(tmp.exists()) {
 				if(!(tmp.canRead() && tmp.canWrite()))
-					throw new InvalidConfigValueException("File exists and cannot read/write it");
+					throw new InvalidConfigValueException(l10n("existsCannotReadWrite"));
 				break;
 			} else {
 				try {
 					tmp.createNewFile();
 				} catch (IOException e) {
-					throw new InvalidConfigValueException("File does not exist and cannot be created");
+					throw new InvalidConfigValueException(l10n("doesNotExistCannotCreate"));
 				}
 			}
 		}
@@ -69,4 +70,8 @@
 		}
 	}
 
+	private String l10n(String key) {
+		return L10n.getString("ConfigurablePersister."+key);
+	}
+
 }

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/Node.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -136,6 +136,7 @@
 		
 		public void set(String val) throws InvalidConfigValueException {
 			if(val.equals(get())) return;
+			// FIXME why not? Can't we use freenet.io.NetworkInterface like everywhere else, just adapt it for UDP?
 			throw new InvalidConfigValueException("Cannot be updated on the fly");
 		}
 	}
@@ -179,7 +180,7 @@
 			try {
 				L10n.setLanguage(val);
 			} catch (MissingResourceException e) {
-				throw new InvalidConfigValueException(e.getMessage());
+				throw new InvalidConfigValueException(e.getLocalizedMessage());
 			}
 		}
 		
@@ -876,7 +877,7 @@
 						return outputBandwidthLimit;
 					}
 					public void set(int obwLimit) throws InvalidConfigValueException {
-						if(obwLimit <= 0) throw new InvalidConfigValueException("Bandwidth limit must be positive");
+						if(obwLimit <= 0) throw new InvalidConfigValueException(l10n("bwlimitMustBePositive"));
 						synchronized(Node.this) {
 							outputBandwidthLimit = obwLimit;
 						}
@@ -903,7 +904,7 @@
 								inputLimitDefault = true;
 								ibwLimit = outputBandwidthLimit * 4;
 							} else {
-								if(ibwLimit <= 1) throw new InvalidConfigValueException("Bandwidth limit must be positive or -1");
+								if(ibwLimit <= 1) throw new InvalidConfigValueException(l10n("bandwidthLimitMustBePositiveOrMinusOne"));
 								inputLimitDefault = false;
 							}
 						}
@@ -983,7 +984,8 @@
 					}
 					public void set(String val) throws InvalidConfigValueException {
 						if(nodeDir.equals(new File(val))) return;
-						// FIXME
+						// FIXME support it
+						// Don't translate the below as very few users will use it.
 						throw new InvalidConfigValueException("Moving node directory on the fly not supported at present");
 					}
 		});
@@ -1030,7 +1032,7 @@
 					public void set(String val) throws InvalidConfigValueException {
 						if(extraPeerDataDir.equals(new File(val))) return;
 						// FIXME
-						throw new InvalidConfigValueException("Moving node directory on the fly not supported at present");
+						throw new InvalidConfigValueException("Moving extra peer data directory on the fly not supported at present");
 					}
 		});
 		extraPeerDataDir = new File(nodeConfig.getString("extraPeerDataDir"));
@@ -1072,7 +1074,7 @@
 
 					public void set(long storeSize) throws InvalidConfigValueException {
 						if((storeSize < 0) || (storeSize < (32 * 1024 * 1024)))
-							throw new InvalidConfigValueException("Invalid store size");
+							throw new InvalidConfigValueException(l10n("invalidStoreSize"));
 						long newMaxStoreKeys = storeSize / sizePerKey;
 						if(newMaxStoreKeys == maxTotalKeys) return;
 						// Update each datastore
@@ -1216,14 +1218,14 @@
 
 			public void set(long val) throws InvalidConfigValueException {
 				if(val < 0)
-					throw new InvalidConfigValueException("Negative or zero values not supported");
+					throw new InvalidConfigValueException(l10n("mustBePositive"));
 				else if(val > (80 * Runtime.getRuntime().maxMemory() / 100))
-					throw new InvalidConfigValueException("Giving more than 80% of your ram to BDB is probably not what you want to do!");
+					throw new InvalidConfigValueException(l10n("storeMaxMemTooHigh"));
 				envMutableConfig.setCacheSize(val);
 				try{
 					storeEnvironment.setMutableConfig(envMutableConfig);
 				} catch (DatabaseException e) {
-					throw new InvalidConfigValueException("Error while applying the new config : "+e.getMessage());
+					throw new InvalidConfigValueException(l10n("errorApplyingConfig", "error", e.getLocalizedMessage()));
 				}
 				databaseMaxMemory = val;
 			}

Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -38,6 +38,7 @@
 import freenet.keys.NodeCHK;
 import freenet.keys.SSKBlock;
 import freenet.keys.SSKVerifyException;
+import freenet.l10n.L10n;
 import freenet.node.Node.NodeInitException;
 import freenet.node.fcp.FCPServer;
 import freenet.node.useralerts.UserAlertManager;
@@ -146,7 +147,7 @@
 					public void set(String val) throws InvalidConfigValueException {
 						if(tempDir.equals(new File(val))) return;
 						// FIXME
-						throw new InvalidConfigValueException("Moving temp directory on the fly not supported at present");
+						throw new InvalidConfigValueException(l10n("movingTempDirOnTheFlyNotSupported"));
 					}
 		});
 		
@@ -199,7 +200,8 @@
 					return;
 				File f = new File(val);
 				if(!((f.exists() && f.isDirectory()) || (f.mkdir()))) {
-					throw new InvalidConfigValueException("Could not find or create directory");
+					// Relatively commonly used, despite being advanced (i.e. not something we want to show to newbies). So translate it.
+					throw new InvalidConfigValueException(l10n("couldNotFindOrCreateDir"));
 				}
 				downloadDir = new File(val);
 			}
@@ -342,6 +344,10 @@
 		
 	}
 
+	private static String l10n(String key) {
+		return L10n.getString("NodeClientCore."+key);
+	}
+
 	protected synchronized void setDownloadAllowedDirs(String[] val) {
 		int x = 0;
 		downloadAllowedEverywhere = false;

Modified: trunk/freenet/src/freenet/node/NodeIPDetector.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeIPDetector.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/NodeIPDetector.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -243,6 +243,10 @@
 		return L10n.getString("NodeIPDetector."+key);
 	}
 
+	private String l10n(String key, String pattern, String value) {
+		return L10n.getString("NodeIPDetector."+key, pattern, value);
+	}
+
 	Peer[] getPrimaryIPAddress() {
 		if(lastIPAddress == null) return detectPrimaryIPAddress();
 		return lastIPAddress;
@@ -325,7 +329,7 @@
 				try {
 					addr = new FreenetInetAddress(val, false);
 				} catch (UnknownHostException e) {
-					throw new InvalidConfigValueException("Unknown host: "+e.getMessage());
+					throw new InvalidConfigValueException(l10n("unknownHostErrorInIPOverride", "error", e.getMessage()));
 				}
 				overrideIPAddress = addr;
 				lastIPAddress = null;

Modified: trunk/freenet/src/freenet/node/NodeStats.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStats.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/NodeStats.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -10,6 +10,7 @@
 import freenet.crypt.RandomSource;
 import freenet.io.comm.DMT;
 import freenet.io.comm.IOStatisticCollector;
+import freenet.l10n.L10n;
 import freenet.node.Node.NodeInitException;
 import freenet.support.HTMLNode;
 import freenet.support.Logger;
@@ -190,7 +191,7 @@
 					public void set(int val) throws InvalidConfigValueException {
 						if(val == get()) return;
 						if(val < 100)
-							throw new InvalidConfigValueException("This value is too low for that setting, increase it!");
+							throw new InvalidConfigValueException(l10n("valueTooLow"));
 						threadLimit = val;
 					}
 		});
@@ -237,7 +238,7 @@
 					public void set(long val) throws InvalidConfigValueException {
 						if(val == get()) return;
 						if(val < 0)
-							throw new InvalidConfigValueException("This value is too low for that setting, increase it!");
+							throw new InvalidConfigValueException(l10n("valueTooLow"));
 						freeHeapBytesThreshold = val;
 					}
 		});
@@ -250,10 +251,8 @@
 					}
 					public void set(int val) throws InvalidConfigValueException {
 						if(val == get()) return;
-						if(val < 0)
-							throw new InvalidConfigValueException("This value is too low for that setting, increase it!");
-						if(val > 100)
-							throw new InvalidConfigValueException("This value is too high for that setting, increase it!");
+						if(val < 0 || val >= 100)
+							throw new InvalidConfigValueException(l10n("mustBePercentValueNotFull"));
 						freeHeapPercentThreshold = val;
 					}
 		});
@@ -303,6 +302,10 @@
 			new TokenBucket(Math.max(ibwLimit*60, 32768*20), (int)((1000L*1000L*1000L) / (ibwLimit * FRACTION_OF_BANDWIDTH_USED_BY_REQUESTS)), 0);
 	}
 	
+	protected String l10n(String key) {
+		return L10n.getString("NodeStats."+key);
+	}
+
 	public void start() throws NodeInitException {
 		nodePinger.start();
 		persister.start();

Modified: trunk/freenet/src/freenet/node/TestnetHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/TestnetHandler.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/TestnetHandler.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -21,6 +21,7 @@
 import freenet.config.Config;
 import freenet.config.InvalidConfigValueException;
 import freenet.config.SubConfig;
+import freenet.l10n.L10n;
 import freenet.node.Node.NodeInitException;
 import freenet.support.FileLoggerHook;
 import freenet.support.Logger;
@@ -220,8 +221,7 @@
 
 		public void set(boolean val) throws InvalidConfigValueException {
 			if(node.testnetEnabled == val) return;
-			String msg = "On-line enable/disable of testnet mode impossible; restart the node and get new connections";
-			throw new InvalidConfigValueException(msg);
+			throw new InvalidConfigValueException(L10n.getString("TestnetHandler.cannotEnableDisableOnTheFly"));
 		}
 		
 	}

Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -34,6 +34,7 @@
 import freenet.io.AllowedHosts;
 import freenet.io.NetworkInterface;
 import freenet.keys.FreenetURI;
+import freenet.l10n.L10n;
 import freenet.node.Node;
 import freenet.node.NodeClientCore;
 import freenet.node.RequestStarter;
@@ -206,7 +207,7 @@
 //TODO: Allow it
 		public void set(boolean val) throws InvalidConfigValueException {
 			if(val != get()) {
-				throw new InvalidConfigValueException("Cannot change the status of the FCP server on the fly");
+				throw new InvalidConfigValueException(l10n("cannotStartOrStopOnTheFly"));
 			}
 		}
 	}
@@ -232,7 +233,10 @@
 					node.getFCPServer().networkInterface.setBindTo(val);
 					node.getFCPServer().bindTo = val;
 				} catch (IOException e) {
-					throw new InvalidConfigValueException("could not change bind to!");
+					// This is an advanced option for reasons of reducing clutter,
+					// but it is expected to be used by regular users, not devs.
+					// So we translate the error messages.
+					throw new InvalidConfigValueException(l10n("couldNotChangeBindTo", "error", e.getLocalizedMessage()));
 				}
 			}
 		}
@@ -408,22 +412,45 @@
 
 	private void checkFile(File f) throws InvalidConfigValueException {
 		if(f.isDirectory()) 
-			throw new InvalidConfigValueException("Invalid filename for downloads list: is a directory");
+			throw new InvalidConfigValueException(l10n("downloadsFileIsDirectory"));
 		if(f.isFile() && !(f.canRead() && f.canWrite()))
-			throw new InvalidConfigValueException("File exists but cannot be read");
+			throw new InvalidConfigValueException(l10n("downloadsFileUnreadable"));
 		File parent = f.getParentFile();
 		if((parent != null) && !parent.exists())
-			throw new InvalidConfigValueException("Parent directory does not exist");
+			throw new InvalidConfigValueException(l10n("downloadsFileParentDoesNotExist"));
 		if(!f.exists()) {
 			try {
-				if(!((f.createNewFile() || f.exists()) && (f.canRead() && f.canWrite())))
-					throw new InvalidConfigValueException("File does not exist, cannot create it and/or cannot read/write it");
+				if(!f.createNewFile()) {
+					if(f.exists()) {
+						if(!(f.canRead() && f.canWrite())) {
+							throw new InvalidConfigValueException(l10n("downloadsFileExistsCannotReadOrWrite"));
+						} // else ok
+					} else {
+						throw new InvalidConfigValueException(l10n("downloadsFileDoesNotExistCannotCreate"));
+					}
+				} else {
+					if(!(f.canRead() && f.canWrite())) {
+						throw new InvalidConfigValueException(l10n("downloadsFileCanCreateCannotReadOrWrite"));
+					}
+				}
 			} catch (IOException e) {
-				throw new InvalidConfigValueException("File does not exist and cannot be created");
+				throw new InvalidConfigValueException(l10n("downloadsFileDoesNotExistCannotCreate")+ " : "+e.getLocalizedMessage());
 			}
 		}
 	}
 
+	private static String l10n(String key) {
+		return L10n.getString("FcpServer."+key);
+	}
+	
+	private static String l10n(String key, String pattern, String value) {
+		return L10n.getString("FcpServer."+key, pattern, value);
+	}
+
+	private static String l10n(String key, String[] patterns, String[] values) {
+		return L10n.getString("FcpServer."+key, patterns, values);
+	}
+
 	public void setPersistentDownloadsEnabled(boolean set) {
 		synchronized(persistenceSync) {
 			if(enablePersistentDownloads == set) return;

Modified: trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -106,7 +106,7 @@
         try {
 			updateURI = new FreenetURI(updaterConfig.getString("URI"));
 		} catch (MalformedURLException e) {
-			throw new InvalidConfigValueException("Invalid updateURI: "+e);
+			throw new InvalidConfigValueException(l10n("invalidUpdateURI", "error", e.getLocalizedMessage()));
 		}
 
 		if(updateURI.lastMetaString() != null && updateURI.lastMetaString().length() == 0) {
@@ -127,7 +127,7 @@
         try {
 			revocationURI = new FreenetURI(updaterConfig.getString("revocationURI"));
 		} catch (MalformedURLException e) {
-			throw new InvalidConfigValueException("Invalid revocationURI: "+e);
+			throw new InvalidConfigValueException(l10n("invalidRevocationURI", "error", e.getLocalizedMessage()));
 		}
 
 		if(revocationURI.lastMetaString() != null && revocationURI.lastMetaString().length() == 0) {
@@ -144,7 +144,7 @@
         try {
 			extURI = new FreenetURI(updaterConfig.getString("extURI"));
 		} catch (MalformedURLException e) {
-			throw new InvalidConfigValueException("Invalid extURI: "+e);
+			throw new InvalidConfigValueException(l10n("invalidExtURI", "error", e.getLocalizedMessage()));
 		}
 
         updaterConfig.finishedInitialization();
@@ -197,7 +197,7 @@
 			} else {
 				if((!WrapperManager.isControlledByNativeWrapper()) || (NodeStarter.extBuildNumber == -1)) {
 					Logger.error(this, "Cannot update because not running under wrapper");
-					throw new InvalidConfigValueException("Cannot update because not running under wrapper");
+					throw new InvalidConfigValueException(l10n("noUpdateWithoutWrapper"));
 				}
 				// Start it
 				mainUpdater = new NodeUpdater(this, updateURI, false, Version.buildNumber());
@@ -732,7 +732,7 @@
 			try {
 				uri = new FreenetURI(val);
 			} catch (MalformedURLException e) {
-				throw new InvalidConfigValueException("Invalid key: "+val+" : "+e);
+				throw new InvalidConfigValueException(l10n(isExt ? "invalidExtURI" : "invalidUpdateURI", "error", e.getLocalizedMessage()));
 			}
 			setURI(isExt, uri);
 		}
@@ -750,7 +750,7 @@
 			try {
 				uri = new FreenetURI(val);
 			} catch (MalformedURLException e) {
-				throw new InvalidConfigValueException("Invalid key: "+val+" : "+e);
+				throw new InvalidConfigValueException(l10n("invalidRevocationURI", "error", e.getLocalizedMessage()));
 			}
 			setRevocationURI(uri);
 		}

Modified: trunk/freenet/src/freenet/oldplugins/plugin/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/oldplugins/plugin/PluginManager.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/oldplugins/plugin/PluginManager.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -11,6 +11,7 @@
 
 import freenet.config.InvalidConfigValueException;
 import freenet.config.SubConfig;
+import freenet.l10n.L10n;
 import freenet.node.Node;
 import freenet.node.NodeClientCore;
 import freenet.support.Logger;
@@ -81,7 +82,7 @@
 			 *             is not valid
 			 */
 			public void set(String[] val) throws InvalidConfigValueException {
-				throw new InvalidConfigValueException("Not supported");
+				throw new InvalidConfigValueException(L10n.getString("PluginManager.cannotSetOnceLoaded"));
 			};
 		});
 

Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -69,7 +69,7 @@
 					public void set(String[] val) throws InvalidConfigValueException {
 						//if(storeDir.equals(new File(val))) return;
 						// FIXME
-						throw new InvalidConfigValueException("Cannot set the plugins that's loaded.");
+						throw new InvalidConfigValueException(L10n.getString("PluginManager.cannotSetOnceLoaded"));
 					}
 		});
 		

Modified: trunk/freenet/src/freenet/support/LoggerHook.java
===================================================================
--- trunk/freenet/src/freenet/support/LoggerHook.java	2007-05-09 23:55:01 UTC (rev 13186)
+++ trunk/freenet/src/freenet/support/LoggerHook.java	2007-05-10 00:09:05 UTC (rev 13187)
@@ -3,6 +3,8 @@
 import java.util.StringTokenizer;
 import java.util.Vector;
 
+import freenet.l10n.L10n;
+
 public abstract class LoggerHook extends Logger {
 
 	protected int threshold;
@@ -166,7 +168,7 @@
 		else if (s.equalsIgnoreCase("debug"))
 			return Logger.DEBUG;
 		else
-			throw new InvalidThresholdException("Unrecognized priority: "+s);
+			throw new InvalidThresholdException(L10n.getString("LoggerHook.unrecognisedPriority", "name", s));
 		// return Logger.NORMAL;
 	}
 




More information about the cvs mailing list