Index: /trunk/eraser/Eraser.Util.Native/Strings.nl.resx
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Strings.nl.resx	(revision 2000)
+++ /trunk/eraser/Eraser.Util.Native/Strings.nl.resx	(revision 2000)
@@ -0,0 +1,156 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="The volume provided is not a FAT12 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked free." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked bad." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT12 or FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The path provided is not volume relative. Volume relative paths must begin with a backslash." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided directory is a long file name." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT32 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The specified cluster is not used." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided file contents will not fit in the allocated file." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid directory entry." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The list of open system handles could not be retrieved." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+</root>
Index: /trunk/eraser/Eraser.Util.Native/Strings.pl.resx
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Strings.pl.resx	(revision 2000)
+++ /trunk/eraser/Eraser.Util.Native/Strings.pl.resx	(revision 2000)
@@ -0,0 +1,156 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="The volume provided is not a FAT12 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked free." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked bad." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT12 or FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The path provided is not volume relative. Volume relative paths must begin with a backslash." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided directory is a long file name." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT32 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The specified cluster is not used." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided file contents will not fit in the allocated file." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid directory entry." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The list of open system handles could not be retrieved." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+</root>
Index: /trunk/eraser/Eraser.Util.Native/Eraser.Util.Native.vcproj
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Eraser.Util.Native.vcproj	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/Eraser.Util.Native.vcproj	(revision 2000)
@@ -31,5 +31,5 @@
 			<Tool
 				Name="VCPreBuildEventTool"
-				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;"
+				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;&#x0D;&#x0A;csgettext --merge --recursive EN,NL,IT,PL &quot;$(ProjectDir)\.&quot; Strings&#x0D;&#x0A;if ERRORLEVEL 0 exit 0"
 			/>
 			<Tool
@@ -57,4 +57,5 @@
 			<Tool
 				Name="VCManagedResourceCompilerTool"
+				ResourceFileName="$(IntDir)\$(ProjectName).$(InputName).resources"
 			/>
 			<Tool
@@ -106,5 +107,5 @@
 			<Tool
 				Name="VCPreBuildEventTool"
-				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;"
+				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;&#x0D;&#x0A;csgettext --merge --recursive EN,NL,IT,PL &quot;$(ProjectDir)\.&quot; Strings&#x0D;&#x0A;if ERRORLEVEL 0 exit 0"
 			/>
 			<Tool
@@ -133,4 +134,5 @@
 			<Tool
 				Name="VCManagedResourceCompilerTool"
+				ResourceFileName="$(IntDir)\$(ProjectName).$(InputName).resources"
 			/>
 			<Tool
@@ -183,5 +185,5 @@
 			<Tool
 				Name="VCPreBuildEventTool"
-				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;"
+				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;&#x0D;&#x0A;csgettext --merge --recursive EN,NL,IT,PL &quot;$(ProjectDir)\.&quot; Strings&#x0D;&#x0A;if ERRORLEVEL 0 exit 0"
 			/>
 			<Tool
@@ -208,4 +210,5 @@
 			<Tool
 				Name="VCManagedResourceCompilerTool"
+				ResourceFileName="$(IntDir)\$(ProjectName).$(InputName).resources"
 			/>
 			<Tool
@@ -257,5 +260,5 @@
 			<Tool
 				Name="VCPreBuildEventTool"
-				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;"
+				CommandLine="&quot;$(SolutionDir)UpdateVersions.bat&quot; &quot;$(SolutionDir)\&quot; &quot;$(SolutionDir)Version.rc.in&quot; &quot;$(SolutionDir)Version.rc&quot;&#x0D;&#x0A;csgettext --merge --recursive EN,NL,IT,PL &quot;$(ProjectDir)\.&quot; Strings&#x0D;&#x0A;if ERRORLEVEL 0 exit 0"
 			/>
 			<Tool
@@ -283,4 +286,5 @@
 			<Tool
 				Name="VCManagedResourceCompilerTool"
+				ResourceFileName="$(IntDir)\$(ProjectName).$(InputName).resources"
 			/>
 			<Tool
@@ -339,4 +343,6 @@
 		<ProjectReference
 			ReferencedProjectIdentifier="{D083E1A8-3A4C-4683-9B3F-D5FEDE61B9C9}"
+			CopyLocal="false"
+			CopyLocalDependencies="false"
 			RelativePathToProject=".\Eraser.Util\Eraser.Util.csproj"
 		/>
@@ -460,4 +466,24 @@
 				>
 			</File>
