package org.openrosa.client.jr.core.services.locale; import java.util.HashMap; import org.openrosa.client.jr.core.reference.ReferenceDataSource; public class Localization { private static Localizer globalLocalizer; public static String get(String key){ return get(key, new String[]{}); } public static String get(String key, String[] args) { checkRep(); return globalLocalizer.getText(key, args); } public static String get(String key, HashMap args) { checkRep(); return globalLocalizer.getText(key, args); } public static void registerLanguageFile(String localeName, String resourceFileURI) { init(); if(!globalLocalizer.hasLocale(localeName)){ globalLocalizer.addAvailableLocale(localeName); } globalLocalizer.registerLocaleResource(localeName, new ResourceFileDataSource(resourceFileURI)); if(globalLocalizer.getDefaultLocale() == null) { globalLocalizer.setDefaultLocale(localeName); } } public static void registerLanguageReference(String localeName, String referenceUri) { init(); if(!globalLocalizer.hasLocale(localeName)){ globalLocalizer.addAvailableLocale(localeName); } globalLocalizer.registerLocaleResource(localeName, new ReferenceDataSource(referenceUri)); if(globalLocalizer.getDefaultLocale() == null) { globalLocalizer.setDefaultLocale(localeName); } } public static Localizer getGlobalLocalizerAdvanced() { init(); return globalLocalizer; } public static void setLocale(String locale) { checkRep(); globalLocalizer.setLocale(locale); } public static void setDefaultLocale(String defaultLocale) { checkRep(); globalLocalizer.setDefaultLocale(defaultLocale); } /** * */ private static void init() { if(globalLocalizer == null) { globalLocalizer = new Localizer(true,true); } } /** * */ private static void checkRep() { init(); if(globalLocalizer.getAvailableLocales().length == 0) { throw new LocaleTextException("There are no locales defined for the application. Please make sure to register locale text using the Locale.register() method"); } } }