¿Cómo puedo instalar un nuevo diccionario en OS X para usarlo con el protector de pantalla "Palabra del día"?

25

La razón es trivial: soy fanático del protector de pantalla "Palabra del día" y me gustaría agregar diccionarios para otros idiomas además del inglés y el japonés (estos son los dos que puedo seleccionar ahora en las opciones de protector de pantalla).

¿Cómo puedo hacerlo?

scrrr
fuente
1
¿Alguna suerte? Parece que no tiene ningún sentido que solo se puedan seleccionar los diccionarios de inglés y japonés, pero no he podido evitarlo.
xji
1
Parece un proyecto a medias / huevo de Pascua abandonado después de OS X 10.8.
xji

Respuestas:

16

En un hilo de comentarios bastante oscuro, alguien explicó dónde puede encontrar la lista de palabras que Apple usa para activar el protector de pantalla. Es en /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt. El archivo se ve así:

m_en_us1282510  quinsy
m_en_us1273791  orbicular
m_en_us1220945  alimony
m_en_us1250517  genome

Es una lista de entradas separadas por tabulaciones. A la derecha tienes la palabra, y a la izquierda, lo que parece una identificación. Pero, ¿para qué sirve una identificación y cómo podría encontrarla para otra palabra que aún no está en la lista?

Como es de esperar, la ID se refiere a una entrada en el diccionario predeterminado de Apple, el "Nuevo Diccionario Americano de Oxford". (Eso es lo que significa "NOAD" en la ruta de la lista de palabras anterior).

¿Cómo encontrar las ID para otras palabras?

Un compañero llamado Joseph Gentle, en una serie de publicaciones de blog, muestra cómo obtener los datos subyacentes a los diccionarios de Apple. En su publicación "Diccionarios de Apple, parte 2" , señala un código que desempaqueta el archivo binario relevante (almacenado /Library/Dictionaries) en XML. Usando los archivos dedict.cy strip.cque se encuentran aquí , y siguiendo el ejemplo de Gentle, utilicé los siguientes comandos bash para obtener el XML de NOAD (estos comandos se ejecutan desde el directorio donde descargó los archivos dedict.cy strip.c):

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

Cuando headescribí las primeras líneas del dict.xmlarchivo, vi algo prometedor, con entradas que se veían así:

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

Tenga en cuenta que idparam ... ¡es un identificador que se ve exactamente como el de la lista de palabras del protector de pantalla!

Escribí el siguiente script de Ruby para analizar el XML y luego, usando mi propia lista de palabras, creé un nuevo archivo de protector de pantalla que asigna mis propias palabras a sus ID en el diccionario:

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

Cuando reemplacé el archivo original del protector de pantalla con este nuevo, funcionó. Ahora puede tener un protector de pantalla "Palabra del día" que le da definiciones para las palabras que elija.

jsomers
fuente
9

Si tiene 10.8, puede habilitar los diccionarios de francés, alemán, chino simplificado y español desde las preferencias de Dictionary.app:

Sin embargo, no parecen mostrarse como opciones para el protector de pantalla de la Palabra del día:

También intenté reiniciar después de habilitar los diccionarios.

Lri
fuente
3
Sí, no aparecen exactamente en el protector de pantalla.
scrrr
8
No tengo idea de por qué esta publicación obtuvo tantos votos positivos. No resolvió la pregunta en absoluto :(
xji
1

En caso de que alguien todavía esté interesado en esto en 2018 y se encuentre con esto ...

Acabo de actualizar a OS X Mojave y encontré un Word of the Day.saverarchivo en /System/Library/Screen Savers/. En este paquete, vaya a Contents/Resources/WordLists/, y puede encontrar los 5 archivos .plist utilizados en Mojave WotD (agregaron tres diccionarios de chino mandarín / cantonés). Allí puede usar el método de jsomers anterior.

También ha pasado un tiempo desde que Apple agregó la Protección de integridad del sistema al OS X, por lo que deberá desactivarla antes de escribir en el archivo .plist.

Estoy bastante contento de que Apple no se haya dado por vencido con el viejo WotD y lo haya actualizado un poco en Mojave. Espero que puedan proporcionar aún más opciones de diccionario en el futuro.

Alan Zhu
fuente