[教學] 自己動手做中文化

 

 

 

 

導言

現在大部分的 Mac 程式都是由 Cocoa API 所編成。正如其名 “可可”,雖然架構發展的很早,但是仍是十分地強大且可口呢!這類的 cocoa 應用程式有個很大的特點,就是把所有的物件包裝在一個程式之內,因此具有極高的攜帶性,不用另外安裝就可以使用。當然所有的語系也是包在裡頭,因此 cocoa 的應用程式可以十分容易地做語系本地化,而這就是我們今天要開刀的地方啦!

 

 

 

 

 

 

語言順序

 系統的語言

 

大家都知道不管是在哪個國家買的 Mac ,都只會差在鍵盤上的文字不同,使用的 Mac OS 都是同一套,沒有語言版本的差別。 所以我們在安裝時,都會取消掉一些根本就用不到的語言來節省硬碟空間,然後我們就可以自己決定整個系統所顯示的語言啦。

統偏好設定 程式的 國際設定 中的 語言 項目裡,可以清楚的看到我們系統的語言順序。我們可以輕易的拉動語言項目去排定我們偏好的順序。

語言順序的概念很簡單,假定我的語言排序依序為繁體中文、簡體中文、英文、日文...,當我運行一個程式時,程式會以繁體中文的顯示,要是這個程式中沒有包含繁體中文的語系檔,那就會以排序第二的簡體中文做顯示,要是也沒有簡體中文的語系檔,那就會以排序第三的英文做顯示,(要是沒有英文語系檔... 那還真是見鬼了)依此類推。

 

 應用程式的語言

一般來說,一個應用程式都會包含多個語系檔。而程式的語言表示就如上面所說的,是由系統語言排序所決定的。但其實我們也可以針對每個應用程式做個別的語言顯示。方法很簡單,對著想想要變換顯示方式的應用程式按右鍵,選 簡介(或是按 ⌘ + i),然後在 語言 的地方,將排序較前但不需要的語言勾選取消就行啦。被取消的語系檔並不是被刪掉了,而是被放到其他的地方(放到該程式裡的 Resources Disabled 檔案夾裡),所以隨時可以改回來。

 

 

中文化工具

 安裝 Xcode 跟 Interface Builder

                                   

                            Xcode                                                                         Interface Builder    

 

 

可以幫 Mac 程式做中文化的工具還真不少,都很好用,但是不好上手。所以個人偏好使用既免費又十分強大的 Xcode 來做為我的中文化工具。Xcode 已包含在隨機光碟中,但預設是不安裝的,所以得自己手動安裝,或是直接到 Apple 的 開發者網站 下載最新版本的 Xcode。免費註冊個帳號就可以下載了。有興趣可以連 iPhone SDK 一起下載回去玩玩。

安裝完的 Xcode 並不是出現在應用程式檔夾,而是在 主機 \ Developer \ Applications 中。

 

 

開始中文化

 建立中文語系檔

 

准備好工具並有了基本概念後,就開始著手來做中文化吧。這裡就以我不推對不起自己的健康督促軟體 MacBreakZ 來做示範吧。

對著 MacBreakZ 按右鍵,選顯示套件內容。然後依序在 Contents \ Resources 中,找出 English.lproj 檔案夾。這個以 .lproj 為附檔名檔案夾就是所謂的語系檔了。我們可以另外在這裡發現荷蘭的語系檔,若是你荷蘭文超強,那也可以用那個荷蘭的語系檔來做修改的基礎,因為我不懂,所以對我而言改英文的比較方便。

 

因為要保留英文的語系檔,所以我們不要直接修改這個英文的語系檔。對著 English.lproj 按右鍵,拷貝一個來改。將拷貝檔更名為 zh_TW.lproj。這個就是正體中文的語系檔啦。不過別高興的太早,這並不表示就已經完成中文化了,裡頭都字串都還是英文呀!

[ 注意 ] 正體中文的語系檔是 zh_TW.lproj,而非 zh-TW.lproj ,那個橫杠表示的方式很重要喔!

檔案夾裡全部的檔案都要做修改,而最主要要修改的檔案有兩種,分別為 .strings 檔.nib 檔

                           

                    .strings                                                                            .nib 檔

 

 

 

 修改字串

 

事實上用 Xcode 來修改真的是太殺雞用牛刀了,只要是任何能做文字編輯的程式都可以來修改 .strings 檔,不過不建議使用內建的 文字編輯 程式來做,因為文字編輯程式並不會對字串檔的內容以顏色做區別,容易出錯。所以使用像是 Smultron 之類就很優。不過還是用 Xcode 最有 fu 啦!

對著第一個字串檔 buttons.strings 點兩下,Xcode 會自動開啟。會有三種顏色的自出現在視窗中。

綠色為字串檔的註解部份,註解標示了下面字串所代表的意義,程式在運行時不會編譯它,可以看看,但沒必要改。

黑色是程式的符號,不要動到。

紅色就是字串的所在啦,字串顯示的模式很簡單,就是 :

          “英文” = “英文”

