All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.oasis_eu.spring.kernel.model.util.LocalizedString Maven / Gradle / Ivy

package org.oasis_eu.spring.kernel.model.util;

import com.ibm.icu.util.ULocale;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;

public class LocalizedString {
	
	private static final ResourceBundle.Control NO_FALLBACK_CONTROL = ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_DEFAULT);
	
	private final Map localizedStrings;
	
	public LocalizedString(String rootValue) {
		this();
		setLocalizedString(ULocale.ROOT.toLocale(), rootValue);
	}
	
	public LocalizedString() {
		this(new HashMap<>());
	}
	
	public LocalizedString(LocalizedString src) {
		this(new HashMap<>(src.localizedStrings));
	}
	
	protected LocalizedString(Map values) {
		this.localizedStrings = values;
	}

	public String getLocalizedString(String locale){
		return getLocalizedString(new Locale(locale));
	}
	
	public String getLocalizedString(Locale locale) {
		ULocale uLocale = ULocale.addLikelySubtags(ULocale.forLocale(locale));
		for (Locale candidateLocale : NO_FALLBACK_CONTROL.getCandidateLocales("", uLocale.toLocale())) {
			String value = getValue(ULocale.forLocale(candidateLocale))	;
			if (value != null) {
				return value;
			}
		}
		return null;
	}

	private String getValue(ULocale locale){
		for (Map.Entry entry : localizedStrings.entrySet())
		{
			if(entry.getKey().equals(locale)){
			  return entry.getValue();
			}
		}
		return null;
	}

	public void  setLocalizedString(String locale, String localizedValue){
		setLocalizedString(new Locale(locale), localizedValue);
	}
	
	public void setLocalizedString(Locale locale, String localizedValue) {
		localizedStrings.put(ULocale.forLocale(locale), localizedValue);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy