I am using an enumeration class in my GWT client\'s code to define a set of types.
public enum MyType {
FIRST_TYPE(\"first\"), SECOND_TYPE(\"second\"), THIR
Maybe this will help you, since it seems to be the gwt way Internationalization
I managed to solve the problem by using GWT's ConstantsWithLookup
interface.
Here is the solution:
MyType.java
public enum MyType {
FIRST_TYPE, SECOND_TYPE, THIRD_TYPE;
private final MyConstantsWithLookup constants = GWT.create(MyConstantsWithLookup.class)
public String getTitle() {
return this.constants.getString(this.name());
}
}
MyConstantsWithLookup.java
public interface MyConstantsWithLookup extends ConstantsWithLookup {
String FIRST_TYPE();
String SECOND_TYPE();
String THIRD_TYPE();
}
MyConstantsWithLookup.properties
FIRST_TYPE = first
SECOND_TYPE = second
THIRD_TYPE = third
I would like to add to @thommyslaw answer that in some cases you may need to pass Enums thru the wire. I mean make them serializable. In such cases putting GWT.create() inside the Enum will not work. Here is where some kind of Singleton Glossary class will be handy, like:
public class LEGlossary {
private static LEGlossary instance=null;
private static final LocalizationEnum localConstants=GWT.create(LocalizationEnum.class);
private LEGlossary(){
}
public static LEGlossary instance(){
if(instance==null){
instance=new LEGlossary();
}
return instance;
}
public String localizedValue(Enum<?> value){
return localConstants.getString(value.name());
}
}
Where LocalizationEnum in my case extends ConstantsWithLookup interface. In this way you isolate the localization code on the client and leave the Enum free to pass thru the wire.