Перенесення словників з abbyy lingvo в stardict, aj

Здійснилося.
Нарешті можна повністю відмовитися від роботи з ABBYY Lingvo в емуляторі під Linux'ом і повністю перейти на використання Stardict зі словниками з Lingvo.

Майже рівно через рік після написання цього статті в мої руки потрапила 12-я лінгва.
Все написане нижче може бути застосовано і до неї. Словники так само без проблем декомпілюються, а потім конвертуються в формат стардікта. Так що дерзайте, шукайте в Мережі потрібні для заміни байтікі в dslcomp.exe і вперед!

вступ

Однак, яке ж було моє здивування, коли я дізнався про те, що виявляється конвертер dsl2stardict вже існує! Разом, замість того, щоб невизначено довго писати свій власний конвертер, я взяв уже готовий і, практично нічого не змінюючи в ньому, отримав потрібний результат.

Погодьтеся, це більш, ніж приємно :)

  • словники Lingvo в форматі .lsd
  • компілятор словників DslComp.exe з необхідними бібліотеками
    (Awl.dll, FineObj.dll, LangInfoUnicode.dll, Lingvo0.dll, msvcr71.dll)
  • емулятор wine
  • makedict в початкових текстах + софт, необхідний для його збірки
  • власне, сам stardict з утилітою dictzip

Перші два пункти є на оригінальних компакт-дисках або їх образах (версія 11ML вийшла на двох CD і нижче буде описана робота саме з нею).

Загальна схема досить проста:

  1. конвертуємо lsd в dsl (dslcomp.exe)
  2. збираємо makedict (make)
  3. перетворюємо словники з формату dsl в формат stardict (makedict)
  4. користуємося :)

У кожному з пунктів є свою нюанси, про які буде розказано нижче.

1. Для початку нам знадобиться пропатчити екзешнік. Власне, це і є порушення копірайтів. Подробиці про те, як це зробити в Линух, дивіться в першій статті.

Ось байти, які потрібно виправити (DslComp.exe ML 11.0.0.486. 1 115 072 байти):
0003C22F: 27-> 68
0003C298: CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC-> 83C6048D4424145650E82B68FCFFEBA7
00050881: 84-> 32
00053CE2: 01-> 00

Запускаємо компілятор wine DslComp.exe і перетворюємо потрібні нам словники в формат DSL.

Тепер нам знадобиться трохи підправити отримані вихідні деяких словників, видаливши в них посилання на wav-файли. Це потрібно виконати з тієї причини, що через отстутствия оних stardict показує порожні картки там, де є звук. Особисто мені «аудіосупровід» абсолютно не потрібно, тому я сміливо видалив ці посилання.

Виконується ця операція серією следущих простих команд (які, злегка подшаманіть, можна об'єднати в універсальний скрипт):

На підбирання потрібного регулярного виразу я витратив пару годин.
Якщо у iconv 'а виникнуть проблеми з деякими символами, скористайтеся опцією -c.

Слід зазначити, що існує можливість видерти wav'и з файлу зі звуком, однак, як я вже говорив, особисто мені це не треба було. До того ж поняття не маю про те, як stardict працює зі звуком. Якщо є у кого бажання поколупатися - велкам. У мене ж час обмежений.

2. З цим все просто.
Йдемо на сайт XDXF - XML ​​Dictionary Exchange Format. викачуємо makedict-0.2beta1.tar.bz2. розпаковуємо, configure, make і в підкаталозі src отримуємо виконуваний файл makedict.
Попередньо потрібно встановити компілятор gcc-c ++ з усіма необхідними залежностями.

3. Конвертуємо словники командою типу:

На виході отримуємо три файли:
LingvoUniversalER.dict - власне, словник.
LingvoUniversalER.idx - індекс.
LingvoUniversalER.ifo - опис.

Словник можна стиснути утилітою dictzip. щоб зменшити розмір словника. В результаті отримаємо файл з розширенням .dict.dz.
Індекс теж можна стиснути звичайним gzip 'ом.
Файл опису можна підредагувати на свій розсуд, попередньо ознайомившись з форматом словників stardict, щоб не наламати дров. Хоча отриманий файл можна відразу сміливо використовувати.
Всі три файли кладуться в каталог / usr / share / stardict / dic

4. Запускаємо stardict і вперед :)
Якщо він був запущений, запустіть його.

Ось, що вийшло у мене:

Плюс скріншот головного вікна:

Як бачите є проблеми з транскрипцією. Після декомпіляцію словників навіть в оригінальній кодуванні UTF16 там все одно така ось каша. Як це побороти, я поки не знаю.

Updated: Згідно ЛОРа в новій версії xdxf це вже виправлено.

висновок

В результаті я нарешті зміг позбутися роботи з емулятором, заощадивши дисковий простір і підвищивши продуктивність своєї праці зарахунок відсутності глюків Lingvo під CrossOver Office.

Переконливе прохання до всіх не поширювати перетворені таким чином словники в паблік. Подобається продукт - купіть його, а вже потім робіть з ним, що дозволить ліцензія (хоча зміна декількох байтів в компіляторі словників все ж порушує його; повірте мені, я добре вивчив ліцензійну угоду перед тим, як узявся за написання цієї статті).

Також не забуваємо, що ABBYY Lingvo претендує на звання не просто електронного словника, а щось більшого (пошук за окремими словами в реченні, система навчання, створення своїх словників та ін.) Якщо вам потрібні ці можливості, тоді як і раніше використовуйте CrossOver Office Pro від компанії CodeWeavers, остання версія якого (5.0.1) добре зарекомендувала себе в плані роботи з Lingvo. Опис установки Lingvo 11 в CrossOver Office дивіться в моїй другій статті.

Крім того з виходом Lingvo 11ML з'явилася можливість не патчить головний файл, а просто активувати програму за допомогою зручного активатора, присвяченого гальмах з SSG ... :)
У разі придбання ліцензійної версії продукту для досягнення щодо нормальної його роботи в емуляторі під Линух вам швидше за все доведеться вдатися до одного з цих способів. Боюся, що офіційні способи активації можуть не спрацювати.

Як завжди дякую рубордовскому форуму за надані байтікі :)
А також компанії «Російський щит» за хороший промоушн продуктів АБИ.

Схожі статті