而我們要做的就是將等號右邊括弧內的英文改成正體中文。舉個例,第一個要修改的

 "cancel button" = "Cancel";,我們就要將它修改成 "cancel button" = "取消";。是否很簡單呢?

另外有時會遇到一些非文字的部份,例如 %@ 或是 %.2f 等等之類的,這些是變數,程式在運行時,會用一些數字來取代它,所以我們也不要動它,但是要注意英文跟中文語句的差異。例如:

"Day %1$d of your %2$d day adaptation period."  則要翻譯成:"已過了 %2$d 天適應期中的 %1$d 天。" 這樣的語句才會流暢並符合邏輯。

現在就慢慢的將所有的字串檔做修改吧。完成後記得存檔,否則再重新修改一次是會想殺人的~

 

 修改界面文字 

接著修改另一個重點: .nib 檔

對著第一個要修改的 MainMenu.nib 點兩下,此時 Interface Builder 將自動開啟。會跳出現許多的視窗,其中最重要的是 MainMenu.nib(zh_TW) 這個主視窗了,其它的視窗關掉也可以在這找到。建議點視窗左上角的 view mode,將這個主視窗改成直欄或是列表顯示,使用圖像顯示會有無法修改的情況發生。 

在這眾多的小圖示中,需要我們要修改的只有 MenuWindowsview 這三種。

    

                     Menu                                        Windows                                           view 

這三種檔檔案修改的方式都一樣,也很有趣。我們先雙擊 MainMenu 看看吧。

開啟 MainMenu 會發現,這不就是我們熟悉的選單列嗎?點選這個選單列上的項目,也會像我們平常使用的那樣跳出下拉選單。要將這些項目改成中文很簡單,對著要更改的項目點兩下,就可以修改了。真是超容易的呀。改完後直接關掉,再開啟下一個來改。另兩種檔案也是使用這樣的方式就可以做修改,不管是按鈕還是下拉式選單,只要是英文字的地方,就都可以改。就一個一個慢慢的改吧,做中文化是需要耐心的。同樣地別忘了要時時存檔喔。

除了修改文字之外,其實我們也可以藉由改變視窗內所有物件的大小及排列,好讓呈現的效果更加的符合中文化的樣式。但若非必要,不建議去亂動。

這裡另外提一下,為何不建議在主視窗中使用圖像顯示模式。上面 MainMenu.nib 中的 Prefs 就是個很好的例子。若是使用圖像顯示模式開啟這個檔案,可以看出這是一個偏好設定的面板,很開心的修改完後,運行此程式並打開偏好設定,會發現在偏好設定的視窗中,明明就有十多個項目,為何剛剛在中文化時只看到一個呢?原來其他的項目是藏在 Prefs 中,得用直欄或是列表模式才能夠在層層的目錄中的看到!實在是很容易忽略的呀!

最後還有個容易忽略掉的地方要做修改,就是各個視窗的標題。標題的修改點特別,不像之前那樣對著文字點兩下就可以修改的了。這裡就以 Prefs 來做修的示範吧。

  

首先開啟 Prefs,然後點 選單列 上的 Tools 裡的 Inspector(或是按快速鍵⇧⌘i),選擇這個 Inspector 視窗的上方工具列做左邊的 Attributes 小圖示,就可以在 Title 中修改視窗的標題字了。

 其他修改

一般的中文化,大致上就是如此了,但在這個 MacBreakZ 的程式還有個特別的地方要中文化。在 stretches 檔案夾中有另外兩個檔案夾,裡面的檔案都是 html 檔,這些 Xcode 跟 Interface Builder 都改不了,所以我們得用其他的編輯器來做修改,原本是習慣使用 Smultron,但不知為何頻頻出錯,所以另外推薦一個功能更強大的 Coda。好用的 Coda 會將檔案夾內所有的檔案列出在側邊欄中,非常方便。在編輯的區域中, Coda 也會將不同類型的文字以顏色做區分,需要修改的就只有黑字的部份。我們也可以隨時點選 Preview 鈕來查看修改後呈現的效果。同樣的要注意變數的修改方式。

 

 查看成果

 

在辛辛苦苦地修改所有的字串跟物件之後,當然就是享受自己努力過後所獲得成果的時刻啦。查看成果很重要,往往一些遺漏、語句不順暢或是排版錯誤都是在這時候才會被發現。

做中文化是個枯燥且需要耐心的工作,但是會有個意外好處,就是一些程式中不常用或是隱藏住的功能,都會在這中文化的過程中,一一的被發掘喔,真是太酷了!

另外辛苦完成的中文化只有自己能夠使用豈不太過可惜,就透過自己的 blog 或是國內一些知名的論壇、網站分享出去,受惠於更多喜愛 Mac 的朋友吧 ~

 

 

最後,關於本篇教學,原作者提供PDF檔下載,以利保存!

Mac 的程式中文化.pdf

 

 

 

 

教學分類: 
10.4Tiger適用10.5Leopard適用蘋果教學(上方選單分類)系統相關

回應 (14)

Stanley's 的頭像
Stanley
says:
發表回應前,請先登入註冊

