]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/i18n/Msg.java
1 package org
.argeo
.cms
.i18n
;
3 import java
.lang
.reflect
.Field
;
4 import java
.lang
.reflect
.Modifier
;
6 import org
.argeo
.cms
.CmsException
;
7 import org
.argeo
.cms
.CmsSession
;
8 import org
.eclipse
.rap
.rwt
.RWT
;
10 /** A single message to be internationalised. */
13 private ClassLoader classLoader
;
14 private final Object defaultLocal
;
20 public Msg(Object defaultMessage
) {
21 this.defaultLocal
= defaultMessage
;
24 public String
getId() {
28 public void setId(String id
) {
32 public ClassLoader
getClassLoader() {
36 public void setClassLoader(ClassLoader classLoader
) {
37 this.classLoader
= classLoader
;
40 public Object
getDefault() {
44 public String
toString() {
45 return local().toString();
48 /** When used as the first word of a sentence. */
49 public String
lead() {
50 String raw
= toString();
51 return raw
.substring(0, 1).toUpperCase(RWT
.getLocale())
55 public Object
local() {
56 CmsSession cmSession
= CmsSession
.current
.get();
57 Object local
= cmSession
.local(this);
61 throw new CmsException("No translation found for " + id
);
65 public static void init(Class
<?
> clss
) {
66 final Field
[] fieldArray
= clss
.getDeclaredFields();
67 ClassLoader loader
= clss
.getClassLoader();
69 for (Field field
: fieldArray
) {
70 if (Modifier
.isStatic(field
.getModifiers())
71 && field
.getType().isAssignableFrom(Msg
.class)) {
73 Object obj
= field
.get(null);
74 String id
= clss
.getCanonicalName() + "." + field
.getName();
75 obj
.getClass().getMethod("setId", String
.class)
78 .getMethod("setClassLoader", ClassLoader
.class)
80 } catch (Exception e
) {
81 throw new CmsException("Cannot prepare field " + field
);