Il motivo è banale: sono un fan dello screen saver "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 dello screen saver).
Come posso farlo?
Il motivo è banale: sono un fan dello screen saver "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 dello screen saver).
Come posso farlo?
Risposte:
Su un thread di commento piuttosto oscuro, 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 è simile al seguente:
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 hai la parola e sulla sinistra quello che sembra un ID. Ma a cosa serve un ID e come potresti trovarlo per un'altra parola non già presente nell'elenco?
Come prevedibile, l'ID si riferisce a una voce nel dizionario predefinito di Apple, il "New Oxford American Dictionary". (Ecco cosa significa "NOAD" nel percorso dell'elenco di parole 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 alla base dei dizionari Apple. Nel suo post "dizionari Apple, parte 2" , punta al codice che decomprime il file binario pertinente (archiviato in /Library/Dictionaries
) in XML. Usando i file dedict.c
e strip.c
trovati qui , e seguendo l'esempio di Gentle, ho usato i seguenti comandi bash per accedere all'XML del 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 ho head
scritto le prime righe del dict.xml
file, ho visto qualcosa di promettente, con voci simili a queste:
<d:entry xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng" id="m_en_us1219333" d:title="abode" class="entry">
Nota che id
param ... è un identificatore che assomiglia esattamente a quello nell'elenco delle parole dello screensaver!
Ho scritto il seguente script Ruby per analizzare l'XML e quindi, usando il mio elenco di parole, ho creato un nuovo file salvaschermo 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 originale dello screensaver 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:
Tuttavia non sembrano essere mostrati come scelte per lo screensaver della Parola del giorno:
Ho anche provato a riavviare dopo aver abilitato i dizionari.
Nel caso in cui qualcuno fosse ancora interessato a questo nel 2018 e ti imbatti in questo ...
Ho appena aggiornato OS X Mojave e ho trovato un Word of the Day.saver
file su /System/Library/Screen Savers/
. In questo pacchetto, vai a Contents/Resources/WordLists/
, e puoi trovare i 5 file .plist usati nel WotD Mojave (hanno aggiunto tre dizionari di cinese mandarino / cantonese). Lì puoi usare 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 'in Mojave. Spero che possano fornire ancora più opzioni di dizionario in futuro.
Questo dovrebbe risolvere il tuo problema: http://www.makeuseof.com/tag/easily-expanding-apple-dictionary-–-mac-only/