吼,太讚了啦,原本還對中文化有點不敢碰~看完tenotfe大寫的文章,清楚又有條理,整個熱血都快沸騰了,給你加滿分啦! 

另外,文章開頭的動畫也很讚,很有變形金剛的feel呢!(是用什麼軟體做的呢?)

Gary's 的頭像
Gary
says:
發表回應前,請先登入註冊

這篇教學昨天晚上就寫完了,

但是那個圖卻是一直搞到今天早上才弄完 

我是用 Pixelmator 慢慢改圖,再用 GIFfun 把九十多張 gif 連結起來

真累,以後不做這種蠢事了...

 

其實就如教學所說的

可以中文化的軟體很多,

有的甚至可以記住字串,

這樣要是程式只是稍微的小更新的話,只需修改新增的部份,不用從頭在來

但是那些中文化軟體不是挺貴,就是不好學習,

所以個人推薦 Xcode 啦,最簡單易懂!

雖說用 Xcode 來做中文化根本就是大材小用

但是這樣也可算是開啟了接觸程式設計的一扇小門

也許有人就真的這樣一頭栽進程式設計的世界也說不一定 ^^

 

今天才是真的第一次自己發教學文

發現要注意的地方多喔

還真的很不容易耶,

以前都是辛苦 Stanley 大了,真是謝謝您~

現在可以知道為何會有人想要離線的撰寫、排版 Blog 的工具了

線上排版真的很痛苦耶

 

Stanley's 的頭像
Stanley
says:
發表回應前,請先登入註冊

天啊~ "我是用 Pixelmator 慢慢改圖,再用 GIFfun 把九十多張 gif 連結起來",太強大了...

 

對不起阿,線上排版真的很痛苦,何況編輯器還有Bug...辛苦您了~

Gary's 的頭像
Gary
says:
發表回應前,請先登入註冊

不強大啊,根本就是時間太多了...

也許去學個動畫軟體會比較輕松點阿...

還偷偷盜用了 Stanley 的圖像,

但是正面看起來太和善了,所以把它給倒過來,想不到效果還不錯呢^^

chun1201's 的頭像
chun1201
says:
發表回應前,請先登入註冊

Resorcerer

補充一點

某些應用程式內會有 Localized.rsrc 檔案

只能使用 Resorcerer  編輯

中文更改完均會顯示亂碼

這時不用緊張

一樣存檔

但開啟程式時 會正常顯示中文

發表回應前,請先登入註冊

 Gary你好,

看了你的文章后兴致很高,想动手去搞下bento的中文版,但一动手就遇到一个问题,就是无法用interface去打开.nib的文件,并总是跳出:

The document"ViewSelectorBar.nib" could not be opened. Interface Builder cannot open compiled nids.

本人对此不太懂,新手一个,想烦请赐教

Gary's 的頭像
Gary
says:
發表回應前,請先登入註冊

無法中文化的原因有很多,

其中最大部分都是原軟體作者將檔案鎖住或檔案不全(Mac 內建的軟體大多是這樣),不給修改

這時就只能請原作者提供更齊全的檔案才有辦法了

 

另一個較大的原因就是程式本身並不是用 cococa 架構所寫成,所不適用此篇教學。

發表回應前,請先登入註冊

 噢,了解了,看来是比较困难了,再次感谢

Mac Tien's 的頭像
Mac Tien
says:
發表回應前,請先登入註冊

23 寫到:

 Gary你好,

看了你的文章后兴致很高,想动手去搞下bento的中文版,但一动手就遇到一个问题,就是无法用interface去打开.nib的文件,并总是跳出:

The document"ViewSelectorBar.nib" could not be opened. Interface Builder cannot open compiled nids.

本人对此不太懂,新手一个,想烦请赐教

這個間題,很好解決它!

網上找一下這:反譯 NIB 的影片

若找不到,可找我要。

發表回應前,請先登入註冊

請問一下如何判定想要中文化的應用程式是否為cocoa類的程式。

發表回應前,請先登入註冊

請問前輩,我想要中文化的檔案裡面並沒有buttons.strings 跟MainMenu.nib只有Localizable.strings  mfc2pp.strings 跟 workspace.strings,請問要怎麼做呢?

Gary's 的頭像
Gary
says:
發表回應前,請先登入註冊

joe 寫到:

請問前輩,我想要中文化的檔案裡面並沒有buttons.strings 跟MainMenu.nib只有Localizable.strings  mfc2pp.strings 跟 workspace.strings,請問要怎麼做呢?

把那些看的到的 .strings 檔 中文化即可。

Lifechange's 的頭像
Lifechange
says:
發表回應前,請先登入註冊

以前聽說軟體有簽名的不能中文化,是不是這樣呢?好像你這裡沒有提到這點.
不過謝謝你的分享,讚一個!

BrunoLiu's 的頭像
BrunoLiu
says:
發表回應前,請先登入註冊

大大!
我.nib的檔案打開
Xcode出現這樣

請問是怎麼回事?

OS X 10.8

XCode 4.6.1