2017-04-03 108 views
0

在資源XML中,所有這些值都與鍵相關聯。我想直接從Java修改與鍵關聯的值。使用Java國際化修改Wicket的XML資源包(i18n)

例如,我有<entry key="greetingMessage">Welcome to my app</entry>,這是顯示在視圖中,但也可以從視圖中修改消息,我想要在XML中自動更新。

我已經設法通過解析和更改XML javax.xmlorg.w3c來做到這一點,但我覺得我失去了一些東西。Java國際化或Wicket框架有一個方法來實現這一點?

回答

1

檢票口只有設備可以讀取國際資源(例如,XmlFilePropertiesLoader)。在Wicket 6代碼中不使用Properties.storeToXML(),而使用Properties.loadFromXML()來讀取這些XML屬性文件。

要將這些翻譯存回XML文件,您需要謹慎。至少,必須實施同步以確保同時進行的編輯不會丟失。

我不建議將編輯存儲在XML中(尤其是在原始XML文件中)。最好有兩個屬性級別:

  1. 首先,不可變的級別是基於原始(和不可變的)XML文件。
  2. 由「編輯」組成的第二層表現爲像第一層上的修補程序。它可以存儲在一個數據庫中,這對於存儲不斷更新的數據更爲方便(像這樣的編輯)。
+0

是的,與實體關聯的內容存儲在本地化結構化的數據庫中。但客戶希望所有文本都是可編輯的。從您的角度來看,我應該將所有文本移動到數據庫中而不使用在這種情況下的國際資源? –

+1

我的建議是讓所有i18n數據都可編輯,但只能將編輯後的密鑰存儲在數據庫中,同時從XML中獲取未編輯密鑰的默認值。通過這種方式,回到'僅限XML'將更容易。但是你的方式(放下所有XML文件並將所有內容存儲在數據庫中)似乎也是可行的,它會更簡單(只有1層)。 –