星期日, 11月 22, 2009

iphone addressbook 排序方式


iphone的contacts有很多種排序方式。比如筆劃、拼音、英文字母排序等。以OS 3.1.2而言,排序方式是照系統語系設定;繁中=筆劃,簡中=拼音,英語=字母。然而,筆劃排序不受大眾所喜愛。(除了很熟字典的人,誰會用筆劃排序阿Orz) 所以就出現了許多workaround;像是在last name寫" C.陳"。如此的確可以讓contact照拼音排序,不過又醜又麻煩。



後來,我查到了contact中有隱藏欄位「Phonetic Last/First Name」。如果在OS X中的AddressBook加入此欄位,並且在Phonetic Last Name中打上羅馬/漢語拼音。那麼就會照拼音排序嘍~!

這似乎是個perfect solution ?



不。當以上的方式,碰上了iphone voice control,一切就變了樣。以3.1.2而言,Voice control已經可以獨立設定語系。可是當你用中文發音之後,voice control的reply竟然是讀phonetic name..... 以小弟的聽力,實在是很難確認是哪個人名,還得看iphone螢幕確認一次。這麼一來,voice control的實用性大幅下降。



所以,要兼顧2者的實用性,最好的方式就是將contact排序與系統語系分開設定。

以下就教你,如何自訂contact的排序方式~



原來contact中的排序方式,是寫在以下的plist中。



/System/Library/Frameworks/AddressBook.framework/xxx.lproj/ABContactSections.plist


所以只要把想要的排序方式從A語系copy到目前的系統語系,就能轉換成所要的排序方式!



比如我想要讓英語界面下的addressbook以簡中的拼音方式排序,那麼就進入ssh



iphone#cd /System/Library/Frameworks/AddressBook.framework/Englist.lproj/

iphone#mv ABContactSections.plist ABContactSections.plist.origin

iphone#ln -s ../zh_CN.lproj/ABContactSections.plist ABContactSections.plist


然後重開機,或是把系統語系換成別的再換回來。即可生效!