Jak mogę zainstalować nowy słownik w systemie OS X do użytku z wygaszaczem ekranu „Słowo dnia”?

25

Powód jest trywialny: jestem fanem wygaszacza ekranu „Słowo dnia” i chciałbym dodać słowniki dla języków innych niż angielski i japoński (są to dwa, które mogę teraz wybrać w opcjach wygaszacza ekranu).

Jak mogę to zrobić?

scrrr
źródło
1
Trochę szczęścia? Wydaje się, że absolutnie nie ma sensu, że można wybierać tylko słowniki angielskie i japońskie, ale nie znalazłem sposobu na obejście tego.
Xji
1
Wydaje się, że projekt OSA 10.8 został na wpół osamotniony / pisanka została porzucona.
Xji

Odpowiedzi:

16

W dość niejasnym wątku komentarza ktoś wyjaśnił, gdzie możesz znaleźć listę słów, których Apple używa do zasilania wygaszacza ekranu. To jest o /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt. Plik wygląda następująco:

m_en_us1282510  quinsy
m_en_us1273791  orbicular
m_en_us1220945  alimony
m_en_us1250517  genome

Jest to lista pozycji oddzielonych tabulatorami. Po prawej stronie masz słowo, a po lewej coś, co wygląda jak identyfikator. Ale po co to jest identyfikator i jak można go znaleźć dla innego słowa, którego nie ma na liście?

Jak można się spodziewać, identyfikator odnosi się do pozycji w domyślnym słowniku Apple, „New Oxford American Dictionary”. (To właśnie oznacza „NOAD” na ścieżce listy słów powyżej.)

Jak znaleźć identyfikatory dla innych słów?

Facet o imieniu Joseph Gentle w serii postów na blogu pokazuje, jak uzyskać dostęp do danych leżących u podstaw słowników Apple. W swoim poście „Słowniki Apple, część 2” wskazuje na kod, który rozpakowuje odpowiedni plik binarny (przechowywany w nim /Library/Dictionaries) na XML. Używanie dedict.ci strip.cznaleźć pliki tutaj , a Poniższy przykład jest łagodny, użyłem następujących poleceń bash, aby uzyskać na XML Noad za (te polecenia są uruchamiane z katalogu, w którym pobrane dedict.ci strip.cpliki):

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

Kiedy headkliknąłem kilka pierwszych wierszy dict.xmlpliku, zobaczyłem coś obiecującego, z wpisami, które wyglądały tak:

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

Zauważ, że idparam ... to identyfikator, który wygląda dokładnie tak, jak ten na liście słów wygaszacza ekranu!

Napisałem następujący skrypt Ruby, aby przeanalizować XML, a następnie, korzystając z własnej listy słów, utwórz nowy plik wygaszacza ekranu, który mapuje moje słowa na ich identyfikatory w słowniku:

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

Kiedy zastąpiłem oryginalny plik wygaszacza ekranu nowym, zadziałał. Możesz teraz mieć wygaszacz ekranu „Słowo dnia”, który zawiera definicje wybranych słów.

jsomers
źródło
9

Jeśli masz 10,8, możesz włączyć słowniki francuski, niemiecki, chiński uproszczony i hiszpański z preferencji Dictionary.app:

Nie wydają się jednak pokazywane jako opcje wygaszacza ekranu Word of the Day:

Próbowałem również uruchomić ponownie po włączeniu słowników.

Lri
źródło
3
Tak, dokładnie nie pojawiają się w wygaszaczu ekranu.
scrrr
8
Nie mam pojęcia, dlaczego ten post otrzymał tak wiele pozytywnych opinii - W ogóle nie rozwiązałem pytania :(
xji 16.04.15
1

Na wypadek, gdyby ktoś był tym zainteresowany w 2018 roku i natknął się na to ..

Właśnie zaktualizowałem system do OS X Mojave i znalazłem Word of the Day.saverplik na /System/Library/Screen Savers/. W tym pakiecie przejdź do Contents/Resources/WordLists/, a znajdziesz 5 plików .plist używanych w Mojave WotD (dodali trzy chińskie słowniki mandaryński / kantoński). Tam możesz użyć powyższej metody jsomers.

Minęło też trochę czasu, odkąd Apple dodał ochronę integralności systemu do OS X, więc będziesz musiał ją wyłączyć przed zapisaniem do pliku .plist.

Cieszę się, że Apple nie zrezygnowało z dobrego starego WotD i trochę go zaktualizowało w Mojave. Mam nadzieję, że w przyszłości będą oferować jeszcze więcej opcji słownikowych.

Alan Zhu
źródło