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

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

¿Cómo puedo hacerlo?

  • ¿Cómo se puede sincronizar "ortografía aprendida" entre Macs
  • ¿Cómo acceder a los icons instalados por el usuario con el keyboard?
  • Cómo recuperar la partición eliminada y get su UUID en macOS
  • ¿Cómo mantener sincronizadas las fotos de iPhone en Mac?
  • Outlook 2011: ¿cómo desactivar la corrección automática?
  • ¿Cómo "search y replace" en un PDF en OS X?
  • Causa de cierre -128
  • ¿Cómo puedo usar RSVG con ImageMagick?
  • Directorio de soporte de aplicaciones, ¡algunas aplicaciones usan mucho espacio!
  • Crear una estructura de carpeta pnetworkingeterminada e insert la date actual en el terminal por un solo command?
  • Extrae pistas de audio individuales de un DVD de audio
  • ¿Cuál es la diferencia entre Dreamweaver_14_LS20.dmg y Dreamweaver_13_LS20.dmg?
  • 3 Solutions collect form web for “¿Cómo puedo instalar un nuevo dictionary en OS X para utilizarlo con el protector de pantalla "Palabra del día"?”

    En un hilo de comentarios bastante oscuro, alguien explicó dónde podría encontrar la list de palabras que Apple usa para encender el protector de pantalla. Está en /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt . El file se ve así:

     m_en_us1282510 quinsy m_en_us1273791 orbicular m_en_us1220945 alimony m_en_us1250517 genome 

    Es una list de inputs separadas por tabuladores. 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 list?

    Como era de esperar, la ID se refiere a una input en el dictionary pnetworkingeterminado de Apple, el "New Oxford American Dictionary". (Eso es lo que significa "NOAD" en el path de la list de palabras arriba).

    ¿Cómo encontrar los ID para otras palabras?

    Un compañero llamado Joseph Gentle, en una serie de publicaciones en el blog, muestra cómo acceder a los datos subyacentes de los dictionarys de Apple. En su publicación "dictionarys de Apple, parte 2" , señala un código que descomprime el file binary relevante (almacenado en /Library/Dictionaries ) en XML. Usando los files dedict.c y strip.c encontrados aquí , y siguiendo el ejemplo de Gentle, utilicé los siguientes commands bash para get el XML de NOAD (estos commands se ejecutan desde el directory donde descargó los files dedict.c y 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 dirigí las primeras líneas del file dict.xml , vi algo prometedor, con inputs 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"> 

    Observe que id param … es un identificador que se ve exactamente como el de la list de palabras del salvapantallas.

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

     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 file original del protector de pantalla con este nuevo, funcionó. Ahora puede tener un salvapantallas de "Palabra del día" que da definiciones para las palabras que elija.

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

    Sin embargo, no parecen mostrarse como opciones para el salvapantallas Palabra del día:

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

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).