if (null == locale) locale = I18N.locale(template);
RythmEngine engine = null == template ? RythmEngine.get() : template.__engine();
String cacheKey = null;
if (null != template && null != locale) {
cacheKey = CacheKey.i18nMsg(template, key, useFormat, locale);
Object cached = engine.cached(cacheKey);
if (S.notEmpty(cached)) return S.str(cached);
}
ResourceBundle bundle;
for (String msgSrc: RythmConfiguration.get().messageSources()) {
bundle = I18N.bundle(template, msgSrc, locale);