Make sure user visible strings are translated
diff --git a/vncviewer/parameters.cxx b/vncviewer/parameters.cxx
index b7b33b5..9297a16 100644
--- a/vncviewer/parameters.cxx
+++ b/vncviewer/parameters.cxx
@@ -44,6 +44,8 @@
 #include <string.h>
 #include <limits.h>
 
+#include "i18n.h"
+
 using namespace rfb;
 
 static LogWriter vlog("Parameters");
@@ -195,8 +197,9 @@
       strncpy(dest+pos, "\\\\", 2);
       pos++;
       if (pos >= destSize) {
-	vlog.error("Encoding backslash: The size of the buffer dest is to small, "
-		   "it needs to be more than %d bytes bigger.", (destSize - 1 - i));
+	vlog.error(_("Encoding backslash: The size of the buffer dest "
+	             "is to small, it needs to be more than %d bytes bigger."),
+	             (destSize - 1 - i));
 	return false;
       }
 
@@ -208,8 +211,9 @@
 	  dest[pos] = '\\';
 	  pos++;
 	  if (pos >= destSize) {
-	    vlog.error("Encoding escape sequence: The size of the buffer dest is to small, "
-		       "it needs to be more than %d bytes bigger.", (destSize - 1 - i));
+	    vlog.error(_("Encoding escape sequence: The size of the buffer "
+	                 "dest is to small, it needs to be more than %d bytes "
+	                 "bigger."), (destSize - 1 - i));
 	    return false;
 	  }
 
@@ -226,8 +230,9 @@
 
     pos++;
     if (pos >= destSize) {
-      vlog.error("Encoding normal character: The size of the buffer dest is to small, "
-		 "it needs to be more than %d bytes bigger.", (destSize - 1 - i));
+      vlog.error(_("Encoding normal character: The size of the buffer dest "
+                   "is to small, it needs to be more than %d bytes bigger."),
+                   (destSize - 1 - i));
       return false;
     }
 
@@ -262,7 +267,7 @@
 	  dest[pos] = val[i];
 	  i++;
 	} else {
-	  vlog.error("Unknown escape sequence at character %d", i);
+	  vlog.error(_("Unknown escape sequence at character %d"), i);
 	  return false;
 	}
       }
@@ -274,8 +279,8 @@
     escapedCharacter = false; // Reset for next loop
     pos++;
     if (pos >= destSize) {
-      vlog.error("Decoding: The size of the buffer dest is to small, "
-		 "it needs to be 1 byte bigger.");
+      vlog.error(_("Decoding: The size of the buffer dest is to small, "
+                   "it needs to be 1 byte bigger."));
       return false;
     }
   }
@@ -293,29 +298,31 @@
   wchar_t name[buffersize];
   unsigned size = fl_utf8towc(_name, strlen(_name)+1, name, buffersize);
   if (size >= buffersize) {
-    vlog.error("Could not convert the parameter-name %s to wchar_t* when "
-	       "writing to the Registry, the buffersize is to small.", _name);
+    vlog.error(_("Could not convert the parameter-name %s to wchar_t* when "
+                 "writing to the Registry, the buffersize is to small."),
+                 _name);
     return;
   }
 
   char encodingBuffer[buffersize];
   if (!encodeValue(_value, encodingBuffer, buffersize)) {
-    vlog.error("Could not encode the parameter-value %s when "
-	       "writing to the Registry.", _value);
+    vlog.error(_("Could not encode the parameter-value %s when "
+                 "writing to the Registry."), _value);
     return;
   }
 
   wchar_t value[buffersize];
   size = fl_utf8towc(encodingBuffer, strlen(encodingBuffer)+1, value, buffersize);
   if (size >= buffersize) {
-    vlog.error("Could not convert the parameter-value %s to wchar_t* when "
-	       "writing to the Registry, the buffersize is to small.", _value);
+    vlog.error(_("Could not convert the parameter-value %s to wchar_t* when "
+                 "writing to the Registry, the buffersize is to small."),
+                 _value);
     return;
   }
 
   LONG res = RegSetValueExW(*hKey, name, 0, REG_SZ, (BYTE*)&value, (wcslen(value)+1)*2);
   if (res != ERROR_SUCCESS) {
-    vlog.error("Error(%d) writing %s(REG_SZ) to Registry.", res, _value);
+    vlog.error(_("Error(%d) writing %s(REG_SZ) to Registry."), res, _value);
     return;
   }
 }
