如何在OS X上安装新词典以与“每日一词”屏幕保护程序配合使用?


25

原因很简单:我是“每日一词”屏幕保护程序的粉丝,并且我想添加除英语和日语以外的其他语言的词典(这是我现在可以在屏幕保护程序选项中选择的两种)。

我该怎么做?


1
运气好的话?只能选择英语和日语词典似乎毫无意义,但我发现没有办法解决。
xji 2015年

1
在OS X 10.8之后,似乎放弃了一个半屁股的项目/复活节彩蛋。
xji

Answers:


16

在一个晦涩的注释线程上,有人解释了您可能在哪里找到Apple用来为屏幕保护程序供电的单词列表。在/System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt。该文件如下所示:

m_en_us1282510  quinsy
m_en_us1273791  orbicular
m_en_us1220945  alimony
m_en_us1250517  genome

它是一个制表符分隔的条目的列表。右边是单词,左边是看起来像ID的单词。但是,它的ID是什么?对于列表中尚未存在的另一个单词,您将如何找到它呢?

如您所料,该ID指向Apple默认词典“ New Oxford American Dictionary”中的一个条目。(这就是上面的单词列表路径中的“ NOAD”代表的意思。)

如何找到其他单词的ID ?

在一系列博客文章中,一个名叫约瑟夫·温特尔(Joseph Gentle)的人展示了如何获取苹果词典的基础数据。在他的“ Apple词典,第2部分”中,他指出了将相关二进制文件(存储在中/Library/Dictionaries)解压缩为XML的代码。使用在此处找到的dedict.cstrip.c文件,并按照Gentle的示例,我使用以下bash命令获取NOAD的XML(这些命令从您下载和文件的目录中运行):dedict.cstrip.c

clang dedict.c -Wall -lz -o dedict
clang strip.c -Wall -lz -o strip
./dedict "New Oxford American Dictionary" | ./strip > dict.xml

当我head-ed文件的前几行时dict.xml,我看到了一些很有前途的东西,条目看起来像这样:

<d:entry xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng" id="m_en_us1219333" d:title="abode" class="entry">

请注意,idparam ...这是一个与屏幕保护程序单词列表中的标识符完全一样的标识符!

我编写了以下Ruby脚本来解析XML,然后使用我自己的单词列表创建一个新的屏幕保护程序文件,该文件将我自己的单词映射到字典中的ID:

raw = File.open("./dict.xml").read
my_words = File.open("./word_list.csv").readlines.map { |line| line.split(',')[1] }

word_id_map = {}

raw.scan(/<d:entry .*? id="(.*?)" d:title="(.*?)" class="entry">/).each do |entry|
   word_id_map[entry[1]] = entry[0]
end

my_words.each do |word|
  if id = word_id_map[word]
    puts [id, word].join('  ')
  end
end

当我用这个新的屏幕保护程序文件替换原来的屏幕保护程序文件时,它就起作用了。现在,您可以拥有“每日一词”屏幕保护程序,该屏幕保护程序提供了所选单词的定义。


9

如果您有10.8,则可以从Dictionary.app的首选项中启用法语,德语,简体中文和西班牙语词典:

但是,它们似乎并未显示为“每日一词”屏幕保护程序的选择:

启用字典后,我也尝试重新启动。


3
是的,它们确实不会出现在屏幕保护程序中。
scrrr

8
不知道为什么这篇文章获得了如此多的赞誉-根本没有解决问题:(
xji

1

如果有人在2018年仍然对此感兴趣,并遇到这个问题。

我刚刚更新到OS X Mojave,并在找到Word of the Day.saver文件/System/Library/Screen Savers/。在此软件包中,转到Contents/Resources/WordLists/,您可以找到Mojave WotD中使用的5个.plist文件(它们添加了三个普通话/广东话汉语词典)。在那里,您可以使用上面的jsomers方法。

自苹果将系统完整性保护添加到OS X以来已经有一段时间了,因此您必须先禁用它,然后再写入.plist文件。

我很高兴苹果公司没有放弃旧的WotD,而是在Mojave中对其进行了一些更新。希望他们将来能提供更多的词典选择。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.