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