如何在GWT客户端代码中本地化枚举值?

我在GWT客户端的代码中使用枚举类来定义一组类型。

public enum MyType { FIRST_TYPE("first"), SECOND_TYPE("second"), THIRD_TYPE("third"); private String title; private MyType(String title) { this.title = title; } public String getTitle() { return this.title; } } 

如何将枚举值本地化以将它们翻译成不同的语言? title字段并不重要,如果这有助于解决问题,则可以删除。

我从Java了解ResourceBundle方法,但这在GWT的客户端代码中不起作用。

我设法通过使用GWT的ConstantsWithLookup接口来解决问题。 这是解决方案:

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 

我想补充@thommyslaw的答案,在某些情况下你可能需要通过电汇传递枚举。 我的意思是让它们可序列化。 在这种情况下,在Enum中放置GWT.create()将不起作用。 这里有一些Singleton Glossary类可以派上用场,比如:

 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()); } } 

在我的情况下, LocalizationEnum扩展了ConstantsWithLookup接口。 通过这种方式,您可以在客户端上隔离本地化代码,并使Enum可以通过线路自由传递。

也许这会对你有所帮助,因为它似乎是gwt方式的国际化