You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2016/12/06 15:11:56 UTC

[21/58] lucenenet git commit: QueryParser.Flexible: Fixed support for localized messages to make all TestNLS tests pass

QueryParser.Flexible: Fixed support for localized messages to make all TestNLS tests pass


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/c6ee3d5f
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/c6ee3d5f
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/c6ee3d5f

Branch: refs/heads/master
Commit: c6ee3d5f4acb779bcd094b2438cb920f573eaea7
Parents: 6e7a733
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Sun Dec 4 17:13:01 2016 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Sun Dec 4 17:13:01 2016 +0700

----------------------------------------------------------------------
 .../QueryParserMessagesBundle.Designer.cs       | 225 +++++++++++++++++++
 .../Messages/QueryParserMessagesBundle.resx     | 177 +++++++++++++++
 .../Flexible/Core/Nodes/QueryNodeImpl.cs        |   5 +-
 .../Flexible/Messages/MessageImpl.cs            |   2 +-
 .../Flexible/Messages/NLS.cs                    |  30 ++-
 .../Lucene.Net.QueryParser.csproj               |  14 +-
 .../Properties/Resources.Designer.cs            | 225 -------------------
 .../Properties/Resources.resx                   | 177 ---------------
 .../Messages/MessagesTestBundle.Designer.cs     |  63 ------
 .../Flexible/Messages/MessagesTestBundle.cs     |  26 ++-
 .../Messages/MessagesTestBundle.ja-JP.resx      | 126 -----------
 .../Flexible/Messages/MessagesTestBundle.resx   | 126 -----------
 .../MessagesTestBundleBundle.Designer.cs        |  81 +++++++
 .../Messages/MessagesTestBundleBundle.ja.resx   | 126 +++++++++++
 .../Messages/MessagesTestBundleBundle.resx      | 126 +++++++++++
 .../Flexible/Messages/TestNLS.cs                | 178 +++++++--------
 .../Lucene.Net.Tests.QueryParser.csproj         |  13 +-
 17 files changed, 886 insertions(+), 834 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.Designer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.Designer.cs b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.Designer.cs
