I18NProvider.java
package info.textgrid.rep.i18n;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* Utility class to keep track of available and requested language.
*
* Available and default language are configured by lang.available
* and lang.default spring configuration properties. The translations
* are loaded from i18n/Language_xx.properties
*
* This class keeps the compatibility to jsp code accessing an
* i18n hashmap, which originated in porting
* JavaServerFaces el-i18n functionality.
*
* @author Ubbo Veentjer
*/
@Component
public class I18NProvider {
@Value("${lang.available}")
private List<String> langAvailable;
@Value("${lang.default}")
private String langDefault;
private HashMap<String, I18N> i18nMap = new HashMap<String, I18N>();
@PostConstruct
public void postConstruct() {
for (String lang : langAvailable) {
I18N i18n = new I18N(lang, I18NUtils.getTranslationMap(new Locale(lang)));
i18nMap.put(lang, i18n);
}
}
/**
* Get matching i18n object for a locale
*
* @param locale
* @return i18n object for a locale
*/
public I18N getI18N(Locale locale) {
Locale selectedLocale;
if(langAvailable.contains(locale.getLanguage())) {
selectedLocale = locale;
} else {
selectedLocale = new Locale(langDefault);
}
return i18nMap.get(selectedLocale.getLanguage());
}
public List<String> getLangAvailable() {
return langAvailable;
}
public void setLangAvailable(List<String> langAvailable) {
this.langAvailable = langAvailable;
}
public String getLangDefault() {
return langDefault;
}
public void setLangDefault(String langDefault) {
this.langDefault = langDefault;
}
}