+			<File
+				RelativePath=".\Strings.en.resx"
+				>
+			</File>
+			<File
+				RelativePath=".\Strings.it.resx"
+				>
+			</File>
+			<File
+				RelativePath=".\Strings.nl.resx"
+				>
+			</File>
+			<File
+				RelativePath=".\Strings.pl.resx"
+				>
+			</File>
+			<File
+				RelativePath=".\Strings.resx"
+				>
+			</File>
 		</Filter>
 	</Files>
Index: /trunk/eraser/Eraser.Util.Native/Strings.it.resx
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Strings.it.resx	(revision 2000)
+++ /trunk/eraser/Eraser.Util.Native/Strings.it.resx	(revision 2000)
@@ -0,0 +1,156 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="The volume provided is not a FAT12 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked free." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked bad." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT12 or FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The path provided is not volume relative. Volume relative paths must begin with a backslash." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided directory is a long file name." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT16 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The volume provided is not a FAT32 volume." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The specified cluster is not used." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The provided file contents will not fit in the allocated file." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="Invalid directory entry." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+  <data name="The list of open system handles could not be retrieved." xml:space="preserve">
+    <value>(Untranslated)</value>
+  </data>
+</root>
Index: /trunk/eraser/Eraser.Util.Native/FatApi.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/FatApi.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/FatApi.cpp	(revision 2000)
@@ -100,5 +100,5 @@
 	{
 		if (!IsClusterAllocated(cluster))
-			throw gcnew ArgumentException(L"The specified cluster is not used.");
+			throw gcnew ArgumentException(S::_(L"The specified cluster is not used."));
 
 		array<Byte>^ result = gcnew array<Byte>(FileSize(cluster));
@@ -120,8 +120,8 @@
 	{
 		if (!IsClusterAllocated(cluster))
-			throw gcnew ArgumentException(L"The specified cluster is not used.");
+			throw gcnew ArgumentException(S::_(L"The specified cluster is not used."));
 		if (static_cast<unsigned>(buffer->Length) != FileSize(cluster))
-			throw gcnew ArgumentException(L"The provided file contents will not fit in the " +
-				gcnew String(L"allocated file."));
+			throw gcnew ArgumentException(S::_(L"The provided file contents will not fit in the "
+				L"allocated file."));
 
 		int clusterSize = static_cast<int>(ClusterSizeToSize(1));
@@ -196,5 +196,5 @@
 						//Check that the sequence is one less than the previous one.
 						if (sequence != i->LongFileName.Sequence + 1)
-							throw gcnew ArgumentException(L"Invalid directory entry.");
+							throw gcnew ArgumentException(S::_(L"Invalid directory entry."));
 					}
 					
@@ -269,5 +269,5 @@
 						//Check that the sequence is one less than the previous one.
 						if (sequence != i->LongFileName.Sequence + 1)
-							throw gcnew ArgumentException(L"Invalid directory entry.");
+							throw gcnew ArgumentException(S::_(L"Invalid directory entry."));
 					}
 					else
Index: /trunk/eraser/Eraser.Util.Native/Fat12Api.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Fat12Api.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/Fat12Api.cpp	(revision 2000)
@@ -32,5 +32,5 @@
 		//Sanity checks: check that this volume is FAT16!
 		if (!IsFat12() || info->VolumeFormat == L"FAT16")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT12 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT12 volume."));
 	}
 
@@ -39,5 +39,5 @@
 		//Sanity checks: check that this volume is FAT16!
 		if (!IsFat12() || info->VolumeFormat == L"FAT16")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT12 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT12 volume."));
 	}
 
@@ -60,7 +60,7 @@
 		unsigned nextCluster = GetFatValue(cluster);
 		if (nextCluster <= 0x001 || (nextCluster >= 0xFF0 && nextCluster <= 0xFF6))
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 		else if (nextCluster == 0xFF7)
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 		else if (nextCluster >= 0xFF8)
 			return 0xFFFFFFFF;
@@ -75,7 +75,7 @@
 			unsigned nextCluster = GetFatValue(cluster);
 			if (nextCluster <= 0x001 || (nextCluster >= 0xFFF0 && nextCluster <= 0xFF6))
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 			else if (nextCluster == 0xFF7)
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 			else if (nextCluster >= 0xFF8)
 				return ClusterSizeToSize(result);
Index: /trunk/eraser/Eraser.Util.Native/Fat32Api.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Fat32Api.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/Fat32Api.cpp	(revision 2000)
@@ -32,5 +32,5 @@
 		//Sanity checks: check that this volume is FAT32!
 		if (info->VolumeFormat != L"FAT32")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT32 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT32 volume."));
 	}
 
@@ -39,5 +39,5 @@
 		//Sanity checks: check that this volume is FAT32!
 		if (info->VolumeFormat != L"FAT32")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT32 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT32 volume."));
 	}
 