new file mode 100644
index 0000000..2809585
--- /dev/null
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.Designer.cs
@@ -0,0 +1,225 @@
+\ufeff//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Lucene.Net.QueryParsers.Flexible.Core.Messages {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class QueryParserMessagesBundle {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal QueryParserMessagesBundle() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Lucene.Net.QueryParsers.Flexible.Core.Messages.QueryParserMessagesBundle", typeof(QueryParserMessagesBundle).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Could not parse text &quot;{0}&quot; using {1}.
+        /// </summary>
+        internal static string COULD_NOT_PARSE_NUMBER {
+            get {
+                return ResourceManager.GetString("COULD_NOT_PARSE_NUMBER", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to .
+        /// </summary>
+        internal static string EMPTY_MESSAGE {
+            get {
+                return ResourceManager.GetString("EMPTY_MESSAGE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Syntax Error: {0}.
+        /// </summary>
+        internal static string INVALID_SYNTAX {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Syntax Error, cannot parse {0}: {1}.
+        /// </summary>
+        internal static string INVALID_SYNTAX_CANNOT_PARSE {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_CANNOT_PARSE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Term can not end with escape character..
+        /// </summary>
+        internal static string INVALID_SYNTAX_ESCAPE_CHARACTER {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_CHARACTER", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Non-hex character in Unicode escape sequence: {0}.
+        /// </summary>
+        internal static string INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Truncated unicode escape sequence..
+        /// </summary>
+        internal static string INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Fractional edit distances are not allowed..
+        /// </summary>
+        internal static string INVALID_SYNTAX_FUZZY_EDITS {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_FUZZY_EDITS", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The similarity value for a fuzzy search must be between 0.0 and 1.0..
+        /// </summary>
+        internal static string INVALID_SYNTAX_FUZZY_LIMITS {
+            get {
+                return ResourceManager.GetString("INVALID_SYNTAX_FUZZY_LIMITS", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Leading wildcard is not allowed: {0}.
+        /// </summary>
+        internal static string LEADING_WILDCARD_NOT_ALLOWED {
+            get {
+                return ResourceManager.GetString("LEADING_WILDCARD_NOT_ALLOWED", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Cannot convert query to lucene syntax: {0} error: {1}.
+        /// </summary>
+        internal static string LUCENE_QUERY_CONVERSION_ERROR {
+            get {
+                return ResourceManager.GetString("LUCENE_QUERY_CONVERSION_ERROR", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to This node does not support this action..
+        /// </summary>
+        internal static string NODE_ACTION_NOT_SUPPORTED {
+            get {
+                return ResourceManager.GetString("NODE_ACTION_NOT_SUPPORTED", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Number class not supported by NumericRangeQueryNode: {0}.
+        /// </summary>
+        internal static string NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY {
+            get {
+                return ResourceManager.GetString("NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Field &quot;{0}&quot; is numeric and cannot have an empty value..
+        /// </summary>
+        internal static string NUMERIC_CANNOT_BE_EMPTY {
+            get {
+                return ResourceManager.GetString("NUMERIC_CANNOT_BE_EMPTY", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Parameter {1} with value {0} not supported..
+        /// </summary>
+        internal static string PARAMETER_VALUE_NOT_SUPPORTED {
+            get {
+                return ResourceManager.GetString("PARAMETER_VALUE_NOT_SUPPORTED", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Too many boolean clauses, the maximum supported is {0}: {1}.
+        /// </summary>
+        internal static string TOO_MANY_BOOLEAN_CLAUSES {
+            get {
+                return ResourceManager.GetString("TOO_MANY_BOOLEAN_CLAUSES", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unsupported NumericField.DataType: {0}.
+        /// </summary>
+        internal static string UNSUPPORTED_NUMERIC_DATA_TYPE {
+            get {
+                return ResourceManager.GetString("UNSUPPORTED_NUMERIC_DATA_TYPE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Wildcard is not supported for query: {0}.
+        /// </summary>
+        internal static string WILDCARD_NOT_SUPPORTED {
+            get {
+                return ResourceManager.GetString("WILDCARD_NOT_SUPPORTED", resourceCulture);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.resx b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.resx
new file mode 100644
index 0000000..c6680ce
--- /dev/null
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Messages/QueryParserMessagesBundle.resx
@@ -0,0 +1,177 @@
+\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="COULD_NOT_PARSE_NUMBER" xml:space="preserve">
+    <value>Could not parse text "{0}" using {1}</value>
+  </data>
+  <data name="EMPTY_MESSAGE" xml:space="preserve">
+    <value />
+  </data>
+  <data name="INVALID_SYNTAX" xml:space="preserve">
+    <value>Syntax Error: {0}</value>
+    <comment>&lt;REPLACEMENT arg="{0}" value="detailed_message"/&gt;</comment>
+  </data>
+  <data name="INVALID_SYNTAX_CANNOT_PARSE" xml:space="preserve">
+    <value>Syntax Error, cannot parse {0}: {1}</value>
+    <comment>&lt;REPLACEMENT arg="{0}" value="invalid_query"/&gt;&lt;REPLACEMENT arg="{1}" value="detailed_message"/&gt;</comment>
+  </data>
+  <data name="INVALID_SYNTAX_ESCAPE_CHARACTER" xml:space="preserve">
+    <value>Term can not end with escape character.</value>
+  </data>
+  <data name="INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE" xml:space="preserve">
+    <value>Non-hex character in Unicode escape sequence: {0}</value>
+  </data>
+  <data name="INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
+    <value>Truncated unicode escape sequence.</value>
+  </data>
+  <data name="INVALID_SYNTAX_FUZZY_EDITS" xml:space="preserve">
+    <value>Fractional edit distances are not allowed.</value>
+  </data>
+  <data name="INVALID_SYNTAX_FUZZY_LIMITS" xml:space="preserve">
+    <value>The similarity value for a fuzzy search must be between 0.0 and 1.0.</value>
+  </data>
+  <data name="LEADING_WILDCARD_NOT_ALLOWED" xml:space="preserve">
+    <value>Leading wildcard is not allowed: {0}</value>
+  </data>
+  <data name="LUCENE_QUERY_CONVERSION_ERROR" xml:space="preserve">
+    <value>Cannot convert query to lucene syntax: {0} error: {1}</value>
+    <comment>&lt;REPLACEMENT arg="{0}" value="query"/&gt;&lt;REPLACEMENT arg="{1}" value="error/class"/&gt;</comment>
+  </data>
+  <data name="NODE_ACTION_NOT_SUPPORTED" xml:space="preserve">
+    <value>This node does not support this action.</value>
+  </data>
+  <data name="NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY" xml:space="preserve">
+    <value>Number class not supported by NumericRangeQueryNode: {0}</value>
+  </data>
+  <data name="NUMERIC_CANNOT_BE_EMPTY" xml:space="preserve">
+    <value>Field "{0}" is numeric and cannot have an empty value.</value>
+  </data>
+  <data name="PARAMETER_VALUE_NOT_SUPPORTED" xml:space="preserve">
+    <value>Parameter {1} with value {0} not supported.</value>
+  </data>
+  <data name="TOO_MANY_BOOLEAN_CLAUSES" xml:space="preserve">
+    <value>Too many boolean clauses, the maximum supported is {0}: {1}</value>
+  </data>
+  <data name="UNSUPPORTED_NUMERIC_DATA_TYPE" xml:space="preserve">
+    <value>Unsupported NumericField.DataType: {0}</value>
+  </data>
+  <data name="WILDCARD_NOT_SUPPORTED" xml:space="preserve">
+    <value>Wildcard is not supported for query: {0}</value>
+  </data>
+</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/QueryNodeImpl.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/QueryNodeImpl.cs b/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/QueryNodeImpl.cs
index b7d7c39..9d48fcb 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/QueryNodeImpl.cs
+++ b/src/Lucene.Net.QueryParser/Flexible/Core/Nodes/QueryNodeImpl.cs
@@ -6,6 +6,7 @@ using System;
 using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
+using System.Resources;
 using System.Text;
 using System.Threading.Tasks;
 
@@ -89,7 +90,9 @@ namespace Lucene.Net.QueryParsers.Flexible.Core.Nodes
                 //    .getBundle("org.apache.lucene.queryParser.messages.QueryParserMessages");
                 //String message = bundle.getObject("Q0008E.NODE_ACTION_NOT_SUPPORTED")
                 //    .toString();
-                string message = Lucene.Net.QueryParsers.Properties.Resources.NODE_ACTION_NOT_SUPPORTED;
+                //ResourceManager bundle =  QueryParserMessages.NODE_ACTION_NOT_SUPPORTED;
+                ResourceManager bundle = new ResourceManager(typeof(QueryParserMessagesBundle));
+                string message = bundle.GetString(QueryParserMessages.NODE_ACTION_NOT_SUPPORTED);
 
                 throw new ArgumentException(message);
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Flexible/Messages/MessageImpl.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Flexible/Messages/MessageImpl.cs b/src/Lucene.Net.QueryParser/Flexible/Messages/MessageImpl.cs
index a26d024..a854af6 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Messages/MessageImpl.cs
+++ b/src/Lucene.Net.QueryParser/Flexible/Messages/MessageImpl.cs
@@ -44,7 +44,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Messages
 
         public virtual string GetLocalizedMessage()
         {
-            return GetLocalizedMessage(CultureInfo.InvariantCulture);
+            return GetLocalizedMessage(CultureInfo.CurrentUICulture);
         }
 
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Flexible/Messages/NLS.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Flexible/Messages/NLS.cs b/src/Lucene.Net.QueryParser/Flexible/Messages/NLS.cs
index 30f31d8..e1053c1 100644
--- a/src/Lucene.Net.QueryParser/Flexible/Messages/NLS.cs
+++ b/src/Lucene.Net.QueryParser/Flexible/Messages/NLS.cs
@@ -54,18 +54,18 @@ namespace Lucene.Net.QueryParsers.Flexible.Messages
         {
             string str = GetLocalizedMessage(key, locale);
 
-            // LUCENENET TODO: Figure out what the equivalent of this is
-            //if (args.Length > 0)
-            //{
-            //    str = MessageFormat.Format(str, args);
-            //}
+            if (args.Length > 0)
+            {
+                //str = MessageFormat.Format(str, args);
+                str = string.Format(locale, str, args);
+            }
 
             return str;
         }
 
         public static string GetLocalizedMessage(string key, params object[] args)
         {
-            return GetLocalizedMessage(key, CultureInfo.InvariantCulture, args);
+            return GetLocalizedMessage(key, CultureInfo.CurrentUICulture, args);
         }
 
         /**
@@ -103,7 +103,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Messages
                 for (IEnumerator<string> it = bundles.Keys.GetEnumerator(); it.MoveNext();)
                 {
                     Type clazz = bundles[it.Current];
-                    ResourceManager resourceBundle = new ResourceManager(clazz);
+                    ResourceManager resourceBundle = new ResourceManager(GetResourceType(clazz));
                     if (resourceBundle != null)
                     {
                         try
@@ -220,7 +220,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Messages
             // Test if the message is present in the resource bundle
             try
             {
-                ResourceManager resourceBundle = new ResourceManager(clazz);
+                ResourceManager resourceBundle = new ResourceManager(GetResourceType(clazz));
                 if (resourceBundle != null)
                 {
                     object obj = resourceBundle.GetObject(key);
@@ -267,6 +267,20 @@ namespace Lucene.Net.QueryParsers.Flexible.Messages
             //}
         }
 
+        /// <summary>
+        /// LUCENENET specific method for converting the NLS type to the .NET resource type.
+        /// In Java, these were one and the same, but in .NET it is not possible to create resources
+        /// in Visual Studio with the same class name as a resource class because the resource generation process already
+        /// creates a backing class with the same name as the resource. So, by convention the resources must be
+        /// named &lt;messages class name&gt;Bundle in order to be found by NLS.
+        /// </summary>
+        /// <param name="clazz">The type of the NLS class where the field strings are located that identify resources.</param>
+        /// <returns>The type of resources (the class name + "Resources" suffix), as a .NET <see cref="Type"/> instance.</returns>
+        private static Type GetResourceType(Type clazz)
+        {
+            return Type.GetType(clazz.Namespace + "." + clazz.Name + "Bundle, " + clazz.Assembly.FullName);
+        }
+
   //      /*
   //       * Make a class field accessible
   //       */

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Lucene.Net.QueryParser.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Lucene.Net.QueryParser.csproj b/src/Lucene.Net.QueryParser/Lucene.Net.QueryParser.csproj
index db43c85..a264871 100644
--- a/src/Lucene.Net.QueryParser/Lucene.Net.QueryParser.csproj
+++ b/src/Lucene.Net.QueryParser/Lucene.Net.QueryParser.csproj
@@ -63,6 +63,11 @@
     <Compile Include="Flexible\Core\Config\FieldConfigListener.cs" />
     <Compile Include="Flexible\Core\Config\QueryConfigHandler.cs" />
     <Compile Include="Flexible\Core\Messages\QueryParserMessages.cs" />
+    <Compile Include="Flexible\Core\Messages\QueryParserMessagesBundle.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>QueryParserMessagesBundle.resx</DependentUpon>
+    </Compile>
     <Compile Include="Flexible\Core\Nodes\NoTokenFoundQueryNode.cs" />
     <Compile Include="Flexible\Core\Nodes\AndQueryNode.cs" />
     <Compile Include="Flexible\Core\Nodes\AnyQueryNode.cs" />
@@ -182,11 +187,6 @@
     <Compile Include="Flexible\Standard\QueryParserUtil.cs" />
     <Compile Include="Flexible\Standard\StandardQueryParser.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Properties\Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
     <Compile Include="Simple\SimpleQueryParser.cs" />
     <Compile Include="Surround\Parser\CharStream.cs" />
     <Compile Include="Surround\Parser\FastCharStream.cs" />
@@ -227,9 +227,9 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="Properties\Resources.resx">
+    <EmbeddedResource Include="Flexible\Core\Messages\QueryParserMessagesBundle.resx">
       <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <LastGenOutput>QueryParserMessagesBundle.Designer.cs</LastGenOutput>
     </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Properties/Resources.Designer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Properties/Resources.Designer.cs b/src/Lucene.Net.QueryParser/Properties/Resources.Designer.cs
deleted file mode 100644
index b3a8fe9..0000000
--- a/src/Lucene.Net.QueryParser/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,225 +0,0 @@
-\ufeff//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Lucene.Net.QueryParsers.Properties {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Lucene.Net.QueryParsers.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Could not parse text &quot;{0}&quot; using {1}.
-        /// </summary>
-        internal static string COULD_NOT_PARSE_NUMBER {
-            get {
-                return ResourceManager.GetString("COULD_NOT_PARSE_NUMBER", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to .
-        /// </summary>
-        internal static string EMPTY_MESSAGE {
-            get {
-                return ResourceManager.GetString("EMPTY_MESSAGE", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Syntax Error: {0}.
-        /// </summary>
-        internal static string INVALID_SYNTAX {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Syntax Error, cannot parse {0}: {1}.
-        /// </summary>
-        internal static string INVALID_SYNTAX_CANNOT_PARSE {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_CANNOT_PARSE", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Term can not end with escape character..
-        /// </summary>
-        internal static string INVALID_SYNTAX_ESCAPE_CHARACTER {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_CHARACTER", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Non-hex character in Unicode escape sequence: {0}.
-        /// </summary>
-        internal static string INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Truncated unicode escape sequence..
-        /// </summary>
-        internal static string INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Fractional edit distances are not allowed..
-        /// </summary>
-        internal static string INVALID_SYNTAX_FUZZY_EDITS {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_FUZZY_EDITS", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to The similarity value for a fuzzy search must be between 0.0 and 1.0..
-        /// </summary>
-        internal static string INVALID_SYNTAX_FUZZY_LIMITS {
-            get {
-                return ResourceManager.GetString("INVALID_SYNTAX_FUZZY_LIMITS", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Leading wildcard is not allowed: {0}.
-        /// </summary>
-        internal static string LEADING_WILDCARD_NOT_ALLOWED {
-            get {
-                return ResourceManager.GetString("LEADING_WILDCARD_NOT_ALLOWED", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Cannot convert query to lucene syntax: {0} error: {1}.
-        /// </summary>
-        internal static string LUCENE_QUERY_CONVERSION_ERROR {
-            get {
-                return ResourceManager.GetString("LUCENE_QUERY_CONVERSION_ERROR", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to This node does not support this action..
-        /// </summary>
-        internal static string NODE_ACTION_NOT_SUPPORTED {
-            get {
-                return ResourceManager.GetString("NODE_ACTION_NOT_SUPPORTED", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Number class not supported by NumericRangeQueryNode: {0}.
-        /// </summary>
-        internal static string NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY {
-            get {
-                return ResourceManager.GetString("NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Field &quot;{0}&quot; is numeric and cannot have an empty value..
-        /// </summary>
-        internal static string NUMERIC_CANNOT_BE_EMPTY {
-            get {
-                return ResourceManager.GetString("NUMERIC_CANNOT_BE_EMPTY", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Parameter {1} with value {0} not supported..
-        /// </summary>
-        internal static string PARAMETER_VALUE_NOT_SUPPORTED {
-            get {
-                return ResourceManager.GetString("PARAMETER_VALUE_NOT_SUPPORTED", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Too many boolean clauses, the maximum supported is {0}: {1}.
-        /// </summary>
-        internal static string TOO_MANY_BOOLEAN_CLAUSES {
-            get {
-                return ResourceManager.GetString("TOO_MANY_BOOLEAN_CLAUSES", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Unsupported NumericField.DataType: {0}.
-        /// </summary>
-        internal static string UNSUPPORTED_NUMERIC_DATA_TYPE {
-            get {
-                return ResourceManager.GetString("UNSUPPORTED_NUMERIC_DATA_TYPE", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Wildcard is not supported for query: {0}.
-        /// </summary>
-        internal static string WILDCARD_NOT_SUPPORTED {
-            get {
-                return ResourceManager.GetString("WILDCARD_NOT_SUPPORTED", resourceCulture);
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.QueryParser/Properties/Resources.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.QueryParser/Properties/Resources.resx b/src/Lucene.Net.QueryParser/Properties/Resources.resx
deleted file mode 100644
index c6680ce..0000000
--- a/src/Lucene.Net.QueryParser/Properties/Resources.resx
+++ /dev/null
@@ -1,177 +0,0 @@
-\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="COULD_NOT_PARSE_NUMBER" xml:space="preserve">
-    <value>Could not parse text "{0}" using {1}</value>
-  </data>
-  <data name="EMPTY_MESSAGE" xml:space="preserve">
-    <value />
-  </data>
-  <data name="INVALID_SYNTAX" xml:space="preserve">
-    <value>Syntax Error: {0}</value>
-    <comment>&lt;REPLACEMENT arg="{0}" value="detailed_message"/&gt;</comment>
-  </data>
-  <data name="INVALID_SYNTAX_CANNOT_PARSE" xml:space="preserve">
-    <value>Syntax Error, cannot parse {0}: {1}</value>
-    <comment>&lt;REPLACEMENT arg="{0}" value="invalid_query"/&gt;&lt;REPLACEMENT arg="{1}" value="detailed_message"/&gt;</comment>
-  </data>
-  <data name="INVALID_SYNTAX_ESCAPE_CHARACTER" xml:space="preserve">
-    <value>Term can not end with escape character.</value>
-  </data>
-  <data name="INVALID_SYNTAX_ESCAPE_NONE_HEX_UNICODE" xml:space="preserve">
-    <value>Non-hex character in Unicode escape sequence: {0}</value>
-  </data>
-  <data name="INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
-    <value>Truncated unicode escape sequence.</value>
-  </data>
-  <data name="INVALID_SYNTAX_FUZZY_EDITS" xml:space="preserve">
-    <value>Fractional edit distances are not allowed.</value>
-  </data>
-  <data name="INVALID_SYNTAX_FUZZY_LIMITS" xml:space="preserve">
-    <value>The similarity value for a fuzzy search must be between 0.0 and 1.0.</value>
-  </data>
-  <data name="LEADING_WILDCARD_NOT_ALLOWED" xml:space="preserve">
-    <value>Leading wildcard is not allowed: {0}</value>
-  </data>
-  <data name="LUCENE_QUERY_CONVERSION_ERROR" xml:space="preserve">
-    <value>Cannot convert query to lucene syntax: {0} error: {1}</value>
-    <comment>&lt;REPLACEMENT arg="{0}" value="query"/&gt;&lt;REPLACEMENT arg="{1}" value="error/class"/&gt;</comment>
-  </data>
-  <data name="NODE_ACTION_NOT_SUPPORTED" xml:space="preserve">
-    <value>This node does not support this action.</value>
-  </data>
-  <data name="NUMBER_CLASS_NOT_SUPPORTED_BY_NUMERIC_RANGE_QUERY" xml:space="preserve">
-    <value>Number class not supported by NumericRangeQueryNode: {0}</value>
-  </data>
-  <data name="NUMERIC_CANNOT_BE_EMPTY" xml:space="preserve">
-    <value>Field "{0}" is numeric and cannot have an empty value.</value>
-  </data>
-  <data name="PARAMETER_VALUE_NOT_SUPPORTED" xml:space="preserve">
-    <value>Parameter {1} with value {0} not supported.</value>
-  </data>
-  <data name="TOO_MANY_BOOLEAN_CLAUSES" xml:space="preserve">
-    <value>Too many boolean clauses, the maximum supported is {0}: {1}</value>
-  </data>
-  <data name="UNSUPPORTED_NUMERIC_DATA_TYPE" xml:space="preserve">
-    <value>Unsupported NumericField.DataType: {0}</value>
-  </data>
-  <data name="WILDCARD_NOT_SUPPORTED" xml:space="preserve">
-    <value>Wildcard is not supported for query: {0}</value>
-  </data>
-</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.Designer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.Designer.cs b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.Designer.cs
deleted file mode 100644
index 0ce0aa7..0000000
--- a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.Designer.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-\ufeff//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace Lucene.Net.QueryParsers.Flexible.Messages {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class MessagesTestBundle {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal MessagesTestBundle() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Lucene.Net.QueryParsers.Flexible.Messages.MessagesTestBundle", typeof(MessagesTestBundle).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.cs b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.cs
index a495f3d..c1344e3 100644
--- a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.cs
+++ b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.cs
@@ -6,7 +6,27 @@ using System.Threading.Tasks;
 
 namespace Lucene.Net.QueryParsers.Flexible.Messages
 {
-    //public class MessagesTestBundle
-    //{
-    //}
+    public class MessagesTestBundle : NLS
+    {
+        private static readonly string BUNDLE_NAME = typeof(MessagesTestBundle).Name;
+
+        private MessagesTestBundle()
+        {
+            // should never be instantiated
+        }
+
+        static MessagesTestBundle()
+        {
+            // register all string ids with NLS class and initialize static string
+            // values
+            NLS.InitializeMessages(BUNDLE_NAME, typeof(MessagesTestBundle));
+        }
+
+        // static string must match the strings in the property files.
+        public static String Q0001E_INVALID_SYNTAX;
+        public static String Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION;
+
+        // this message is missing from the properties file
+        public static String Q0005E_MESSAGE_NOT_IN_BUNDLE;
+    }
 }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.ja-JP.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.ja-JP.resx b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.ja-JP.resx
deleted file mode 100644
index 9378bcb..0000000
--- a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.ja-JP.resx
+++ /dev/null
@@ -1,126 +0,0 @@
-\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="Q0001E_INVALID_SYNTAX" xml:space="preserve">
-    <value>\u69cb\u6587\u30a8\u30e9\u30fc: {0}</value>
-  </data>
-  <data name="Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
-    <value>\u5207\u308a\u6368\u3066\u3089\u308c\u305f\u30e6\u30cb\u30b3\u30fc\u30c9\u30fb\u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3002</value>
-  </data>
-</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.resx b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.resx
deleted file mode 100644
index 7d4fa31..0000000
--- a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundle.resx
+++ /dev/null
@@ -1,126 +0,0 @@
-\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <data name="Q0001E_INVALID_SYNTAX" xml:space="preserve">
-    <value>Syntax Error: {0}</value>
-  </data>
-  <data name="Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
-    <value>Truncated unicode escape sequence.</value>
-  </data>
-</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.Designer.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.Designer.cs b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.Designer.cs
new file mode 100644
index 0000000..ec703e9
--- /dev/null
+++ b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.Designer.cs
@@ -0,0 +1,81 @@
+\ufeff//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Lucene.Net.QueryParsers.Flexible.Messages {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class MessagesTestBundleBundle {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal MessagesTestBundleBundle() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Lucene.Net.QueryParsers.Flexible.Messages.MessagesTestBundleBundle", typeof(MessagesTestBundleBundle).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Syntax Error: {0}.
+        /// </summary>
+        internal static string Q0001E_INVALID_SYNTAX {
+            get {
+                return ResourceManager.GetString("Q0001E_INVALID_SYNTAX", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Truncated unicode escape sequence..
+        /// </summary>
+        internal static string Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION {
+            get {
+                return ResourceManager.GetString("Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION", resourceCulture);
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.ja.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.ja.resx b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.ja.resx
new file mode 100644
index 0000000..0e2fc13
--- /dev/null
+++ b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.ja.resx
@@ -0,0 +1,126 @@
+\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Q0001E_INVALID_SYNTAX" xml:space="preserve">
+    <value>\u69cb\u6587\u30a8\u30e9\u30fc: {0}</value>
+  </data>
+  <data name="Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
+    <value>\u5207\u308a\u6368\u3066\u3089\u308c\u305f\u30e6\u30cb\u30b3\u30fc\u30c9\u30fb\u30a8\u30b9\u30b1\u30fc\u30d7\u30fb\u30b7\u30fc\u30b1\u30f3\u30b9\u3002</value>
+  </data>
+</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/c6ee3d5f/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.resx
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.resx b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.resx
new file mode 100644
index 0000000..7d4fa31
--- /dev/null
+++ b/src/Lucene.Net.Tests.QueryParser/Flexible/Messages/MessagesTestBundleBundle.resx
@@ -0,0 +1,126 @@
+\ufeff<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="Q0001E_INVALID_SYNTAX" xml:space="preserve">
+    <value>Syntax Error: {0}</value>
+  </data>
+  <data name="Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION" xml:space="preserve">
+    <value>Truncated unicode escape sequence.</value>
+  </data>
+</root>
\ No newline at end of file