The initialization code below in webGateway/controllers/Nav.java fails in Japan locale.
private static final PrettyTime prettyTime = new PrettyTime();
static {
prettyTime.removeUnit(JustNow.class);
ResourcesTimeUnit justNow = new ResourcesTimeUnit() {
{
setMaxQuantity(10000);
}
@Override
protected String getResourceKeyPrefix() {
return "JustNow";
}
};
prettyTime.registerUnit(justNow, new ResourcesTimeFormat(justNow));
}
to reproduce it ,we can just change the first line to
PrettyTime prettyTime = new PrettyTime(Locale.JAPAN);
It will fail with the following exception:
Exception in thread "main" java.util.MissingResourceException: Can't find resource for bundle org.ocpsoft.prettytime.i18n.Resources, key Pattern
at java.util.ResourceBundle.getObject(ResourceBundle.java:450)
at java.util.ResourceBundle.getObject(ResourceBundle.java:444)
at java.util.ResourceBundle.getString(ResourceBundle.java:407)
at org.ocpsoft.prettytime.i18n.Resources_ja$JaTimeFormat.(Resources_ja.java:148)
at org.ocpsoft.prettytime.i18n.Resources_ja.getFormatFor(Resources_ja.java:117)
at org.ocpsoft.prettytime.impl.ResourcesTimeFormat.setLocale(ResourcesTimeFormat.java:34)
at org.ocpsoft.prettytime.impl.ResourcesTimeFormat.setLocale(ResourcesTimeFormat.java:16)
at org.ocpsoft.prettytime.PrettyTime.registerUnit(PrettyTime.java:472)
this is because the getUnitName(TimeUnit) method of JaTimeFormat class cannot properly get the unit name in case of anonymous TimeUnit class(An empty string is returned).
private String getUnitName(TimeUnit unit) {
return unit.getClass().getSimpleName();
}