|
|||||||||
| PREV NEXT | FRAMES NO FRAMES | ||||||||
See:
Description
| Packages | |
|---|---|
| com.github.fge.msgsimple | |
| com.github.fge.msgsimple.bundle | Main class; property-based bundle provider |
| com.github.fge.msgsimple.load | Automatic message bundle loading support |
| com.github.fge.msgsimple.locale | Locale utilities |
| com.github.fge.msgsimple.provider | Message source provider interface and implementations |
| com.github.fge.msgsimple.source | Message sources |
This package is an alternative to the JDK's ResourceBundle
with the following characteristics:
ResourceBundle;Formatter support, in addition to MessageFormat support;If you wish to reuse an existing ResourceBundle, the class
you will use is PropertiesBundle. It
contains static factory methods to provide a ready-to-use MessageBundle:
// Load a properties bundle using UTF-8 and no expiry
final MessageBundle bundle = PropertiesBundle.forPath("path/to/messages");
// Load a properties bundle using UTF-8 and an expiry of 15 minutes
final MessageBundle bundle = PropertiesBundle.forPath("path/to/messages",
15L, TimeUnit.MINUTES);
// Load a legacy resource bundle (ISO-8859-1 charset, no expiry)
final MessageBundle bundle
= PropertiesBundle.legacyResourceBundle("path/to/messages");
You are now ready to print out messages:
// Message using the default locale
bundle.getMessage("message.key");
// Message using an alternative locale
bundle.getMessage(Locale.CANADA, "message.key");
bundle.getMessage(LocaleUtils.parseLocale("it_IT_sicily", "message.key");
// message using a Formatter
bundle.printf("message.key", arg1, arg2);
// message using MessageFormat
bundle.format("message.key", arg1, arg2);
// etc etc
You can also use preconditions:
// Checks the reference for null; throws NullPointerException if it is;
final MyClass obj = bundle.checkNotNull(ref, "err.nullMyClass");
// Checks whether the condition is true; throws IllegalArgumentException
// otherwise
bundle.checkArgumentPrintf(something.isOk(), "err.something.notOk", arg1,
arg2);
The API is very simple to extend. There are two interfaces:
MessageSource represents a
message source;MessageSourceProvider
represents a related set of message sources;MessageSourceLoader represents
an on-demand loader for dynamic message sources.This library provides two message source implementations: MapMessageSource is a "quickpatch" source
backed by a Map, and PropertiesMessageSource, which reads a property
file using the encoding of your choice.
It also provides two implementations of message source providers: StaticMessageSourceProvider (static,
unchanging message sources) and LoadingMessageSourceProvider (on-demand
loading). Using the latter, you can specify an expiry time and a loading
timeout.
If you have several message bundles and don't want to create a singleton just
to distribute them across several classes, you can instead provide an
implementation of MessageBundleLoader.
When you need to access this bundle, from anywhere in your code, you can then
use the MessageBundles class, which will
take care of instantiating the loader and provide you with the bundle:
private static final MessageBundle BUNDLE
= MessageBundles.getBundle(MyBundleLoader.class);
|
|||||||||
| PREV NEXT | FRAMES NO FRAMES | ||||||||