]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java
Improve SSL testing
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / i18n / LocaleUtils.java
1 package org.argeo.cms.i18n;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Locale;
6 import java.util.ResourceBundle;
7
8 /** Utilities simplifying the development of localization enums. */
9 public class LocaleUtils {
10 public static Object local(Enum<?> en) {
11 return local(en, getCurrentLocale(), "/OSGI-INF/l10n/bundle");
12 }
13
14 public static Object local(Enum<?> en, Locale locale) {
15 return local(en, locale, "/OSGI-INF/l10n/bundle");
16 }
17
18 public static Object local(Enum<?> en, Locale locale, String resource) {
19 return local(en, locale, resource, en.getClass().getClassLoader());
20 }
21
22 public static Object local(Enum<?> en, Locale locale, String resource, ClassLoader classLoader) {
23 ResourceBundle rb = ResourceBundle.getBundle(resource, locale, classLoader);
24 return rb.getString(en.name());
25 }
26
27 public static String lead(String raw, Locale locale) {
28 return raw.substring(0, 1).toUpperCase(locale) + raw.substring(1);
29 }
30
31 public static String lead(Localized localized) {
32 return lead(localized, getCurrentLocale());
33 }
34
35 public static String lead(Localized localized, Locale locale) {
36 return lead(localized.local(locale).toString(), locale);
37 }
38
39 static Locale getCurrentLocale() {
40 // return UiContext.getLocale();
41 // FIXME look into Subject or settings
42 return Locale.getDefault();
43 }
44
45 /** Returns null if argument is null. */
46 public static List<Locale> asLocaleList(Object locales) {
47 if (locales == null)
48 return null;
49 ArrayList<Locale> availableLocales = new ArrayList<Locale>();
50 String[] codes = locales.toString().split(",");
51 for (int i = 0; i < codes.length; i++) {
52 String code = codes[i];
53 // variant not supported
54 int indexUnd = code.indexOf("_");
55 Locale locale;
56 if (indexUnd > 0) {
57 String language = code.substring(0, indexUnd);
58 String country = code.substring(indexUnd + 1);
59 locale = new Locale(language, country);
60 } else {
61 locale = new Locale(code);
62 }
63 availableLocales.add(locale);
64 }
65 return availableLocales;
66 }
67 }