http://www.chinamac.com/2009/1012/49609.html
在選擇系統語言的時候,你一定注意到了,在你的Home下文件夾會隨之變化,
例如在英文時顯示Documents,切換到一個使用中文偏好的賬戶(即便在fast switch)時,顯示“文檔”,后續介紹mac os x是如何處理的,在介紹之前,先說明一下了解這方面的一點知識可以解決的實際問題
如果遇到這樣的問題,我們該如何處理呢,例如
- 我的下載文件夾怎么變成英文的Downloads了?其他的文件夾例如“文稿”等等還是中文的
- 我在使用Finder瀏覽users目錄,怎么我的文件夾是中文的,別人的文件夾有些名稱是英文的?
- 這樣的文件夾在darwin文件系統使用原始的名稱來保存,通常是英文,例如Downloads
mac os x的GUI軟件,例如Finder會根據用戶的語言偏好,來顯示本地化名稱,例如下載
你可以用終端輸入ls命令來驗證
如果Finder在文件夾里面找到.localized(前面有一個.,隱藏文件),Finder就知道需要查找并顯示本地化名稱了。
所以針對上面的問題,通常是因為兩方面的原因,
第一 .localized這個文件被誤刪除了
我們可以手工創建一個,以Home下下載為例,終端使用這個命令
- touch ~/Dowloads/.localized
復制代碼
第二 設置了錯誤的權限,使得Finder不能訪問到
可以使用chmod命令設置正確的權限
針對上面提到的第2個問題,看別人的文件夾名稱是英文的,這個就不難理解了,那些文件夾你沒有權限,自然不能訪問.localized,Finder自然使用原始的名字來顯示給你了
如下圖:
Mac OS X支持多國語言,在系統偏好設置-多語言環境中,你可以選擇使用的語言,很多文件夾和應用程序,隨著你選擇的語言不同也會隨之變化,例如,使用英文時,你會看到這樣的文件夾Desktop, Documents, Downloads, Library, Movies, Music, Pictures,使用中文時你會看到“桌面”、“文稿”、“下載”、“資源庫”、“電影”、“音樂”和“圖 片”
- Mac OS X實際使用的名字我們暫且稱作真實的名稱,通常使用英文,例如Documents
- 根據用戶使用的語言,所顯示名稱稱作本地化的(非英語)名稱,就是Display Name
- Display names 與真實的名字不會混淆. 真實的名字是darwin文件系統中使用的名字,Display Name基于 文件系統的名字,但是被修改以反應當前用戶的偏好設置
- Mac OS X 在Darwin and Classic environments不支持Display Name

從以下三點介紹本地化名稱(Display Name)
- System-defined文件夾(指類似Desktop, Documents, Downloads, Library這樣的文件夾)
- 你可以自定義本地化文件夾,同樣可以根據系統的語言顯示本地化名稱
- 應用程序(Application),像system preferences(中文是顯示"系統偏好設置")
System-defined的文件夾
例如"文稿"(真實的名字是Documents),如下圖,可以看到.localized(前面有一個.)這個隱藏文件
在通常情況下,Finder不顯示這類文件

Finder發現有這個"空白"的文件(不需要內容),就知道需要查找并顯示本地化名稱了,所以不要刪除這個文件。
它會去這里找,
- /System/Library/CoreServices/SystemFolderLocalizations/
復制代碼
比如中文,相應的語言包(如zh_CN.lproj)
進入這個文件夾,可以看到SystemFolderLocalizations.strings文件(plain text)
,你可以看到相關的Display Name了,
你可以自定義本地化文件夾,同樣可以根據系統的語言顯示本地化名稱
有人按照system-defined文件夾的方法,用VI編輯 SystemFolderLocalizations.strings文件,加入相關的條目,不建議這樣作,推薦
例如這個文件夾真實名字是test
下面的操作需要使用/Applications/Utilities/Terminal.app (中文是 /應用程序/實用工具/終端.app)
1 給test目錄加上 .localized擴展名
復制代碼
2 在test文件夾下面,增加一個.localized的子文件夾.
- cd test.localized && mkdir .localized
復制代碼
3 進入.localized 子文件夾里面,建立"string"文件,每個文件對應一種語言,
文件名子是two-letter language code加上.strings的擴展名
en.strings
zh.strings
de.strings
....等等

4 每一個"string"文件的編碼是Unicode,內容是這樣的"test" = "Localized name";

PS: 取消Finder->show all file extertions1.png (59.89 KB)

定義bundle Application的Dispplay Name
這個話題更多的牽扯到軟件開發,在這里不詳細說明,更多的信息參考: Bundle Programming Guide
在app右鍵,選擇show package contents,進入contents/resource目錄,有很多的語言.lproj包,
以zh_CN.lproj為例這是簡體中文,里面又一個文件InfoPlist.strings,其中有鍵值指定了Display NAME
Picture 1.jpg (44.5 KB)

posted on 2010-12-22 22:38
哈哈的日子 閱讀(988)
評論(0) 編輯 收藏