我目前正在開發桌面遊戲作爲CS課程的一部分。
雖然不需要它,我想我的應用程序支持本地化
所以我瀏覽網頁,發現兩種技術
- 資源包
- 屬性文件
但我不能決定哪個更適合我,我只是需要GUI的本地化消息和標籤。
我也很困惑的文件怎麼這麼/類應該被命名爲
例如,如果FooBar的擴展資源包
應該像FooBar_UNIX_en_US
順便說一句,分配是一個糾纏(由gopherwoods工作室)克隆(桌面不小程序)本地化技術
〜謝謝
我目前正在開發桌面遊戲作爲CS課程的一部分。
雖然不需要它,我想我的應用程序支持本地化
所以我瀏覽網頁,發現兩種技術
- 資源包
- 屬性文件
但我不能決定哪個更適合我,我只是需要GUI的本地化消息和標籤。
我也很困惑的文件怎麼這麼/類應該被命名爲
例如,如果FooBar的擴展資源包
應該像FooBar_UNIX_en_US
順便說一句,分配是一個糾纏(由gopherwoods工作室)克隆(桌面不小程序)本地化技術
〜謝謝
從翻譯者的角度來看,他們都是屬性文件,您同時使用 - 從程序的角度來看,它們是ResourceBundles。 ResourceBundle可以從屬性文件加載它的字符串(只是字符串)。
所以,你只需把文件,如Messages.properties
(默認值),Messages_eo.properties
(世界語翻譯),Messages_de.properties
(德語翻譯),Messages_de_AT.properties
(奧地利德國特殊字符串,覆蓋一般的)。
在您的程序中,您只需執行ResourceBundle bundle = ResourceBundle.getBundle("Messages")
,然後運行庫從屬性文件爲當前語言環境構建您的資源包。
如果您需要翻譯除字符串以外的其他內容,則需要替換.class
文件,然後繼承ResourceBundle的子類。你甚至可以將兩者混合,但是我最好將它們分成不同的包(即一個text
包和一個用於動態資源)。
你是在正確的方向,約定通常是Name_<language>_<country>
。
ResourceBundle
本身可以使用屬性文件來支持本地化字符串,所以你可以使用它。這樣您就不必爲每個本地化的語言編譯新的類,只需爲該語言創建一個新的屬性文件。
檢出ResourceBundle.getBundle()工廠方法。
感謝您的鏈接 – Batreekh 2011-04-15 12:50:06
我相信使用資源包將是最好的技術。
Java本身,將嘗試引用您的資源bundels從最具體到最不具體(最通用)。
如果您有以下資源:
resource
resource_en
resource_en_GB
resource_fr
resource_fr_CA
和最終用戶的地方是en_NZ(紐西蘭),他將顯示的內容在resource_en。
但是,來自加拿大魁北克的人很可能會顯示resource_fr_CA中的內容。
希望有所幫助。
感謝您的解釋 – Batreekh 2011-04-15 12:50:38