Как я могу установить новый словарь в OS X для использования с заставкой «Слово дня»?

25

Причина тривиальна: я поклонник экранной заставки «Слово дня» и хотел бы добавить словари для языков, отличных от английского и японского (это два, которые я могу выбрать сейчас в опциях экранной заставки).

Как я могу это сделать?

scrrr
источник
1
При удаче? Кажется, нет никакого смысла в том, что можно выбирать только словари английского и японского языков, но я не нашел способа обойти это.
xji
1
Похоже на недоделанный проект / пасхальное яйцо, заброшенное после OS X 10.8.
xji

Ответы:

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

Это список разделенных табуляцией записей. Справа у вас есть слово, а слева то, что выглядит как удостоверение личности. Но для чего это идентификатор, и как вы сможете найти его для другого слова, которого еще нет в списке?

Как и следовало ожидать, идентификатор относится к записи в словаре Apple по умолчанию, «Новый Оксфордский американский словарь». (Это то, что означает «NOAD» в пути к списку слов выше.)

Как найти идентификаторы для других слов?

Парень по имени Джозеф Джентл в серии постов в блоге показывает, как получить доступ к данным, лежащим в основе словарей Apple. В своем посте «Словари Apple, часть 2» он указывает на код, который распаковывает соответствующий двоичный файл (хранящийся в /Library/Dictionaries) в XML. Использование dedict.cи strip.cфайлы найдены здесь , и следующего примером нежного, я использовал следующие команды Баша , чтобы получить в XML - Noad ( в этих команды выполняются из каталога , где вы загрузили dedict.cи strip.cфайлы):

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

Когда я headпрочитал первые несколько строк dict.xmlфайла, я увидел что-то многообещающее, с записями, которые выглядели так:

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

Обратите внимание, что idпараметр ... это идентификатор, который выглядит точно так же, как в списке слов заставки!

Я написал следующий скрипт Ruby для анализа XML, а затем, используя свой собственный список слов, создаю новый файл заставки, который сопоставляет мои собственные слова с их идентификаторами в словаре:

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

Когда я заменил оригинальный файл заставки на новый, это сработало. Теперь у вас может быть заставка «Слово дня», которая дает определения для выбранных вами слов.

jsomers
источник
9

Если у вас есть 10.8, вы можете включить словари французского, немецкого, упрощенного китайского и испанского языков из настроек Dictionary.app:

Похоже, они не отображаются в качестве выбора для заставки «Слово дня»:

Я также попытался перезапустить после включения словарей.

LRI
источник
3
Да, они не появляются в заставке, точно.
scrrr
8
Понятия не имею, почему этот пост получил так много откликов - Вопрос вообще не решался :(
xji
1

В случае, если кто-то все еще заинтересован в этом в 2018 году и столкнется с этим ..

Я только что обновился до OS X Mojave и нашел Word of the Day.saverфайл по адресу /System/Library/Screen Savers/. В этом пакете перейдите Contents/Resources/WordLists/, и вы найдете 5 файлов .plist, используемых в Mojave WotD (они добавили три китайских / кантонских словаря Мандарин). Там вы можете использовать метод jsomers выше.

Кроме того, Apple давно добавила Системную защиту целостности в OS X, поэтому вам придется отключить ее перед записью в файл .plist.

Я очень рад, что Apple не отказалась от старого доброго WotD и немного обновила его в Мохаве. Надеюсь, что они могут предоставить еще больше словарных вариантов в будущем.

Алан Чжу
источник