Il motivo è banale: sono un fan del salvaschermo "Parola del giorno" e vorrei aggiungere dizionari per lingue diverse dall'inglese e dal giapponese (questi sono i due che posso selezionare ora nelle opzioni di screen saver ).
Come posso farlo?
In una discussione di commento piuttosto oscura, qualcuno ha spiegato dove potresti trovare l'elenco di parole che Apple utilizza per alimentare lo screensaver. È a /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt
. Il file ha il seguente aspetto:
m_en_us1282510 quinsy
m_en_us1273791 orbicular
m_en_us1220945 alimony
m_en_us1250517 genome
È un elenco di voci separate da tabulazioni. Sulla destra c'è la parola, e sulla sinistra, quello che sembra un ID. Ma di che si tratta di un ID e in che modo riusciresti a trovarlo per un'altra parola non già presente nell'elenco?
Come ci si potrebbe aspettare, l'ID fa riferimento a una voce nel dizionario predefinito di Apple, il "Nuovo dizionario di Oxford americano". (Questo è il significato di "NOAD" nel percorso word-list sopra).
Come trovare gli ID per altre parole?
Un collega di nome Joseph Gentle, in una serie di post sul blog, mostra come ottenere i dati sottostanti i dizionari Apple. Nel suo post "Apple dizionari, parte 2" , indica un codice che decomprime il file binario pertinente (memorizzato in /Library/Dictionaries
) in XML. Utilizzando i file dedict.c
e strip.c
trovati qui , e seguendo l'esempio di Gentle, ho usato i seguenti comandi bash per ottenere all'XAD di NOAD (questi comandi vengono eseguiti dalla directory in cui sono stati scaricati i file dedict.c
e strip.c
):
clang dedict.c -Wall -lz -o dedict
clang strip.c -Wall -lz -o strip
./dedict "New Oxford American Dictionary" | ./strip > dict.xml
Quando I head
-ed le prime righe del file dict.xml
, ho visto qualcosa di promettente, con voci che assomigliavano a questo:
<d:entry xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng" id="m_en_us1219333" d:title="abode" class="entry">
Tieni presente che id
param ... è un identificatore che assomiglia esattamente a quello nell'elenco di parole salvaschermo!
Ho scritto il seguente script di Ruby per analizzare l'XML, e poi, usando il mio elenco di parole, creare un file di nuovo screensaver che associa le mie parole ai loro ID nel dizionario:
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
Quando ho sostituito il file salvaschermo originale con questo nuovo, ha funzionato. Ora puoi avere uno screensaver "Parola del giorno" che fornisce le definizioni per le parole che scegli.
Se hai 10.8, puoi abilitare i dizionari francese, tedesco, cinese semplificato e spagnolo dalle preferenze di Dictionary.app:
TuttavianonsembranoesserevisualizzaticomescelteperloscreensaverdiWordoftheDay:
Ho anche provato a riavviarlo dopo aver abilitato i dizionari.
Nel caso in cui qualcuno fosse ancora interessato a questo nel 2018 e si imbattesse in questo ..
Mi sono appena aggiornato a OS X Mojave e ho trovato un file Word of the Day.saver
in /System/Library/Screen Savers/
. In questo pacchetto, vai a Contents/Resources/WordLists/
, e puoi trovare i 5 file .plist usati nel Mojave WotD (hanno aggiunto tre dizionari cinesi mandarino / cantonese). Qui puoi utilizzare il metodo di jsomers sopra.
Inoltre è passato un po 'di tempo da quando Apple ha aggiunto System Integrity Protection a OS X, quindi dovrai disabilitarlo prima di scrivere nel file .plist.
Sono abbastanza felice che Apple non abbia rinunciato al buon vecchio WotD e l'abbia aggiornato un po 'a Mojave. Spero che possano fornire ancora più scelte di dizionario in futuro.
Leggi altre domande sui tag dictionary macos screensaver