For Native Language Support (NLS), system of software internationalization.
This utility API, adds support for NLS messages in the apache code. It is currently used by the lucene “New Flexible Query PArser”.
Features:
Prerequisite for these examples: Add a resource file named MessagesTestBundle.resx and add messages for each of the public static string fields except for Q0005E_Message_Not_In_Bundle.
Lazy loading of Message Strings
public class MessagesTest : NLS { private static readonly string BundleName = typeof(MessagesTest).FullName; private MessagesTest() { // should never be instantiated } static MessagesTest() { InitializeMessages(BundleName, typeof(MessagesTest)); } // 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; } // Create a message reference IMessage invalidSyntax = new Message(MessagesTest.Q0001E_Invalid_Syntax, "XXX"); // Do other stuff in the code... // when is time to display the message to the user or log the message on a file // the message is loaded from the correct bundle string message1 = invalidSyntax.GetLocalizedMessage(); string message2 = invalidSyntax.GetLocalizedMessage(new CultureInfo("ja"));
Normal loading of Message Strings
string message1 = NLS.GetLocalizedMessage(MessagesTest.Q0004E_Invalid_Syntax_Escape_Unicode_Truncation); string message2 = NLS.GetLocalizedMessage(MessagesTest.Q0004E_Invalid_Syntax_Escape_Unicode_Truncation, new CultureInfo("ja"));
The Lucene.Net.QueryParsers.Flexible.Messages.TestNLS NUnit test contains several other examples. The TestNLS C# code is available from the Apache Lucene.NET code repository.