2011-04-14 73 views
0

我目前正在開發桌面遊戲作爲CS課程的一部分。
雖然不需要它,我想我的應用程序支持本地化
所以我瀏覽網頁,發現兩種技術
- 資源包
- 屬性文件
但我不能決定哪個更適合我,我只是需要GUI的本地化消息和標籤。
我也很困惑的文件怎麼這麼/類應該被命名爲
例如,如果FooBar的擴展資源包
應該像FooBar_UNIX_en_US
順便說一句,分配是一個糾纏(由gopherwoods工作室)克隆(桌面不小程序)本地化技術

〜謝謝

回答

1

從翻譯者的角度來看,他們都是屬性文件,您同時使用 - 從程序的角度來看,它們是ResourceBundles。 ResourceBundle可以從屬性文件加載它的字符串(只是字符串)。

所以,你只需把文件,如Messages.properties(默認值),Messages_eo.properties(世界語翻譯),Messages_de.properties(德語翻譯),Messages_de_AT.properties(奧地利德國特殊字符串,覆蓋一般的)。

在您的程序中,您只需執行ResourceBundle bundle = ResourceBundle.getBundle("Messages"),然後運行庫從屬性文件爲當前語言環境構建您的資源包。

如果您需要翻譯除字符串以外的其他內容,則需要替換.class文件,然後繼承ResourceBundle的子類。你甚至可以將兩者混合,但是我最好將它們分成不同的包(即一個text包和一個用於動態資源)。

+0

感謝您的解釋 – Batreekh 2011-04-15 12:50:38

1

你是在正確的方向,約定通常是Name_<language>_<country>

ResourceBundle本身可以使用屬性文件來支持本地化字符串,所以你可以使用它。這樣您就不必爲每個本地化的語言編譯新的類,只需爲該語言創建一個新的屬性文件。

檢出ResourceBundle.getBundle()工廠方法。

+0

感謝您的鏈接 – Batreekh 2011-04-15 12:50:06

0

我相信使用資源包將是最好的技術。

Java本身,將嘗試引用您的資源bundels從最具體到最不具體(最通用)。

如果您有以下資源:

resource 
resource_en 
resource_en_GB 
resource_fr 
resource_fr_CA 

和最終用戶的地方是en_NZ(紐西蘭),他將顯示的內容在resource_en。

但是,來自加拿大魁北克的人很可能會顯示resource_fr_CA中的內容。

希望有所幫助。