@@ -329,14 +336,15 @@
 
   unsigned size = fl_utf8towc(_name, strlen(_name)+1, name, buffersize);
   if (size >= buffersize) {
-    vlog.error("Could not convert the parameter-name %s to wchar_t* when "
-	       "writing to the Registry, the buffersize is to small.", _name);
+    vlog.error(_("Could not convert the parameter-name %s to wchar_t* when "
+                 "writing to the Registry, the buffersize is to small."),
+                 _name);
     return;
   }
   
   LONG res = RegSetValueExW(*hKey, name, 0, REG_DWORD, (BYTE*)&value, sizeof(DWORD));
   if (res != ERROR_SUCCESS) {
-    vlog.error("Error(%d) writing %d(REG_DWORD) to Registry.", res, _value);
+    vlog.error(_("Error(%d) writing %d(REG_DWORD) to Registry."), res, _value);
     return;
   }
 }
@@ -350,8 +358,9 @@
 
   unsigned size = fl_utf8towc(_name, strlen(_name)+1, name, buffersize);
   if (size >= buffersize) {
-    vlog.error("Could not convert the parameter-name %s to wchar_t* when "
-	       "reading from the Registry, the buffersize is to small.", _name);
+    vlog.error(_("Could not convert the parameter-name %s to wchar_t* when "
+                 "reading from the Registry, the buffersize is to small."),
+                 _name);
     return false;
   }
 
@@ -360,7 +369,7 @@
     if (res == ERROR_FILE_NOT_FOUND) {
       // The value does not exist, defaults will be used.
     } else {
-      vlog.error("Error(%d) reading %s from Registry.", res, _name);
+      vlog.error(_("Error(%d) reading %s from Registry."), res, _name);
     }
     return false;
   }
@@ -368,9 +377,9 @@
   char utf8val[destSize];
   size = fl_utf8fromwc(utf8val, sizeof(utf8val), value, wcslen(value)+1);
   if (size >= sizeof(utf8val)) {
-    vlog.error("Could not convert the parameter-value for %s to utf8 char* "
-	       "when reading from the Registry, the buffer dest is to small.",
-	       _name);
+    vlog.error(_("Could not convert the parameter-value for %s to utf8 "
+                 "char* when reading from the Registry, the buffer dest is "
+                 "to small."), _name);
     return false;
   }
   const char *ret = utf8val;
@@ -391,8 +400,9 @@
 
   unsigned size = fl_utf8towc(_name, strlen(_name)+1, name, buffersize);
   if (size >= buffersize) {
-    vlog.error("Could not convert the parameter-name %s to wchar_t* when "
-	       "reading from the Registry, the buffersize is to small.", _name);
+    vlog.error(_("Could not convert the parameter-name %s to wchar_t* when "
+                 "reading from the Registry, the buffersize is to small."),
+                 _name);
     return false;
   }
 
@@ -401,7 +411,7 @@
     if (res == ERROR_FILE_NOT_FOUND) {
       // The value does not exist, defaults will be used.
     } else {
-      vlog.error("Error(%d) reading %s from Registry.", res, _name);
+      vlog.error(_("Error(%d) reading %s from Registry."), res, _name);
     }
     return false;
   }
