建立
在我們的應用中,難免會遇到國際化的問題,ECLIPSE RCP給我們提供了很好的方案,甚至可以在後期批處理完成,但如果是其它外掛程式未提供我們需要的語言版呢?我們可以如何為它們提供語言套件呢?
一個簡單的例子,你用MessageDialog開啟對話方塊時,按鈕一般時:Ok,Cancel, Yes, No,在一個中文系統中顯得不太地道,當前,該類在構造時給了我們改正的機會,即可以在構造時傳入你需要顯示的字元,如:
MessageDialog dialog = new MessageDialog(parent, title, null,message, QUESTION, new String[] {"確定","取消"}, 0);
但對於一個國際化的系統,這樣並不合適,如果今後需要日語版/法語版呢?是否還得改代碼呢?
其它,ECLIPSE能很好的通過語言套件來解決這樣的問題,我們只需為指定外掛程式建立你需要的語言套件,即可以使應用使用當前locale的語言。我們以為jface建立中文語言套件為例來說說這個過程:
1、建立一個Fragment Project
2、注意在第三步的時候,選擇你要為哪個外掛程式建立語言套件(紅色標出),並選定要示的版本。
3、項目結構如下:
其中,messages_zh_CN.properties是將jface的messages.properties部分譯成中文後再用native2ascii產生的檔案。messages.properties可以按自己的要求翻譯。
下面是我的檔案的一部分,我只譯了其中的幾個LABLE:
ok=確定
cancel=取消
yes=是(&Y)
yestoall=全部(&A)
skip=S&kip
stop=&Stop
abort=&Abort
retry=&Retry
ignore=&Ignore
proceed=&Proceed
open=&Open
close=關閉(&C)
經轉換後的樣子:
ok=\u786e\u5b9a
cancel=\u53d6\u6d88
yes=\u662f(&Y)
yestoall=\u5168\u90e8(&A)
skip=S&kip
stop=&Stop
abort=&Abort
retry=&Retry
ignore=&Ignore
proceed=&Proceed
open=&Open
close=\u5173\u95ed(&C)
4、將該項目匯出為可部署的包(可通過匯出嚮導)。
5、將該包放到你自己的RCP外掛程式搜尋目錄(如plugins目錄)中即可。
6、這時,你在中文系統中運行RCP應用,相應的對話方塊LABEL就變成了你譯成的LABEL
7、需要做其它語言的版本,過程一樣。