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

tho*_*law 19 java 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

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

我知道ResourceBundleJava 的方法,但这不适用于GWT的客户端代码.

tho*_*law 24

我设法通过使用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());
    }
}
Run Code Online (Sandbox Code Playgroud)

MyConstantsWithLookup.java

public interface MyConstantsWithLookup extends ConstantsWithLookup {

    String FIRST_TYPE();

    String SECOND_TYPE();

    String THIRD_TYPE();
}
Run Code Online (Sandbox Code Playgroud)

MyConstantsWithLookup.properties

FIRST_TYPE = first
SECOND_TYPE = second
THIRD_TYPE = third
Run Code Online (Sandbox Code Playgroud)