]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java
Improve social networking
[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.Locale;
4 import java.util.ResourceBundle;
5
6 import org.argeo.eclipse.ui.specific.UiContext;
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,
23 ClassLoader classLoader) {
24 ResourceBundle rb = ResourceBundle.getBundle(resource, locale,
25 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 UiContext.getLocale();
43 }
44 // private String id;
45 // private ClassLoader classLoader;
46 // private final Object defaultLocal;
47 //
48 // public Msg() {
49 // defaultLocal = null;
50 // }
51 //
52 // public Msg(Object defaultMessage) {
53 // this.defaultLocal = defaultMessage;
54 // }
55 //
56 // public String getId() {
57 // return id;
58 // }
59 //
60 // public void setId(String id) {
61 // this.id = id;
62 // }
63 //
64 // public ClassLoader getClassLoader() {
65 // return classLoader;
66 // }
67 //
68 // public void setClassLoader(ClassLoader classLoader) {
69 // this.classLoader = classLoader;
70 // }
71 //
72 // public Object getDefault() {
73 // return defaultLocal;
74 // }
75 //
76 // public String toString() {
77 // return local().toString();
78 // }
79 //
80 // /** When used as the first word of a sentence. */
81 // public String lead() {
82 // return lead(UiContext.getLocale());
83 // }
84 //
85 // public String lead(Locale locale) {
86 // return lead(this, locale);
87 // }
88
89 // private static String lead(Msg msg, Locale locale) {
90 // String raw = msg.local(locale).toString();
91 // return lead(raw, locale);
92 // }
93
94 // public Object local() {
95 // Object local = local(this);
96 // if (local == null)
97 // local = getDefault();
98 // if (local == null)
99 // throw new CmsException("No translation found for " + id);
100 // return local;
101 // }
102 //
103 // public Object local(Locale locale) {
104 // Object local = local(this, locale);
105 // if (local == null)
106 // local = getDefault();
107 // if (local == null)
108 // throw new CmsException("No translation found for " + id);
109 // return local;
110 // }
111 //
112 // private static Object local(Msg msg) {
113 // Locale locale = UiContext.getLocale();
114 // return local(msg, locale);
115 // }
116 //
117 // public static Object local(Msg msg, Locale locale) {
118 // String key = msg.getId();
119 // int lastDot = key.lastIndexOf('.');
120 // String className = key.substring(0, lastDot);
121 // String fieldName = key.substring(lastDot + 1);
122 // ResourceBundle rb = ResourceBundle.getBundle("/OSGI-INF/l10n/bundle",
123 // locale, msg.getClassLoader());
124 // // ResourceBundle rb = ResourceBundle.getBundle(className, locale,
125 // // msg.getClassLoader());
126 // return rb.getString(fieldName);
127 // }
128
129 // public static void init(Class<?> clss) {
130 // final Field[] fieldArray = clss.getDeclaredFields();
131 // ClassLoader loader = clss.getClassLoader();
132 //
133 // for (Field field : fieldArray) {
134 // if (Modifier.isStatic(field.getModifiers())
135 // && field.getType().isAssignableFrom(Msg.class)) {
136 // try {
137 // Object obj = field.get(null);
138 // String id = clss.getCanonicalName() + "." + field.getName();
139 // obj.getClass().getMethod("setId", String.class)
140 // .invoke(obj, id);
141 // obj.getClass()
142 // .getMethod("setClassLoader", ClassLoader.class)
143 // .invoke(obj, loader);
144 // } catch (Exception e) {
145 // throw new CmsException("Cannot prepare field " + field);
146 // }
147 // }
148 // }
149 // }
150 }