package org.smartly.packages.velocity.impl.vtools.lang; import org.smartly.Smartly; import org.smartly.commons.util.LocaleUtils; import org.smartly.commons.util.StringUtils; import java.util.HashMap; import java.util.Map; /** * */ public final class VLCI18n { // ------------------------------------------------------------------------ // f i e l d s // ------------------------------------------------------------------------ private final Map<String, VLCObject> _i18n; private String _lang; // current language private String _def_lang; // default language // ------------------------------------------------------------------------ // c o n s t r u c t o r // ------------------------------------------------------------------------ public VLCI18n() { this("", ""); } public VLCI18n(final String lang) { this(lang, ""); } public VLCI18n(final String lang, final String def_lang) { _i18n = new HashMap<>(); _def_lang = StringUtils.hasText(def_lang) ? getLang(def_lang) : Smartly.getLang(); _lang = StringUtils.hasText(lang) ? getLang(lang) : _def_lang; } public void setDefaultLang(final String value) { _def_lang = getLang(value); } public void use(final String value) { _lang = getLang(value); } // ------------------------------------------------------------------------ // p u b l i c // ------------------------------------------------------------------------ public Object get(final String key) { if (this.getDictionary(_lang).containsKey(key)) { return this.getDictionary(_lang).get(key); } return this.getDictionary(_def_lang).get(key); } public String getString(final String key) { if (this.getDictionary(_lang).containsKey(key)) { return this.getDictionary(_lang).getString(key); } return this.getDictionary(_def_lang).getString(key); } public double getDouble(final String key) { if (this.getDictionary(_lang).containsKey(key)) { return this.getDictionary(_lang).getDouble(key); } return this.getDictionary(_def_lang).getDouble(key); } public int getInt(final String key) { if (this.getDictionary(_lang).containsKey(key)) { return this.getDictionary(_lang).getInt(key); } return this.getDictionary(_def_lang).getInt(key); } public boolean getBoolean(final String key) { if (this.getDictionary(_lang).containsKey(key)) { return this.getDictionary(_lang).getBoolean(key); } return this.getDictionary(_def_lang).getBoolean(key); } public void put(final String key, final Object value) { this.getDictionary(_lang).put(key, value); } // ------------------------------------------------------------------------ // u t i l i t y // ------------------------------------------------------------------------ public boolean equals(final String lang1, final String lang2) { return LocaleUtils.like(lang1, lang2); } // ------------------------------------------------------------------------ // p r i v a t e // ------------------------------------------------------------------------ private VLCObject getDictionary(final String lang) { if (!_i18n.containsKey(lang)) { _i18n.put(lang, new VLCObject()); } return _i18n.get(lang); } private String getLang(final String raw) { return LocaleUtils.getLocaleFromString(raw).getLanguage(); } }