Package org.nuiton.i18n
Class I18n
- java.lang.Object
-
- org.nuiton.i18n.I18n
-
public class I18n extends Object
New generation I18n class. Note: This class replace the previous one in projectnuiton-utils
. This class is a facility for internationalization. To use it in your soft, you can either :- import the org.nuiton.i18n.I18n class,
- init the translation support with the init(String language) or init(String language, String country), init(Localelocale) static methods in your main, ( eg: I18n.init("fr","FR") )
- call the translate static method for each sentence, ( eg: I18n.l("hello you !") )
- create a resource file for each language following the naming convention given in the java.util.ResourceBundle javadoc and translate all the sentence.
- Since:
- 1.1
- Author:
- Tony Chemit - chemit@codelutin.com
-
-
Field Summary
Fields Modifier and Type Field Description protected static I18nFilter
filter
Filtre a appliquer avant de retourner les chainesprotected static I18nInitializer
initializer
Deprecated.since 2.1, will be removed in version 3.0, in stead use the methodinit(I18nInitializer, Locale)
which will pass directly the initializer to the store.protected static I18nMessageFormatter
messageFormatter
Formatter to apply on each translation.protected static I18nStore
store
I18n store of languages
-
Constructor Summary
Constructors Constructor Description I18n()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected static String
applyFilter(String message)
Applique le filtre s'il y en a unprotected static void
checkInit()
Checks if the I18n was initialized and if not as a fall-back, init it with default initializer and default locale.static void
close()
Close i18n caches, says the store if exists.protected static I18nLanguage
getCurrentLanguage()
Obtain the registred language from the store.protected static I18nInitializer
getDefaultInitializer()
static Locale
getDefaultLocale()
Obtain the default locale setted in I18n.protected static I18nFilter
getFilter()
protected static I18nLanguage
getLanguage(Locale locale)
Obtain the language for the givenlocale
.static I18nMessageFormatter
getMessageFormatter()
static I18nStore
getStore()
Get the i18n store.static boolean
hasKey(String message)
Look into the defaultI18nLanguage
if the givenmessage
can be found.static boolean
hasKey(Locale locale, String message)
static void
init(I18nInitializer initializer, Locale locale)
Initialize I18n system.protected static void
initStore(I18nInitializer initializer, Locale locale)
Init the store with given parameters and set the current language in the store to the default givenlocale
.static String
l(Locale locale, String message, Object... args)
Retourne la chaine traduite si possible dans la locale demandée.static String
l_(Locale locale, String message, Object... args)
Deprecated.since 2.9, will be removed soon or later, prefer use now methodl(Locale, String, Object...)
static String
n(String message, Object... args)
Retourne la chaine passée en argument.static String
n_(String message, Object... args)
Deprecated.since 2.9, will be removed soon or later, prefer use now methodn(String, Object...)
static void
reload()
static void
setDefaultLocale(Locale locale)
Sets the default locale used by I18n for the methodt(String, Object...)
.static void
setFilter(I18nFilter filter)
Change le filtre des chaines traduitesstatic String
t(String message, Object... args)
Retourne la chaine traduite si possible.
-
-
-
Field Detail
-
initializer
@Deprecated protected static I18nInitializer initializer
Deprecated.since 2.1, will be removed in version 3.0, in stead use the methodinit(I18nInitializer, Locale)
which will pass directly the initializer to the store.I18n initializer,
-
store
protected static I18nStore store
I18n store of languages
-
filter
protected static I18nFilter filter
Filtre a appliquer avant de retourner les chaines
-
messageFormatter
protected static I18nMessageFormatter messageFormatter
Formatter to apply on each translation. This formatter can not be configured directly here, but must be setted into theinitializer
used to configure the I18n system.- Since:
- 2.4
- See Also:
I18nInitializer.setMessageFormatter(I18nMessageFormatter)
-
-
Method Detail
-
setFilter
public static void setFilter(I18nFilter filter)
Change le filtre des chaines traduites- Parameters:
filter
- l'objet filtre a utiliser
-
init
public static void init(I18nInitializer initializer, Locale locale)
Initialize I18n system. Theinitializer
can be null, in that case it will use the default implementation of it given by the methodgetDefaultInitializer()
. Thelocale
can also be null, and in that case we will use the default locale of the system given by the methodLocale.getDefault()
. We strongly recommand not to use the default initializer, since this one scanq all the class-path to detects i18n files and can NOT garantee the order of loading such files. Prefer use at least theDefaultI18nInitializer
instead. In version 3.0, we will try to make theDefaultI18nInitializer
the default initializer using a convention over i18n files names.- Parameters:
initializer
- the initializer to use to detect bundleslocale
- the default locale to use- Since:
- 2.1
-
reload
public static void reload()
-
setDefaultLocale
public static void setDefaultLocale(Locale locale)
Sets the default locale used by I18n for the methodt(String, Object...)
. * As a side effect, it will also set this locale is the default locale in the system (says the methodLocale.getDefault()
will return the given locale). Note : The I18n system must have been initialized by one of theinit
method.- Parameters:
locale
- the new default locale.- Since:
- 2.1
-
getDefaultLocale
public static Locale getDefaultLocale()
Obtain the default locale setted in I18n. This very locale is used in translation when no locale information is given (says in methodt(String, Object...)
. Note : The I18n system must have been initialized by one of theinit
method.- Returns:
- the default locale initialized in I18n
-
hasKey
public static boolean hasKey(String message)
Look into the defaultI18nLanguage
if the givenmessage
can be found.- Parameters:
message
- the message to check presence- Returns:
- true/false whether the message is present in the default language
- Since:
- 2.4.1
- See Also:
getDefaultLocale()
,hasKey(java.util.Locale, String)
-
hasKey
public static boolean hasKey(Locale locale, String message)
- Parameters:
locale
- the locale to be used to get the I18nLanguagemessage
- the message to check presence- Returns:
- true/false whether the message is present for the given locale
- Since:
- 2.4.1
-
l_
@Deprecated public static String l_(Locale locale, String message, Object... args)
Deprecated.since 2.9, will be removed soon or later, prefer use now methodl(Locale, String, Object...)
Retourne la chaine traduite si possible dans la locale demandée.- Parameters:
locale
- la locale dans lequel on souhaite la traductionmessage
- message formate avecI18nMessageFormatter
args
- les parametres pour le message.- Returns:
- la traduction si possible ou la chaine passee en parametre sinon.
- Since:
- 2.1
-
l
public static String l(Locale locale, String message, Object... args)
Retourne la chaine traduite si possible dans la locale demandée.- Parameters:
locale
- la locale dans lequel on souhaite la traductionmessage
- message formate avecI18nMessageFormatter
args
- les parametres pour le message.- Returns:
- la traduction si possible ou la chaine passee en parametre sinon.
- Since:
- 2.1
-
t
public static String t(String message, Object... args)
Retourne la chaine traduite si possible.- Parameters:
message
- message formate avecI18nMessageFormatter
args
- les parametres pour le message.- Returns:
- la traduction si possible ou la chaine passee en parametre sinon.
-
n_
@Deprecated public static String n_(String message, Object... args)
Deprecated.since 2.9, will be removed soon or later, prefer use now methodn(String, Object...)
Retourne la chaine passée en argument. Utile surtout pour collecter les chaines et ne pas les traduires à leur apparition. Par exemple :String key = "nuitonutils.key"; String result = l(key)
fonctionnera, mais la chaine n'aura pas été marquée comme devant être internationalisé. Tres utile par exemple, pour crée des objets non internationnalisé, et devant être traduit seulement à leur lecture suivant la locale du lecteur et non du créateur.- Parameters:
message
- message formate avecI18nMessageFormatter
args
- les parametres pour le message.- Returns:
- le message passe en argument mais formatté avec les parametres
-
n
public static String n(String message, Object... args)
Retourne la chaine passée en argument. Utile surtout pour collecter les chaines et ne pas les traduires à leur apparition. Par exemple :String key = "nuitonutils.key"; String result = l(key)
fonctionnera, mais la chaine n'aura pas été marquée comme devant être internationalisé. Tres utile par exemple, pour crée des objets non internationnalisé, et devant être traduit seulement à leur lecture suivant la locale du lecteur et non du créateur.- Parameters:
message
- message formate avecI18nMessageFormatter
args
- les parametres pour le message.- Returns:
- le message passe en argument mais formatté avec les parametres
-
close
public static void close()
Close i18n caches, says the store if exists. This method should be called to reset all caches (languages, bundles,...)
-
getStore
public static I18nStore getStore()
Get the i18n store. If store is not init, then instanciate it.- Returns:
- the instanciated i18n store
-
applyFilter
protected static String applyFilter(String message)
Applique le filtre s'il y en a un- Parameters:
message
- le message qui devrait etre retourne avant application du filtre.- Returns:
- le message filtre
-
getCurrentLanguage
protected static I18nLanguage getCurrentLanguage()
Obtain the registred language from the store. If no language were registred in the store, then use the language with the default locale of the store.- Returns:
- the current language of the store, or the default one if store is not init.
-
getLanguage
protected static I18nLanguage getLanguage(Locale locale)
Obtain the language for the givenlocale
. If locale isnull
, it means we wants to use the language registred in the store. As a fallback if this language is not defined, we use the language of the default locale of the store.- Parameters:
locale
- the required locale ornull
if we wants to use the one from the store- Returns:
- the language associated with the given locale.
- Since:
- 2.1
-
getFilter
protected static I18nFilter getFilter()
-
getMessageFormatter
public static I18nMessageFormatter getMessageFormatter()
-
initStore
protected static void initStore(I18nInitializer initializer, Locale locale) throws NullPointerException
Init the store with given parameters and set the current language in the store to the default givenlocale
. All values must be nonenull
.- Parameters:
initializer
- the initializer to use to detect bundleslocale
- the default locale to set in the store- Throws:
NullPointerException
- if any parameter isnull
-
getDefaultInitializer
protected static I18nInitializer getDefaultInitializer()
-
checkInit
protected static void checkInit()
Checks if the I18n was initialized and if not as a fall-back, init it with default initializer and default locale. It could not works for you... A call to the methodinit(I18nInitializer, Locale)
is mandatory if you want to be safe.- Since:
- 2.1
-
-