Dictionary.app
提供: MacWiki
辞書.app とは?
Mac OS X 10.4(Tiger)以降にバンドルされている辞書アプリケーション
環境設定で辞書ソースを選択したり、順序をカスタマイズできる。
- New Oxford American Dictionary
- Oxford American Writer's Thesaurus
Tips
- Cocoaアプリケーションで、単語を選択あるいはポインタで指して ⌃⌘D (Ctrl+Command+D)とするとポップアップで意味が表示される
- コンテクストメニューで「“検索語”を調べる」を選んでもいい
- 適当なアプリケーションで検索語を選択し、サービスメニューの「辞書で調べる」を選ぶと辞書.appが起動して調べられる
プログラミング
- Dictionary.app で指定単語を調べた結果を取得する。APIは、
CFStringRef DCSCopyTextDefinition ( DCSDictionaryRef dictionary, CFStringRef textString, CFRange range );
- 第一辞書(「環境設定...」内)ではない辞書を指定して調べる。参考情報:Using Dictionary.app’s thesaurus function programmatically on OSX (preferably via Ruby) プログラム例:
/* compile with: gcc -o dictionary -framework CoreServices -framework Foundation dictionary.m */ #import <Foundation/Foundation.h> #include <CoreServices/CoreServices.h> #include <string.h> int main(int argc, char *argv[]) { int i; char *dic=""; NSString *word; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *dictionaryPrefs = [[userDefaults persistentDomainForName:@"com.apple.DictionaryServices"] mutableCopy]; NSArray *activeDictionaries = [dictionaryPrefs objectForKey:@"DCSActiveDictionaries"]; NSString *dicpath = @"/Library/Dictionaries/"; NSString *dicname = @""; for (i=1;i<argc;i++) { if (!strcmp(argv[i],"-d")&&i+1<argc) { dic=argv[++i]; if (!strcmp(dic,"thesaurus")) dicname = @"Oxford American Writer's Thesaurus.dictionary"; else if (!strcmp(dic,"oxford")) dicname = @"New Oxford American Dictionary.dictionary"; } else word = [NSString stringWithUTF8String:argv[i]]; } NSArray *useDictionaries = activeDictionaries; if (![dicname isEqualToString:@""]) useDictionaries = [NSArray arrayWithObject:[dicpath stringByAppendingString:dicname]]; [dictionaryPrefs setObject:useDictionaries forKey:@"DCSActiveDictionaries"]; [userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"]; puts([(NSString *)DCSCopyTextDefinition(NULL, (CFStringRef)word, CFRangeMake(0, [word length])) UTF8String]); [dictionaryPrefs setObject:activeDictionaries forKey:@"DCSActiveDictionaries"]; [userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"]; return 0; }