package ddth.dasp.common.mls;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CascadeLanguageRegistry implements ILanguageRegistry {
private final Logger LOGGER = LoggerFactory.getLogger(CascadeLanguageRegistry.class);
private Map<Locale, CascadeLanguage> languages = new HashMap<Locale, CascadeLanguage>();
private boolean devMode = false;
public void setDevMode(boolean devMode) {
this.devMode = devMode;
}
public boolean isDevMode() {
return devMode;
}
/**
* {@inheritDoc}
*/
@Override
public void register(ILanguage language) {
Locale locale = language.getLocale();
String name = language.getName();
if (LOGGER.isDebugEnabled()) {
String msg = "Registering language pack [" + name + "] with locale [" + locale + "]...";
LOGGER.debug(msg);
}
CascadeLanguage cLanguage = getLanguage(locale);
if (cLanguage != null) {
cLanguage.add(name, language);
}
}
/**
* {@inheritDoc}
*/
@Override
public CascadeLanguage getLanguage(Locale locale) {
synchronized (languages) {
CascadeLanguage cLanguage = languages.get(locale);
if (cLanguage == null) {
cLanguage = new CascadeLanguage(locale, "");
try {
cLanguage.init();
} catch (Exception e) {
throw new RuntimeException(e);
}
languages.put(locale, cLanguage);
}
if (devMode) {
try {
cLanguage.init();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return cLanguage;
}
}
}