Package org.apache.lucene.messages

For Native Language Support (NLS), system of software internationalization.


Interface Summary
Message Message Interface for a lazy loading.
NLSException Interface that exceptions should implement to support lazy loading of messages.

Class Summary
MessageImpl Default implementation of Message interface.
NLS MessageBundles classes extend this class, to implement a bundle.

Package org.apache.lucene.messages Description

For Native Language Support (NLS), system of software internationalization.

NLS message API

This utility API, adds support for NLS messages in the apache code. It is currently used by the lucene "New Flexible Query PArser".


  1. Message reference in the code, using static Strings
  2. Message resource validation at class load time, for easier debugging
  3. Allows for message IDs to be re-factored using eclipse or other code re-factor tools
  4. Allows for reference count on messages, just like code
  5. Lazy loading of Message Strings
  6. Normal loading Message Strings

Lazy loading of Message Strings

        public class MessagesTestBundle extends NLS {
          private static final String BUNDLE_NAME = MessagesTestBundle.class.getName();
          private MessagesTestBundle() {
            // should never be instantiated
          static {
            // register all string ids with NLS class and initialize static string
            // values
            NLS.initializeMessages(BUNDLE_NAME, MessagesTestBundle.class);
          // 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
    Message invalidSyntax = new MessageImpl(MessagesTestBundle.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(Locale.JAPANESE);

Normal loading of Message Strings

        String message1 = NLS.getLocalizedMessage(MessagesTestBundle.Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION);
        String message2 = NLS.getLocalizedMessage(MessagesTestBundle.Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION, Locale.JAPANESE);

The org.apache.lucene.messages.TestNLS junit contains several other examples. The TestNLS java code is available from the Apache Lucene code repository.

Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.