public interface Constants extends LocalizableResource
GWT.create(class) to "instantiate" an
interface that extends Constants returns an instance of an automatically generated
subclass that is implemented using values from a property file selected based on locale.
Locale is specified at run time using a meta tag or query string as described for Localizable.
ConstantsConstants, begin by defining an interface that extends it. Each interface
method is referred to as a constant accessor, and its corresponding localized value is
loaded based on the key for that method. The default key is simply the unqualified name of the
method, but can be specified directly with an @Key annotation or a different generation
method using @GenerateKeys. Also, the default value can be specified in an annotation
rather than a default properties file (and some key generators may require the value to be given
in the source file via annotations). For example,
expects to find properties named decimalSeparator and thousandsSeparator
in an associated properties file. For example, the following properties would be used for
a German locale:
The following example demonstrates how to use constant accessors defined in the interface above:
Here is the same example using annotations to store the default values:
It is also possible to change the property name bound to a constant accessor using the
@Key annotation. For example,
would match the names of the following properties:
T methodName()where
T is one of the return types in the following table:
| The property value is interpreted as... | Annotation to use for default value | |
|---|---|---|
String |
A plain string value | @DefaultStringValue |
String[] |
A comma-separated array of strings; use '\\,' to escape
commas |
@DefaultStringArrayValue |
int |
An int value, checked during compilation |
@DefaultIntValue |
float |
A float value, checked during compilation |
@DefaultFloatValue |
double |
A double value, checked during compilation |
@DefaultDoubleValue |
boolean |
A boolean value ("true" or "false"), checked during
compilation |
@DefaultBooleanValue |
Map |
A comma-separated list of property names, each of which is a key into a generated map; the value mapped to given key is the value of the property having named by that key | @DefaultStringMapValue |
As an example of a Map, for the following property file:
a = X b = Y c = Z someMap = a, b, c
the constant accessor someMap() would return a Map that maps
"a" onto "X", "b" onto "Y", and "c"
onto "Z". Iterating through this Map will return the keys or entries in
declaration order.
The benefit of using annotations, aside from not having to switch to a different file to enter the default values, is that you can make use of compile-time constants and not worrying about quoting commas. For example:
org.example.foo.Intf extends Constants and the
following code is used to create an object from Intf as follows:
Intf constants = (Intf)GWT.create(Intf.class);then
constants will be assigned an instance of a generated class whose constant
accessors are implemented by extracting values from a set of matching properties files. Property
values are sought using a best-match algorithm, and candidate properties files are those which
(1) reside in the same package as the interface (org/example/foo/), (2) have a base
filename matching the interface name (Intf), and (3) have a suffix that most closely
matches the locale. Suffixes are matched as follows:
locale is... |
The properties file that binds to
org.example.foo.Intf is... |
|---|---|
| unspecified | org/example/foo/Intf.properties |
x |
org/example/foo/Intf_x.properties if it exists and
defines the property being sought, otherwise treated as if
locale were unspecified |
x_Y |
org/example/foo/Intf_x_Y.properties if it exists and
defines the property being sought, otherwise treated as if
locale were x |
x and Y are language and locale codes, as described in the
documentation for Localizable. Note that default values
supplied in the source file in annotations take precedence over those in the default properties
file, if it is also present.
Note that the matching algorithm is applied independently for each constant accessor. It is therefore possible to create a hierarchy of related properties files such that an unlocalized properties file acts as a baseline, and locale-specific properties files may redefine a subset of those properties, relying on the matching algorithm to prefer localized properties while still finding unlocalized properties.
org.gwtproject.i18n.I18N.
| Modifier and Type | Interface and Description |
|---|---|
static interface |
Constants.DefaultBooleanValue
Default boolean value to be used if no translation is found (and also used as the source for
translation).
|
static interface |
Constants.DefaultDoubleValue
Default double value to be used if no translation is found (and also used as the source for
translation).
|
static interface |
Constants.DefaultFloatValue
Default float value to be used if no translation is found (and also used as the source for
translation).
|
static interface |
Constants.DefaultIntValue
Default integer value to be used if no translation is found (and also used as the source for
translation).
|
static interface |
Constants.DefaultStringArrayValue
Default string array value to be used if no translation is found (and also used as the source
for translation).
|
static interface |
Constants.DefaultStringMapValue
Default string map value to be used if no translation is found (and also used as the source for
translation).
|
static interface |
Constants.DefaultStringValue
Default string value to be used if no translation is found (and also used as the source for
translation).
|
LocalizableResource.DefaultLocale, LocalizableResource.Description, LocalizableResource.Generate, LocalizableResource.GeneratedFrom, LocalizableResource.GenerateKeys, LocalizableResource.Key, LocalizableResource.MeaningLocalizable.I18nLocaleSuffuxes, Localizable.IsLocalizableCopyright © 2018–2020. All rights reserved.