Como posso instalar um novo dicionário no OS X para usar com o protetor de tela "Palavra do dia"?

25

O motivo é trivial: sou fã do protetor de tela "Word of the Day" e gostaria de adicionar dicionários para idiomas que não sejam inglês e japonês (esses são os dois que posso selecionar agora nas opções de proteção de tela).

Como eu posso fazer isso?

scrrr
fonte
1
Alguma sorte? Parece não fazer absolutamente nenhum sentido que apenas dicionários em inglês e japonês possam ser selecionados, mas não encontrei nenhuma maneira de contornar isso.
Xji #
1
Parece um projeto / ovo de páscoa meio burro abandonado após o OS X 10.8.
xji

Respostas:

16

Em um tópico de comentário bastante obscuro, alguém explicou onde você pode encontrar a lista de palavras que a Apple usa para ativar o protetor de tela. É às /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txt. O arquivo fica assim:

m_en_us1282510  quinsy
m_en_us1273791  orbicular
m_en_us1220945  alimony
m_en_us1250517  genome

É uma lista de entradas separadas por tabulação. À direita, você tem a palavra e, à esquerda, o que parece um ID. Mas para que serve um ID e como você poderia encontrá-lo para outra palavra que ainda não está na lista?

Como você pode esperar, o ID refere-se a uma entrada no dicionário padrão da Apple, o "New Oxford American Dictionary". (É isso que "NOAD" significa no caminho da lista de palavras acima.)

Como encontrar os IDs para outras palavras?

Um colega chamado Joseph Gentle, em uma série de postagens no blog, mostra como obter os dados subjacentes aos dicionários da Apple. Em sua postagem "Apple dicionários, parte 2" , ele aponta para o código que descompacta o arquivo binário relevante (armazenado em /Library/Dictionaries) no XML. Usando os arquivos dedict.ce strip.cencontrados aqui , e seguindo o exemplo de Gentle, usei os seguintes comandos bash para obter o XML do NOAD (esses comandos são executados no diretório em que você baixou os arquivos dedict.ce 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 headeditei as primeiras linhas do dict.xmlarquivo, vi algo promissor, com entradas parecidas com esta:

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

Observe que idparam ... é um identificador que se parece exatamente com o da lista de palavras do protetor de tela!

Escrevi o seguinte script Ruby para analisar o XML e, usando minha própria lista de palavras, crie um novo arquivo de proteção de tela que mapeie minhas próprias palavras para seus IDs no dicionário:

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 substituí o arquivo original do protetor de tela por um novo, ele funcionou. Agora você pode ter um protetor de tela "Palavra do dia" que fornece definições para as palavras que você escolhe.

jsomers
fonte
9

Se você possui o 10.8, pode ativar os dicionários francês, alemão, chinês simplificado e espanhol nas preferências do Dictionary.app:

Eles não parecem ser mostrados como opções para o protetor de tela Palavra do Dia:

Eu também tentei reiniciar depois de ativar os dicionários.

Lri
fonte
3
Sim, eles não aparecem exatamente no protetor de tela.
scrrr
8
Não sei por que este post recebeu tantos upvotes- Não resolveu a questão de maneira alguma :(
xji
1

Caso alguém ainda esteja interessado nisso em 2018 e se depare com isso ..

Acabei de atualizar para o OS X Mojave e encontrei um Word of the Day.saverarquivo em /System/Library/Screen Savers/. Neste pacote, vá para Contents/Resources/WordLists/e você pode encontrar os 5 arquivos .plist usados ​​no Mojave WotD (eles adicionaram três dicionários de chinês mandarim / cantonês). Lá você pode usar o método de jsomers acima.

Também já faz um tempo desde que a Apple adicionou a Proteção de Integridade do Sistema ao OS X, então você precisará desativá-la antes de gravar no arquivo .plist.

Estou muito feliz que a Apple não tenha desistido do bom e velho WotD e o tenha atualizado um pouco no Mojave. Espero que eles possam fornecer ainda mais opções de dicionário no futuro.

Alan Zhu
fonte