OSX 上的中文化系列(二) Carbon 中文化 | 2001/07/16 |
上次有朋友問到 Carbon 寫成的軟體要如何中文化?Carbon 身為一個由 MacOS 9 衍生出的 API,有著比 Cocoa 更多的傳統包袱。一方面來說,Carbon 寫成的程式要能夠在 MacOS 9、MacOS X 上執行,另一方面,Apple 也希望 Carbon 寫出來的程式,能夠給予使用者和 Cocoa 程式完全相同的使用者經驗。
這個目標當然還有尚未完成的地方,也不是說 MacOS 9 的程式只要經過移植就能夠在 MacOS X 上面執行的很好。然而,這裡筆者並不打算深入這些開發程式的問題,只把焦點專注在 MacOS X Carbon 程式的中文化上。
基本上 Carbon 軟體有三種可能:
■完全沒有使用 MacOS X 裡頭的 Bundle
正如筆者上一次提到,MacOS X 也支援傳統的 Resource Manager,因此 Carbonize 的程式(亦即,由 MacOS 9 直接Porting 過來的程式)可以沿用傳統的 Resource Fork,如此可以簡化程式開發人員移植的時間,但這種作法下,就沒有辦法享用 MacOS X 的多語系、多平台功能。對於這種程式而言,要中文化的方法和傳統並沒有任何不同:ResEdit。
這部份,大家應該都很熟悉,筆者就不再多談。
| 辨別方法:在 Finder 裡頭,在應用程式的圖像上 Control Click,如果沒有顯示“顯示套件內容”,就代表這個程式使用傳統的Resource Fork/Resource Manager。 範例:Napster、Transmit Carbon、BBEdit Lite 6.1 for MacOS X。 |
■不使用 Resource Fork,但是仍然使用 Resource Manager
第二種情況下,我們仍然會看到 Resource 的出現,但是方法、位置已經大大不同。在 MacOS X 裡頭,Carbon 程式也可以將Resource 放在 Data Fork,然後整個應用程式依然包成一個 Bundle,在這種情況下,雖然使用 Resource 檔案,就能夠享有跨平台、多語系的好處(前提是,開發人員用 MacOS X 標準的方法來載入 Resource,如果這個開發廠商將 Resource 寫死,沒有使用語系定義檔案,我們也拿他沒輒,這時候所謂的“多語系”能力依然是無用武之地)。
而這種方法也是筆者此次介紹的重點。
| 辨別方法:在 Finder 裡頭,在應用程式的圖像上Control Click,選取“顯示套件內容”,打開Bundle。在 Bundle 的 Contents/Resources 裡頭(或者更進一步的 *.lproj 裡頭)如果沒有看到任何 nib 檔案,而只有一些 *.rsrc 的檔案,就代表這個軟體使用 Bundle 加上 MacOS X 式的 Resource Manager(亦即,將 Resource 放在 Data Fork 裡頭)。 |
範例:IE 5.1preview (MacOS X)、Finder
步驟:由於 MacOS X 裡頭預設會將 Resource 放在 Data Fork,所以第一件事情我們必須將 Resource 轉換到 Resource Fork 去,這樣傳統的軟體(例如 ResEdit)才能打開、編輯這些 Resource。我們可以用一個很有效的小工具 QuickConvert 來作這件事情。QuickConvert 會將 Data Fork 轉換到 Resource Fork,或者將 Resource Fork 轉換到 Data Fork。想要QuickConvert 的讀者可以在 www.versiontrackers.com 找到這個小軟體。在這裡我們用IE作為範例。
■如同 Cocoa 使用 nib 的界面檔案
這是很罕見的狀況-正如筆者所說,通常由 MacOS 9 快速移植過來的程式不會這樣作,而 MacOS X 上獨立發展的程式多半會使用 Cocoa(因為開發環境快速、物件化、容易擴展)。但若是碰到了,中文化的改法就和 Cocoa 程式一般並無二致!
範例:暫時沒想出來。
在這裡大家是不是看得有點暈頭轉向?筆者認為,這是平台轉移、開發環境轉換不可避免的陣痛。為了讓大家能更簡單、快速的適應 MacOS X 上的中文化工作,筆者將 Cocoa/Carbon的 中文化整理為以下的法則,希望能對大家有所幫助:
macdog: 感謝 jackc 這篇文章,也很歡迎大家對中文化有興趣的朋友,可以一起來玩喔!