@@ -418,7 +428,7 @@
   LONG res = RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\TigerVNC\\vncviewer", 0, NULL, 
 			     REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
   if (res != ERROR_SUCCESS) {
-    vlog.error("Error(%d) creating key: Software\\TigerVNC\\vncviewer", res);
+    vlog.error(_("Error(%d) creating key: Software\\TigerVNC\\vncviewer"), res);
     return;
   }
 
@@ -432,13 +442,14 @@
     } else if (dynamic_cast<BoolParameter*>(parameterArray[i]) != NULL) {
       setKeyInt(parameterArray[i]->getName(), (int)*(BoolParameter*)parameterArray[i], &hKey);
     } else {      
-      vlog.info("The parameterArray contains a object of a invalid type at line %d.", i);
+      vlog.info(_("The parameterArray contains a object of a invalid type "
+                  "at line %d."), i);
     }
   }
 
   res = RegCloseKey(hKey);
   if (res != ERROR_SUCCESS) {
-    vlog.error("Error(%d) closing key: Software\\TigerVNC\\vncviewer", res);
+    vlog.error(_("Error(%d) closing key: Software\\TigerVNC\\vncviewer"), res);
   }
 }
 
@@ -453,7 +464,7 @@
     if (res == ERROR_FILE_NOT_FOUND) {
       // The key does not exist, defaults will be used.
     } else {
-      vlog.error("Error(%d) opening key: Software\\TigerVNC\\vncviewer", res);
+      vlog.error(_("Error(%d) opening key: Software\\TigerVNC\\vncviewer"), res);
     }
     return NULL;
   }
@@ -479,13 +490,13 @@
       if (getKeyInt(parameterArray[i]->getName(), &intValue, &hKey))
 	((BoolParameter*)parameterArray[i])->setParam(intValue);
     } else {      
-      vlog.info("The parameterArray contains a object of a invalid type at line %d.", i);
+      vlog.info(_("The parameterArray contains a object of a invalid type at line %d."), i);
     }
   }
 
   res = RegCloseKey(hKey);
   if (res != ERROR_SUCCESS){
-    vlog.error("Error(%d) closing key:  Software\\TigerVNC\\vncviewer", res);
+    vlog.error(_("Error(%d) closing key:  Software\\TigerVNC\\vncviewer"), res);
   }
   
   return servername;
@@ -510,8 +521,8 @@
     
     char* homeDir = NULL;
     if (getvnchomedir(&homeDir) == -1) {
-      vlog.error("Failed to write configuration file, "
-		 "can't obtain home directory path.");
+      vlog.error(_("Failed to write configuration file, can't obtain home "
+                   "directory path."));
       return;
     }
 
@@ -524,7 +535,7 @@
   FILE* f = fopen(filepath, "w+");
   if (!f) {
     snprintf(write_error, sizeof(write_error),
-             "Failed to write configuration file, can't open %s", filepath);
+             _("Failed to write configuration file, can't open %s"), filepath);
     throw Exception(write_error);
   }
   
@@ -543,7 +554,8 @@
     } else if (dynamic_cast<BoolParameter*>(parameterArray[i]) != NULL) {
       fprintf(f, "%s=%d\n", ((BoolParameter*)parameterArray[i])->getName(), (int)*(BoolParameter*)parameterArray[i]);
     } else {      
-      vlog.info("The parameterArray contains a object of a invalid type at line %d.", i);
+      vlog.info(_("The parameterArray contains a object of a invalid type "
+                  "at line %d."), i);
     }
   }
   fclose(f);
@@ -569,8 +581,8 @@
 
     char* homeDir = NULL;
     if (getvnchomedir(&homeDir) == -1)
