К сожалению, единственный программный интерфейс для этого (службы словаря) не поддерживает настройку словаря.
Тем не менее, он обращается к настройкам словаря, чтобы использовать первый указанный словарь, так что вы можете, очень уродливо, сбросить настройки, чтобы тезаурус был единственным доступным словарем.
Это действительно отвратительно и может сломаться, если подышать, но это должно сработать:
/* compile with:
gcc -o thesaurus -framework CoreServices -framework Foundation thesaurus.m
*/
#import <Foundation/Foundation.h>
#include <CoreServices/CoreServices.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *dictionaryPrefs =
[[userDefaults persistentDomainForName:@"com.apple.DictionaryServices"] mutableCopy];
NSArray *activeDictionaries = [dictionaryPrefs objectForKey:@"DCSActiveDictionaries"];
[dictionaryPrefs setObject:
[NSArray arrayWithObject:@"/Library/Dictionaries/Oxford American Writer's Thesaurus.dictionary"]
forKey:@"DCSActiveDictionaries"];
[userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"];
NSString *word = [NSString stringWithUTF8String:argv[1]];
puts([(NSString *)DCSCopyTextDefinition(NULL, (CFStringRef)word,
CFRangeMake(0, [word length])) UTF8String]);
[dictionaryPrefs setObject:activeDictionaries forKey: @"DCSActiveDictionaries"];
[userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"];
}
И используйте его как:
% ./thesaurus string
noun
1 twine, cord, yarn, thread, strand.
2 chain, group, firm, company.
3 series, succession, chain, sequence, run, streak.
4 line, train, procession, queue, file, column, convoy, cavalcade.
[...]