Sur un fil de commentaire plutôt obscur, quelqu'un a expliqué où vous pourriez trouver la liste de mots que Apple utilise pour alimenter l'économiseur d'écran. C'est à /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt
. Le fichier ressemble à ceci :
m_en_us1282510 quinsy
m_en_us1273791 orbicular
m_en_us1220945 alimony
m_en_us1250517 génome
Il s'agit d'une liste d'entrées séparées par des tabulations. À droite, vous avez le mot et à gauche, ce qui ressemble à un ID. Mais à quoi correspond cet ID et comment pourriez-vous le trouver pour un autre mot qui ne figure pas déjà dans la liste?
Comme vous vous en doutez peut-être, l'ID fait référence à une entrée dans le dictionnaire par défaut d'Apple, le "New Oxford American Dictionary". (C'est ce que "NOAD" signifie dans le chemin de la liste de mots ci-dessus.)
Comment trouver les IDs pour d'autres mots?
Un certain Joseph Gentle, dans une série de billets de blog, montre comment accéder aux données sous-jacentes des dictionnaires d'Apple. Dans son billet "Dictionnaires Apple, partie 2", il indique un code qui décompresse le fichier binaire pertinent (stocké dans /Library/Dictionaries
) en XML. En utilisant les fichiers dedict.c
et strip.c
trouvés ici, et en suivant l'exemple de Gentle, j'ai utilisé les commandes bash suivantes pour accéder au XML du NOAD (ces commandes sont exécutées depuis le répertoire où vous avez téléchargé les fichiers dedict.c
et strip.c
) :
clang dedict.c -Wall -lz -o dedict
clang strip.c -Wall -lz -o strip
./dedict "New Oxford American Dictionary" | ./strip > dict.xml
Quand j'ai affiché les premières lignes du fichier dict.xml
, j'ai vu quelque chose de prometteur, avec des entrées qui ressemblaient à ceci :
Remarquez le paramètre id
... c'est un identifiant qui ressemble exactement à celui de la liste de mots de l'économiseur d'écran!
J'ai écrit le script Ruby suivant pour analyser le XML, puis, en utilisant ma propre liste de mots, créer un nouveau fichier d'économiseur d'écran qui associe mes propres mots à leurs IDs dans le dictionnaire :
raw = File.open("./dict.xml").read
my_words = File.open("./word_list.csv").readlines.map { |line| line.split(',')[1] }
word_id_map = {}
raw.scan(//).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
Quand j'ai remplacé le fichier d'économiseur d'écran original par ce nouveau fichier, ça a marché. Vous pouvez maintenant avoir un économiseur d'écran "Mot du jour" qui donne des définitions pour les mots que vous choisissez.
1 votes
Avez-vous de la chance? Il semble absolument absurde que seuls les dictionnaires anglais et japonais puissent être sélectionnés, mais je n'ai trouvé aucun moyen de contourner cela.
1 votes
Il semble que ce projet / easter egg bâclé a été abandonné après OS X 10.8.