-      throw Exception("Failed to read configuration file, " 
-			   "can't obtain home directory path.");
+      throw Exception(_("Failed to read configuration file, "
+                        "can't obtain home directory path."));
 
     snprintf(filepath, sizeof(filepath), "%sdefault.tigervnc", homeDir);
   } else {
@@ -582,8 +594,8 @@
   if (!f) {
     if (!filename)
       return NULL; // Use defaults.
-    snprintf(readError, sizeof(readError), "Failed to read configuration file, "
-	     "can't open %s", filepath);
+    snprintf(readError, sizeof(readError),
+             _("Failed to read configuration file, can't open %s"), filepath);
     throw Exception(readError);
   }
   
@@ -594,15 +606,15 @@
     lineNr++;
     if (!fgets(line, sizeof(line), f)) {
       if (line[sizeof(line) -1] != '\0') {
-	vlog.error("Could not read the line(%d) in the configuration file,"
-		   "the buffersize is to small.", lineNr);
+        vlog.error(_("Could not read the line(%d) in the configuration file,"
+                     "the buffersize is to small."), lineNr);
 	return NULL;
       }
       if (feof(f))
 	break;
 
-      snprintf(readError, sizeof(readError), "Failed to read line %d in file %s", 
-	       lineNr, filepath);
+      snprintf(readError, sizeof(readError),
+               _("Failed to read line %d in file %s"), lineNr, filepath);
       throw Exception(readError);
     }
     
@@ -611,9 +623,10 @@
       if(strncmp(line, IDENTIFIER_STRING, strlen(IDENTIFIER_STRING)) == 0) {
 	continue;
       } else {
-	snprintf(readError, sizeof(readError), "Line 1 in file %s\n"
-		 "must contain the TigerVNC configurationfile identifier string:\n"
-		 "\"%s\"", filepath, IDENTIFIER_STRING);
+        snprintf(readError, sizeof(readError),
+                 _("Line 1 in file %s\nmust contain the TigerVNC "
+                   "configuration file identifier string:\n"
+                   "\"%s\""), filepath, IDENTIFIER_STRING);
 	throw Exception(readError);
       }
     }
@@ -631,7 +644,7 @@
     // Find the parameter value
     char *value = strchr(line, '=');
     if (value == NULL) {
-      vlog.info("Bad Name/Value pair on line: %d in file: %s", 
+      vlog.info(_("Bad Name/Value pair on line: %d in file: %s"),
 		lineNr, filepath);
       continue;
     }
@@ -644,8 +657,8 @@
     if (strcasecmp(line, "ServerName") == 0) {
 
       if(!decodeValue(value, decodingBuffer, sizeof(decodingBuffer))) {
-	vlog.info("The value of the parameter %s on line %d in file %s is invalid.",
-		  line, lineNr, filepath);
+        vlog.info(_("The value of the parameter %s on line %d in file %s "
+                    "is invalid."), line, lineNr, filepath);
 	continue;
       }
       snprintf(servername, sizeof(decodingBuffer), "%s", decodingBuffer);
@@ -660,8 +673,8 @@
 	  if (strcasecmp(line, ((StringParameter*)parameterArray[i])->getName()) == 0) {
 
 	    if(!decodeValue(value, decodingBuffer, sizeof(decodingBuffer))) {
-	      vlog.info("The value of the parameter %s on line %d in file %s is invalid.",
-			line, lineNr, filepath);
+        vlog.info(_("The value of the parameter %s on line %d in file %s "
+                    "is invalid."), line, lineNr, filepath);
 	      continue;
 	    }
 	    ((StringParameter*)parameterArray[i])->setParam(decodingBuffer);
@@ -681,13 +694,14 @@
 	  }
 
 	} else {      
-	  vlog.info("The parameterArray contains a object of a invalid type at line %d.", lineNr);
+    vlog.info(_("The parameterArray contains a object of a invalid type "
+                "at line %d."), lineNr);
 	}
       }
     }
 
     if (invalidParameterName)
-      vlog.info("Invalid parameter name on line: %d in file: %s", 
+      vlog.info(_("Invalid parameter name on line: %d in file: %s"),
 		lineNr, filepath);
   }
   fclose(f); f=0;