Причина тривиальна: я поклонник экранной заставки «Слово дня» и хотел бы добавить словари для языков, отличных от английского и японского (это два, которые я могу выбрать сейчас в опциях экранной заставки).
Как я могу это сделать?
Причина тривиальна: я поклонник экранной заставки «Слово дня» и хотел бы добавить словари для языков, отличных от английского и японского (это два, которые я могу выбрать сейчас в опциях экранной заставки).
Как я могу это сделать?
Ответы:
В довольно неясной ветке комментариев кто-то объяснил, где вы можете найти список слов, который 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
Когда я заменил оригинальный файл заставки на новый, это сработало. Теперь у вас может быть заставка «Слово дня», которая дает определения для выбранных вами слов.
Если у вас есть 10.8, вы можете включить словари французского, немецкого, упрощенного китайского и испанского языков из настроек Dictionary.app:
Похоже, они не отображаются в качестве выбора для заставки «Слово дня»:
Я также попытался перезапустить после включения словарей.
В случае, если кто-то все еще заинтересован в этом в 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 и немного обновила его в Мохаве. Надеюсь, что они могут предоставить еще больше словарных вариантов в будущем.
Это должно решить вашу проблему: http://www.makeuseof.com/tag/easily-expanding-apple-dictionary-–-mac-only/