]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/LocaleUtils.java
1 package org
.argeo
.cms
.i18n
;
3 import java
.util
.Locale
;
4 import java
.util
.ResourceBundle
;
6 import org
.argeo
.eclipse
.ui
.specific
.UiContext
;
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");
14 public static Object
local(Enum
<?
> en
, Locale locale
) {
15 return local(en
, locale
, "/OSGI-INF/l10n/bundle");
18 public static Object
local(Enum
<?
> en
, Locale locale
, String resource
) {
19 return local(en
, locale
, resource
, en
.getClass().getClassLoader());
22 public static Object
local(Enum
<?
> en
, Locale locale
, String resource
,
23 ClassLoader classLoader
) {
24 ResourceBundle rb
= ResourceBundle
.getBundle(resource
, locale
,
26 return rb
.getString(en
.name());
29 public static String
lead(String raw
, Locale locale
) {
30 return raw
.substring(0, 1).toUpperCase(locale
) + raw
.substring(1);
33 public static String
lead(Localized localized
) {
34 return lead(localized
, getCurrentLocale());
37 public static String
lead(Localized localized
, Locale locale
) {
38 return lead(localized
.local(locale
).toString(), locale
);
41 static Locale
getCurrentLocale() {
42 return UiContext
.getLocale();
45 // private ClassLoader classLoader;
46 // private final Object defaultLocal;
49 // defaultLocal = null;
52 // public Msg(Object defaultMessage) {
53 // this.defaultLocal = defaultMessage;
56 // public String getId() {
60 // public void setId(String id) {
64 // public ClassLoader getClassLoader() {
65 // return classLoader;
68 // public void setClassLoader(ClassLoader classLoader) {
69 // this.classLoader = classLoader;
72 // public Object getDefault() {
73 // return defaultLocal;
76 // public String toString() {
77 // return local().toString();
80 // /** When used as the first word of a sentence. */
81 // public String lead() {
82 // return lead(UiContext.getLocale());
85 // public String lead(Locale locale) {
86 // return lead(this, locale);
89 // private static String lead(Msg msg, Locale locale) {
90 // String raw = msg.local(locale).toString();
91 // return lead(raw, locale);
94 // public Object local() {
95 // Object local = local(this);
97 // local = getDefault();
99 // throw new CmsException("No translation found for " + id);
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);
112 // private static Object local(Msg msg) {
113 // Locale locale = UiContext.getLocale();
114 // return local(msg, locale);
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);
129 // public static void init(Class<?> clss) {
130 // final Field[] fieldArray = clss.getDeclaredFields();
131 // ClassLoader loader = clss.getClassLoader();
133 // for (Field field : fieldArray) {
134 // if (Modifier.isStatic(field.getModifiers())
135 // && field.getType().isAssignableFrom(Msg.class)) {
137 // Object obj = field.get(null);
138 // String id = clss.getCanonicalName() + "." + field.getName();
139 // obj.getClass().getMethod("setId", String.class)
142 // .getMethod("setClassLoader", ClassLoader.class)
143 // .invoke(obj, loader);
144 // } catch (Exception e) {
145 // throw new CmsException("Cannot prepare field " + field);