这两天写了两个简单的小程序,主要是满足朋友和个人需求的,还在修改中。
第一个叫 apn 的程序是给 Mac OS X 中 Address Book 中的联系人自动生成姓名发音 (Phonetic Name) 的脚本,所以它的名字就是 Assign Phonetic Name 的缩写。
这是一个 Python 写的程序,直接用到了 pyzh 项目提供的汉字拼音转换代码,通过 Scripting Bridge 提供的 API 来访问 Address Book,这样虽然相比直接调用 Objective-C 的 API 有点慢,但好处在于能充分利用 Python 语言的灵活性。
使用起来很简单,从 github 上把代码抓下来 (你可以 git clone git://github.com/jjgod/apn.git
或者下载一个打包的版本),然后执行
$ python AssignPhoneticName.py
就会自动给你 Address Book 中没有分配过 Phonetic Name 的那些联系人分配一遍。注意因为汉字有多音字,这个程序做不到很智能,你最好在分配之后打开 Address Book 校对一遍。
第二个是给 Cocoa 程序员用的一个 NSView
的子类,叫 PYView
,其作用很简单,就是在汉字上方同步的显示拼音,不过目前拼音还得自己提供。
调用的 API 很简单,比如这样:
#include "PYView.h"
NSRect viewRect = NSMakeRect(50, 250, 700, 80);
view = [[PYView alloc] initWithFrame: viewRect
fontName: @”FZKai-Z03″
color: [NSColor whiteColor]];
NSArray *pinyin1 = [NSArray arrayWithObjects: @"nǐ", @"hǎo", nil];
NSArray *pinyin2 = [NSArray arrayWithObjects: @"zhōng", @"huá",
@"rén", @"mín", @"gòng", @"hé", @"guó", nil];
[view appendMarkerItem: [PYMarkerItem itemWithHanzi: @"你好"
pinyin: pinyin1
type: 1]];
[view appendMarkerItem: [PYMarkerItem itemWithHanzi: @"中华人民共和国"
pinyin: pinyin2
type: 1]];
就能得到如图所示的输出结果:
可以从 github 上获取代码:
git clone git://github.com/jjgod/pinyinview.git
然后参考提供的 PYViewTest 代码来使用。注意接口还在修改中。
我在Terminal里运行APN时出现了Python错误:
$ python AssignPhoneticName.py
Traceback (most recent call last):
File “AssignPhoneticName.py”, line 4, in
import AddressBook
ImportError: No module named AddressBook
不知道为什么我会没有AddressBook 的 Module。我是不是漏了什么步骤?
果然多音字有问题