Resourcepublic abstract class Resource extends Object The Resource class retrieves the locale specific values such
as label strings and date formats from the locale specific
subclasses of com.sun.midp.i18n.ResourceBundle class.
The default locale is assumed to be en_US, meaning,
in the absence of any locale information being specified, en_US
will be assumed as the default locale.
A subclass of ResourceBundle namely,
com.sun.midp.l10n.LocalizedStrings
is the default localization file, for a default locale of en_US.
This also acts as a template for future localization and is
easily localizable. The new localized file created should be
accompanied with a locale name following an underscore: for
example, a German one would be named "LocalizedStrings_de".
In this way, as many related locale-specific classes as needed
can be provided.
The location of such locale-specific classes is expected to be
"com.sun.midp.l10n". |
Fields Summary |
---|
private static ResourceBundle | resLocal handle to the current Resource structure. |
Methods Summary |
---|
public static java.lang.String | getDateString(java.lang.String dayOfWeek, java.lang.String date, java.lang.String month, java.lang.String year)Returns a locale-specific formatted date string. By default,
it will return like "Fri, 05 Dec 2000".
return res.getLocalizedDateString(dayOfWeek,
date,
month,
year);
| public static java.lang.String | getDateTimeString(java.lang.String dayOfWeek, java.lang.String date, java.lang.String month, java.lang.String year, java.lang.String hour, java.lang.String min, java.lang.String sec, java.lang.String ampm)Returns a locale-specific formatted date and time string. By
default, it will like return "Fri, 05 Dec 2000 10:05:59 PM".
return res.getLocalizedDateTimeString(dayOfWeek, date,
month, year,
hour, min,
sec, ampm);
| public static int | getFirstDayOfWeek()Returns what the first day of the week is; e.g., Sunday in US,
Monday in France.
return res.getLocalizedFirstDayOfWeek();
| public static java.lang.String | getString(int key)Returns a localized string for the integer key.
res = null;
String loc = Configuration.getProperty("microedition.locale");
if ((loc == null) || (loc.equals("en-US"))) {
// the default case
res = (ResourceBundle) new LocalizedStrings();
} else {
String cls = "com.sun.midp.l10n.LocalizedStrings";
/*
* This only checks for the first '-' in the locale, and
* convert to '_' for Class.forName() to work.
*/
int hyphen;
if ((hyphen = loc.indexOf('-")) != -1) {
StringBuffer tmploc = new StringBuffer(loc);
tmploc.setCharAt(hyphen, '_");
loc = tmploc.toString();
}
while (true) {
try {
Class c = Class.forName(cls + "_" + loc);
res = (ResourceBundle) c.newInstance();
} catch (Throwable t) {}
if (res == null) {
int pos = loc.lastIndexOf('_");
if (pos != -1) {
loc = loc.substring(0, pos);
} else {
break;
}
} else {
break;
}
}
}
if (res == null) {
if (Logging.REPORT_LEVEL <= Logging.ERROR) {
Logging.report(Logging.ERROR, LogChannels.LC_I18N,
"Just can't proceed! Resource is NULL!!");
}
// Porting suggestion:
// System should quit MIDP runtime since resource is
// not available.
}
return res.getString(key);
| public static java.lang.String | getString(int key, java.lang.String[] values)Returns a localized string for the argument string after substituting
values for the "%d" tokens in the localized string, where "d" is 1-9
and representing a values 0-8 in an array. The tokens can be in any
order in the string. If the localized String is not found
the key is used as the localized string. If a "%" is not followed by
1-9 then the "%" is dropped but the next char is put directly into the
output string, so "%%" will be "%" in the output and not count as part
of a token. Another example would be that "%a" would be just be "a".
For example, given "%2 had a little %1." and {"lamb", "Mary"} and there
is no localized string for the key, the result would be:
"Mary had a little lamb."
boolean tokenMarkerFound = false;
StringBuffer output;
char currentChar;
int length;
String str = getString(key);
if (str == null) {
return null;
}
length = str.length();
output = new StringBuffer(length * 2); // try to avoid resizing
for (int i = 0; i < length; i++) {
currentChar = str.charAt(i);
if (tokenMarkerFound) {
if (currentChar < '1" || currentChar > '9") {
// covers the "%%" case
output.append(currentChar);
} else {
// substitute a value, "1" is index 0 into the value array
output.append(values[currentChar - '1"]);
}
tokenMarkerFound = false;
} else if (currentChar == '%") {
tokenMarkerFound = true;
} else {
output.append(currentChar);
}
}
return output.toString();
| public static java.lang.String | getTimeString(java.lang.String hour, java.lang.String min, java.lang.String sec, java.lang.String ampm)Returns a locale-specific formatted time string. By default,
it will return like "10:05:59 PM".
return res.getLocalizedTimeString(hour, min, sec, ampm);
| public static boolean | isAMPMafterTime()Returns whether the AM_PM field comes after the time field
or not.
return res.isLocalizedAMPMafterTime();
|
|