2009-01-04 71 views
2

我正在與其他人一起使用java SE 1.5+ swing應用程序。我想知道管理字符串資源的最佳方式是什麼。我理解資源包等背後的原則。我想避免每個需要字符串的類都有一個屬性文件,因爲這看起來有些過火。特別是當你有很多隻能對字符串進行單引用的類時(比如在錯誤處理程序中)。另一方面,當您與其他人合作時,您可以更輕鬆地降低合併衝突的風險。Java字符串資源的管理

它似乎特別麻煩,需要加載資源包,每次你需要在錯誤處理程序,以顯示簡單的用戶反饋,同樣,當許多類所涉及的時間。

什麼是管理一個相當大的應用程序的字符串與幾百個類,其中有許多是沒有GUI有關的最有效的方法,但需要在發生異常時,通過翔實的信息備份到GUI。

我使用它一般會爲每個GUI類的屬性文件的NetBeans,對與按鈕的所有文字,標籤等

回答

12

是什麼讓你覺得你必須有一個單獨的屬性文件,每類?通常你只需要幾個(或者只有一個!)屬性文件(當然,每種語言)。

只需撥打ResourceBundle.getBundle()適當的參數 - 您可以使用同捆地從多個類。

編輯:每個對話框有一組屬性文件可以更容易地看到任何特定的字符串來自哪裏,但它使得難以重複使用相同的消息等等。正確的平衡將取決於應用。

0

這可能很幼稚,而是將它們存儲在數據庫中的東西,無論是嵌入式或外部?這可能會簡化管理,並且可以更改語言的可配置性。

2

JSR 296 Swing應用程序框架,對資源管理的支持(和它看起來像將成爲Java 7的一部分)。 SAF旨在預先構建Swing應用程序的一部分,這是許多人在封裝最佳實踐時經常需要的。你可能不想直接與它綁定,但它的價值在於看看它是否給你提供了一些想法。如果我記得,他們使用具有明確定義的命名約定的級聯資源包。後者意味着你知道去哪裏看,前者意味着你可以在包的層次結構的某個部分重用屬性。

很多JSR 296 resources collected here

0

我要實現類似的Launchpad的翻譯平臺的東西今年: https://launchpad.net/+tour/translation

一言以蔽之:

  • 併發翻譯基於以前輸入的短語
  • 短語的建議
  • 政策,例如部分限制和結構:任何人都可以提出的翻譯,而值得信賴的社區成員審查和批准新的工作

UPDATE

當然,這建立在資源包等的頂部,但是是管理的好方法他們所有的字符串;-)