@@ -86,7 +86,7 @@
 		unsigned* fatPtr = reinterpret_cast<unsigned*>(Fat);
 		if (fatPtr[cluster] <= 0x00000001 || (fatPtr[cluster] >= 0x0FFFFFF0 && fatPtr[cluster] <= 0x0FFFFFF6))
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 		else if (fatPtr[cluster] == 0x0FFFFFF7)
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 		else if (fatPtr[cluster] >= 0x0FFFFFF8)
 			return 0xFFFFFFFF;
@@ -101,7 +101,7 @@
 		{
 			if (fatPtr[cluster] <= 0x00000001 || (fatPtr[cluster] >= 0x0FFFFFF0 && fatPtr[cluster] <= 0x0FFFFFF6))
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 			else if (fatPtr[cluster] == 0x0FFFFFF7)
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 			else if (fatPtr[cluster] >= 0x0FFFFFF8)
 				return ClusterSizeToSize(result);
@@ -117,6 +117,6 @@
 		{
 			if (path[0] != L'\\')
-				throw gcnew ArgumentException(L"The path provided is not volume relative. " +
-					gcnew String(L"Volume relative paths must begin with a backslash."));
+				throw gcnew ArgumentException(S::_(L"The path provided is not volume relative. " +
+					L"Volume relative paths must begin with a backslash."));
 			path = path->Remove(0, 1);
 		}
Index: /trunk/eraser/Eraser.Util.Native/Fat16Api.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Fat16Api.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/Fat16Api.cpp	(revision 2000)
@@ -32,5 +32,5 @@
 		//Sanity checks: check that this volume is FAT16!
 		if (IsFat12() || info->VolumeFormat == L"FAT12")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT16 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT16 volume."));
 	}
 
@@ -39,5 +39,5 @@
 		//Sanity checks: check that this volume is FAT16!
 		if (IsFat12() || info->VolumeFormat == L"FAT12")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT16 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT16 volume."));
 	}
 
@@ -59,7 +59,7 @@
 		unsigned short* fatPtr = reinterpret_cast<unsigned short*>(Fat);
 		if (fatPtr[cluster] <= 0x0001 || (fatPtr[cluster] >= 0xFFF0 && fatPtr[cluster] <= 0xFFF6))
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 		else if (fatPtr[cluster] == 0xFFF7)
-			throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+			throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 		else if (fatPtr[cluster] >= 0xFFF8)
 			return 0xFFFFFFFF;
@@ -74,7 +74,7 @@
 		{
 			if (fatPtr[cluster] <= 0x0001 || (fatPtr[cluster] >= 0xFFF0 && fatPtr[cluster] <= 0xFFF6))
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked free.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked free."));
 			else if (fatPtr[cluster] == 0xFFF7)
-				throw gcnew ArgumentException(L"Invalid FAT cluster: cluster is marked bad.");
+				throw gcnew ArgumentException(S::_(L"Invalid FAT cluster: cluster is marked bad."));
 			else if (fatPtr[cluster] >= 0xFFF8)
 				return ClusterSizeToSize(result);
Index: /trunk/eraser/Eraser.Util.Native/OpenHandle.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/OpenHandle.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/OpenHandle.cpp	(revision 2000)
@@ -42,5 +42,5 @@
 
 			if (bufferSize == 0)
-				throw gcnew InvalidOperationException("The list of open system handles could not be retrieved.");
+				throw gcnew InvalidOperationException(S::_(L"The list of open system handles could not be retrieved."));
 		}
 
Index: /trunk/eraser/Eraser.Util.Native/Fat12Or16Api.cpp
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Fat12Or16Api.cpp	(revision 1999)
+++ /trunk/eraser/Eraser.Util.Native/Fat12Or16Api.cpp	(revision 2000)
@@ -32,5 +32,5 @@
 		//Sanity checks: check that this volume is FAT12 or FAT16!
 		if (info->VolumeFormat != L"FAT12" && info->VolumeFormat != "FAT16")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT12 or FAT16 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT12 or FAT16 volume."));
 	}
 
@@ -39,5 +39,5 @@
 		//Sanity checks: check that this volume is FAT12 or FAT16!
 		if (info->VolumeFormat != L"FAT12" && info->VolumeFormat != "FAT16")
-			throw gcnew ArgumentException(L"The volume provided is not a FAT12 or FAT16 volume.");
+			throw gcnew ArgumentException(S::_(L"The volume provided is not a FAT12 or FAT16 volume."));
 	}
 
