Package org.datanucleus.util
Class Localiser
java.lang.Object
org.datanucleus.util.Localiser
Localiser for messages in the DataNucleus system.
Provides access to a singleton, via the
getInstancemethod. Any plugin that provides its own resources via a properties file should call
Localiser.registerBundle(...)before the resources are required to be used.
The DataNucleus system is internationalisable hence messages (to log files or exceptions) can be displayed in multiple languages. Currently DataNucleus contains localisation files in the English and Spanish, but can be extended easily by adding localisation files in languages such as French, etc. The internationalisation operates around a Java ResourceBundle, loading a properties file. Messages are output via calling
Localiser.msg("012345", args);The messages themselves are contained in a file for each package. For example, with the above example, we have "org.datanucleus.Localisation.properties". This contains entries such as
012345=Initialising Schema "{0}" using "{1}" auto-start optionSo the 2 parameters specified in the
Localiser.msg(...)call are inserted into the message.
Extending for other languages
The language-specific parts are always contained in the Localisation.properties file. To extend the current system to internationalise in, for example, French you would add a file "org.datanucleus.Localisation_fr.properties" and add entries with the required French text. If you want to extend this to another language and contribute the files for your language you need to find all files "Localisation.properties" and provide an alternative variant, raise an issue, and attach your patch to the issue.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static boolean
Convenience flag whether to display numbers in messages.private static Locale
private static Map
<String, MessageFormat> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static final String
getMessage
(String messageKey, Object... msgArgs) Method to provide the MessageFormat logic.static String
Message formatter for an internationalised message.static String
Message formatter with one argument passed in that will be embedded in an internationalised message.static String
Message formatter with arguments passed in that will be embedded in an internationalised message.static void
registerBundle
(String bundleName, ClassLoader loader) Method to be called by plugins that have their own ResourceBundle, so the messages will be registered and available for use.
-
Field Details
-
locale
-
displayCodesInMessages
private static boolean displayCodesInMessagesConvenience flag whether to display numbers in messages. -
properties
-
msgFormats
-
-
Constructor Details
-
Localiser
public Localiser()
-
-
Method Details
-
registerBundle
Method to be called by plugins that have their own ResourceBundle, so the messages will be registered and available for use.- Parameters:
bundleName
- Name of the bundle e.g "org.datanucleus.store.myplugin.Localisation"loader
- Loader for the bundle
-
msg
Message formatter for an internationalised message.- Parameters:
messageKey
- the message key- Returns:
- the resolved message text
-
msg
Message formatter with one argument passed in that will be embedded in an internationalised message.- Parameters:
messageKey
- the message keyarg
- the long argument- Returns:
- the resolved message text
-
msg
Message formatter with arguments passed in that will be embedded in an internationalised message.- Parameters:
messageKey
- the message keyargs
- the arguments- Returns:
- the resolved message text
-
getMessage
Method to provide the MessageFormat logic. All of the msg() methods are wrappers to this one.- Parameters:
messageKey
- the message keymsgArgs
- an array of arguments to substitute into the message- Returns:
- the resolved message text
-