ฉันจะติดตั้งพจนานุกรมใหม่บน OS X เพื่อใช้กับสกรีนเซฟเวอร์“ Word of the Day” ได้อย่างไร?


25

เหตุผลเป็นเรื่องเล็กน้อย: ฉันเป็นแฟนของโปรแกรมรักษาหน้าจอ "Word of the Day" และฉันต้องการเพิ่มพจนานุกรมสำหรับภาษาอื่นนอกเหนือจากภาษาอังกฤษและภาษาญี่ปุ่น

ฉันจะทำมันได้อย่างไร


1
มีโชคหรือเปล่า? ดูเหมือนว่าไม่มีเหตุผลที่จะเลือกเฉพาะพจนานุกรมภาษาอังกฤษและภาษาญี่ปุ่นเท่านั้น แต่ฉันไม่พบวิธีแก้ไข
xji

1
ดูเหมือนว่าโครงการครึ่งชีวิต / ไข่อีสเตอร์ที่ถูกทอดทิ้งหลังจาก OS X 10.8
xji

คำตอบ:


16

ในกระทู้ความคิดเห็นที่ค่อนข้างคลุมเครือบางคนอธิบายว่าคุณอาจพบรายการคำศัพท์ที่ Apple ใช้ในการเพิ่มพลังให้สกรีนเซฟเวอร์ /System/Library/Graphics/Quartz\ Composer\ Plug-Ins/WOTD.plugin/Contents/Resources/NOAD_wotd_list.txtมันอยู่ที่ ไฟล์มีลักษณะดังนี้:

m_en_us1282510  quinsy
m_en_us1273791  orbicular
m_en_us1220945  alimony
m_en_us1250517  genome

มันเป็นรายการของรายการที่คั่นด้วยแท็บ ทางด้านขวาคุณมีคำว่าและทางซ้ายสิ่งที่ดูเหมือน ID แต่มันคือรหัสสำหรับอะไรและคุณจะหามันสำหรับคำอื่นที่ไม่ได้อยู่ในรายการได้อย่างไร

อย่างที่คุณคาดไว้ ID อ้างอิงถึงรายการในพจนานุกรมเริ่มต้นของ Apple คือ "New Oxford American Dictionary" (นั่นคือสิ่งที่ "NOAD" หมายถึงในเส้นทางรายการคำด้านบน)

จะหารหัสสำหรับคำอื่น ๆ ได้อย่างไร?

เพื่อนคนหนึ่งชื่อโจเซฟเจนเทิลในชุดบทความบล็อกแสดงวิธีรับข้อมูลจากพจนานุกรมของ Apple ในโพสต์"พจนานุกรมของ Apple ตอนที่ 2"เขาชี้ไปที่รหัสที่คลายไฟล์ไบนารีที่เกี่ยวข้อง (เก็บไว้/Library/Dictionaries) ลงใน XML การใช้ไฟล์dedict.cและstrip.cพบได้ที่นี่และตามตัวอย่างของ Gentle ฉันใช้คำสั่ง bash ต่อไปนี้เพื่อรับที่ XML ของ NOAD (คำสั่งเหล่านี้เรียกใช้จากไดเรกทอรีที่คุณดาวน์โหลดdedict.cและstrip.cไฟล์):

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

เมื่อฉันhead-ed สองสามบรรทัดแรกของdict.xmlไฟล์ฉันเห็นสิ่งที่มีแนวโน้มด้วยรายการที่มีลักษณะเช่นนี้:

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

ขอให้สังเกตว่าidพารามิเตอร์ ... มันเป็นตัวบ่งชี้ที่ดูเหมือนว่าหนึ่งในรายการคำสกรีนเซฟเวอร์!

ฉันเขียนสคริปต์ Ruby ต่อไปนี้เพื่อวิเคราะห์ XML แล้วใช้รายการคำศัพท์ของฉันเองสร้างไฟล์สกรีนเซฟเวอร์ใหม่ที่แมปคำของตัวเองกับ ID ในพจนานุกรม:

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

เมื่อฉันแทนที่ไฟล์สกรีนเซฟเวอร์ดั้งเดิมด้วยไฟล์ใหม่มันใช้งานได้ ตอนนี้คุณสามารถมีสกรีนเซฟเวอร์ "คำศัพท์ประจำวัน" ที่ให้คำจำกัดความของคำที่คุณเลือก


9

หากคุณมี 10.8 คุณสามารถเปิดใช้งานพจนานุกรมฝรั่งเศสเยอรมันจีนประยุกต์และสเปนจากการตั้งค่าของ Dictionary.app:

ดูเหมือนว่าพวกเขาจะไม่ปรากฏเป็นตัวเลือกสำหรับสกรีนเซฟเวอร์ Word of the Day แต่:

ฉันลองรีสตาร์ทอีกครั้งหลังจากเปิดใช้งานพจนานุกรม


3
ใช่พวกเขาไม่ปรากฏในสกรีนเซฟเวอร์แน่นอน
scrrr

8
ไม่มีความคิดว่าเหตุใดโพสต์นี้มีผู้อัปโหลดจำนวนมาก - ไม่ได้แก้ปัญหาเลย :(
xji

1

ในกรณีที่ใคร ๆ ก็ยังสนใจในเรื่องนี้ในปี 2018 และเจอสิ่งนี้ ..

ฉันเพียงแค่การปรับปรุงเพื่อ OS X ซ้อมและพบไฟล์ที่Word of the Day.saver /System/Library/Screen Savers/ในแพ็คเกจนี้ไปที่Contents/Resources/WordLists/และคุณสามารถค้นหาไฟล์. plist 5 ไฟล์ที่ใช้ใน Mojave WotD (พวกเขาเพิ่มพจนานุกรมภาษาจีนกลาง / กวางตุ้งจีนสามไฟล์) คุณสามารถใช้วิธีของ jsomers ด้านบนได้

และอีกไม่นานหลังจากที่ Apple เพิ่มการป้องกันความสมบูรณ์ของระบบลงใน OS X ดังนั้นคุณจะต้องปิดการใช้งานก่อนที่จะเขียนลงในไฟล์. plist

ฉันมีความสุขมากที่ Apple ไม่ได้ยอมแพ้กับ WotD ตัวเก่าที่ดีและอัพเดทมันเล็กน้อยในโมฮาวี หวังว่าพวกเขาสามารถให้ทางเลือกพจนานุกรมได้มากขึ้นในอนาคต


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.