@@ -80,6 +80,6 @@
 		{
 			if (path[0] != L'\\')
-				throw gcnew ArgumentException(L"The path provided is not volume relative. " +
-					gcnew String(L"Volume relative paths must begin with a backslash."));
+				throw gcnew ArgumentException(S::_(L"The path provided is not volume relative. "
+					L"Volume relative paths must begin with a backslash."));
 			path = path->Remove(0, 1);
 		}
@@ -162,5 +162,5 @@
 	{
 		if (directory.Short.Attributes == 0x0F)
-			throw gcnew ArgumentException(L"The provided directory is a long file name.");
+			throw gcnew ArgumentException(S::_(L"The provided directory is a long file name."));
 		return directory.Short.StartClusterLow;
 	}
@@ -174,5 +174,5 @@
 	{
 		if (directory.Short.Attributes == 0x0F)
-			throw gcnew ArgumentException(L"The provided directory is a long file name.");
+			throw gcnew ArgumentException(S::_(L"The provided directory is a long file name."));
 		return directory.Short.StartClusterLow;
 	}
Index: /trunk/eraser/Eraser.Util.Native/Strings.resx
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Strings.resx	(revision 2000)
+++ /trunk/eraser/Eraser.Util.Native/Strings.resx	(revision 2000)
@@ -0,0 +1,156 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="The volume provided is not a FAT12 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT12 volume.</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked free." xml:space="preserve">
+    <value>Invalid FAT cluster: cluster is marked free.</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked bad." xml:space="preserve">
+    <value>Invalid FAT cluster: cluster is marked bad.</value>
+  </data>
+  <data name="The volume provided is not a FAT12 or FAT16 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT12 or FAT16 volume.</value>
+  </data>
+  <data name="The path provided is not volume relative. Volume relative paths must begin with a backslash." xml:space="preserve">
+    <value>The path provided is not volume relative. Volume relative paths must begin with a backslash.</value>
+  </data>
+  <data name="The provided directory is a long file name." xml:space="preserve">
+    <value>The provided directory is a long file name.</value>
+  </data>
+  <data name="The volume provided is not a FAT16 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT16 volume.</value>
+  </data>
+  <data name="The volume provided is not a FAT32 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT32 volume.</value>
+  </data>
+  <data name="The specified cluster is not used." xml:space="preserve">
+    <value>The specified cluster is not used.</value>
+  </data>
+  <data name="The provided file contents will not fit in the allocated file." xml:space="preserve">
+    <value>The provided file contents will not fit in the allocated file.</value>
+  </data>
+  <data name="Invalid directory entry." xml:space="preserve">
+    <value>Invalid directory entry.</value>
+  </data>
+  <data name="The list of open system handles could not be retrieved." xml:space="preserve">
+    <value>The list of open system handles could not be retrieved.</value>
+  </data>
+</root>
Index: /trunk/eraser/Eraser.Util.Native/Strings.en.resx
===================================================================
--- /trunk/eraser/Eraser.Util.Native/Strings.en.resx	(revision 2000)
+++ /trunk/eraser/Eraser.Util.Native/Strings.en.resx	(revision 2000)
@@ -0,0 +1,156 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="The volume provided is not a FAT12 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT12 volume.</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked free." xml:space="preserve">
+    <value>Invalid FAT cluster: cluster is marked free.</value>
+  </data>
+  <data name="Invalid FAT cluster: cluster is marked bad." xml:space="preserve">
+    <value>Invalid FAT cluster: cluster is marked bad.</value>
+  </data>
+  <data name="The volume provided is not a FAT12 or FAT16 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT12 or FAT16 volume.</value>
+  </data>
+  <data name="The path provided is not volume relative. Volume relative paths must begin with a backslash." xml:space="preserve">
+    <value>The path provided is not volume relative. Volume relative paths must begin with a backslash.</value>
+  </data>
+  <data name="The provided directory is a long file name." xml:space="preserve">
+    <value>The provided directory is a long file name.</value>
+  </data>
+  <data name="The volume provided is not a FAT16 volume." xml:space="preserve">
+    <value>The provided directory is a long file name.</value>
+  </data>
+  <data name="The volume provided is not a FAT32 volume." xml:space="preserve">
+    <value>The volume provided is not a FAT32 volume.</value>
+  </data>
+  <data name="The specified cluster is not used." xml:space="preserve">
+    <value>The specified cluster is not used.</value>
+  </data>
+  <data name="The provided file contents will not fit in the allocated file." xml:space="preserve">
+    <value>The provided file contents will not fit in the allocated file.</value>
+  </data>
+  <data name="Invalid directory entry." xml:space="preserve">
+    <value>Invalid directory entry.</value>
+  </data>
+  <data name="The list of open system handles could not be retrieved." xml:space="preserve">
+    <value>The list of open system handles could not be retrieved.</value>
+  </data>
+</root>
