我正在嘗試重寫幾個月前寫過的GWT應用程序。那個應用程序查看邏輯已經過時了,我還有其他的理由來重寫它。如何在GWT共享包中使用本地化常量
然而,後端保持不變並且有些作品。我的問題是項目的總體組織。我有客戶端,服務器和共享軟件包。客戶端包含編譯爲JavaScript的客戶端相關類,服務器包含發佈到服務器上的Java類。 我在客戶端使用Constants-interface,在服務器端使用屬性文件。
我在共享包中有DTO和一些枚舉,因爲它們在客戶端和服務器端都使用。雖然DTO不需要任何翻譯,因爲它們只保存填充的信息,所以列舉確實需要它們。 我列舉的一個看起來是這樣的:
public enum ItemFamily {
ARMORS(0, "A", "Armor"),
JEWELRY(1, "J", "Jewelry"),
MATERIALS(2, "M", "Materials"),
RECIPES(3, "R", "Recipes"),
WEAPONS(4, "W", "Weapons");
private final int id;
private final String label;
private final String name;
ItemFamily(final int id, final String label, final String name) {
this.id = id;
this.label = label;
this.name = name;
}
public int getId() {
return id;
}
public String toString() {
return label;
}
public String getName() {
return name;
}
public static ItemFamily fromString(final String str) {
for (ItemFamily e : ItemFamily.values()) {
if (e.toString().equalsIgnoreCase(str)) {
return e;
}
}
return null;
}
public static ItemFamily fromId(final int id) {
for (ItemFamily e : ItemFamily.values()) {
if (e.id == id) {
return e;
}
}
return null;
}
}
我想用常數取代「甲」,「珠寶」,「配方」等,這將取決於由需要什麼樣的區域調整客戶端應用程序。但是,如果我將枚舉過於緊密地綁定到客戶端 - 常量接口上,那麼在服務器端使用枚舉時可能遇到麻煩,對嗎?
任何關於翻譯共享內容的適當方式的想法都非常受歡迎。非常感謝您閱讀和幫助我!
P.s .:如果這個問題已經覆蓋某處,我請求原諒。我已經搜索了開發者指南(國際化)以及stackoverflow。但我沒有找到合適的解決方案。
啊!好吧..所以我必須將枚舉值映射到我的枚舉之外的適當字符串,因爲這些行根據我在客戶端還是服務器端使用枚舉而不同。 – Igor
是的,這是正確的。爲什麼一個枚舉要用不同的語言來翻譯它?我是解除責任的朋友。 – Peter