]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java
Fix regression with webdav upload
[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 import org.argeo.eclipse.ui.specific.UiContext;
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,
25 ClassLoader classLoader) {
26 ResourceBundle rb = ResourceBundle.getBundle(resource, locale,
27 classLoader);
28 return rb.getString(en.name());
29 }
30
31 public static String lead(String raw, Locale locale) {
32 return raw.substring(0, 1).toUpperCase(locale) + raw.substring(1);
33 }
34
35 public static String lead(Localized localized) {
36 return lead(localized, getCurrentLocale());
37 }
38
39 public static String lead(Localized localized, Locale locale) {
40 return lead(localized.local(locale).toString(), locale);
41 }
42
43 static Locale getCurrentLocale() {
44 return UiContext.getLocale();
45 }
46
47 /** Returns null if argument is null. */
48 public static List<Locale> asLocaleList(Object locales) {
49 if (locales == null)
50 return null;
51 ArrayList<Locale> availableLocales = new ArrayList<Locale>();
52 String[] codes = locales.toString().split(",");
53 for (int i = 0; i < codes.length; i++) {
54 String code = codes[i];
55 // variant not supported
56 int indexUnd = code.indexOf("_");
57 Locale locale;
58 if (indexUnd > 0) {
59 String language = code.substring(0, indexUnd);
60 String country = code.substring(indexUnd + 1);
61 locale = new Locale(language, country);
62 } else {
63 locale = new Locale(code);
64 }
65 availableLocales.add(locale);
66 }
67 return availableLocales;
68 }
69 }