X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FLocaleUtils.java;fp=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FLocaleUtils.java;h=c6c932bf8c08c3cb7d0665f2dd2f6e53aff944ba;hb=810aecacb19916bade7e4bcfcbbb54c301f672df;hp=0000000000000000000000000000000000000000;hpb=ca59ec5bdf16364159d8d826306c90762192e12c;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/LocaleUtils.java b/org.argeo.cms/src/org/argeo/cms/LocaleUtils.java new file mode 100644 index 000000000..c6c932bf8 --- /dev/null +++ b/org.argeo.cms/src/org/argeo/cms/LocaleUtils.java @@ -0,0 +1,70 @@ +package org.argeo.cms; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; + +import org.argeo.cms.auth.CurrentUser; + +/** Utilities simplifying the development of localization enums. */ +public class LocaleUtils { + public static Object local(Enum en) { + return local(en, getCurrentLocale(), "/OSGI-INF/l10n/bundle"); + } + + public static Object local(Enum en, Locale locale) { + return local(en, locale, "/OSGI-INF/l10n/bundle"); + } + + public static Object local(Enum en, Locale locale, String resource) { + return local(en, locale, resource, en.getClass().getClassLoader()); + } + + public static Object local(Enum en, Locale locale, String resource, ClassLoader classLoader) { + ResourceBundle rb = ResourceBundle.getBundle(resource, locale, classLoader); + return rb.getString(en.name()); + } + + public static String lead(String raw, Locale locale) { + return raw.substring(0, 1).toUpperCase(locale) + raw.substring(1); + } + + public static String lead(Localized localized) { + return lead(localized, getCurrentLocale()); + } + + public static String lead(Localized localized, Locale locale) { + return lead(localized.local(locale).toString(), locale); + } + + static Locale getCurrentLocale() { + return CurrentUser.locale(); + // return UiContext.getLocale(); + // FIXME look into Subject or settings + // return Locale.getDefault(); + } + + /** Returns null if argument is null. */ + public static List asLocaleList(Object locales) { + if (locales == null) + return null; + ArrayList availableLocales = new ArrayList(); + String[] codes = locales.toString().split(","); + for (int i = 0; i < codes.length; i++) { + String code = codes[i]; + // variant not supported + int indexUnd = code.indexOf("_"); + Locale locale; + if (indexUnd > 0) { + String language = code.substring(0, indexUnd); + String country = code.substring(indexUnd + 1); + locale = new Locale(language, country); + } else { + locale = new Locale(code); + } + availableLocales.add(locale); + } + return availableLocales; + } +}