Предыстория
Какое-то время назад я купил Lingvo 11 «Шесть языков», ту версию, которая стоила около 2000 руб. Покупал в основном для того, чтобы использовать на наладоннике, потому что словари Multilex для наладонника продавались каждый язык отдельно, и нужный мне набор получался дороже, чем хотелось бы. Однако в Lingvo 11 входила и версия для Windows. Более того, мне пришлось её поставить, чтобы установить словари в наладонник, но с тех пор я так и не мог ей воспользоваться (потому что пользуюсь я каждодневно линуксом). А недавно стало обидно: такие деньги заплачены, а словари лежат… Тем более, что lingvo.yandex.ru доступен не всегда.
Посещение форума Lingvo показало, что АББИИ как не хотела, так и не хочет делать оболочку Lingvo ни для линукса, ни для маков… Можно сказать даже всячески препятствуют использованию своего продукта в не-Windows операционных системах и эмуляторах.
Оболочки же для словарей в линукс и на маке давно есть готовые (
stardict
, например, или его консольная версия sdcv
, TranslateIt на маке). Достаточно было бы продавать словари в любом открытом формате, но ни продавать, ни лицензировать словари отдельно в АББИИ не хотят. И с сайта stardict.sourceforge.net коллекцию сконвертированных в формат stardict словарей заставили недавно убрать.Закон РФ и юридическое творчество АББИИ
На мой взгляд в этом случае я, как обладатель экземпляра программы вправе изменить программу/базу данных так, чтобы она работала на моих технических средствах и взаимодействовала с использумым мною программами (ст. 1280 новой четвёртой главы ГК РФ).
ГК, глава 4:
Статья 1280. Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ
1. Лицо, правомерно владеющее экземпляром программы для ЭВМ или экземпляром базы данных (пользователь), вправе без разрешения автора или иного правообладателя и без выплаты дополнительного вознаграждения:
1) внести в программу для ЭВМ или базу данных изменения исключительно в целях их функционирования на технических средствах пользователя и осуществлять действия, необходимые для функционирования таких программы или базы данных в соответствии с их назначением, в том числе запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети), а также осуществить исправление явных ошибок, если иное не предусмотрено договором с правообладателем;
2) изготовить копию программы для ЭВМ или базы данных при условии, что эта копия предназначена только для архивных целей или для замены правомерно приобретенного экземпляра в случаях, когда такой экземпляр утерян, уничтожен или стал непригоден для использования. При этом копия программы для ЭВМ или базы данных не может быть использована в иных целях, чем цели, указанные в подпункте 1 настоящего пункта, и должна быть уничтожена, если владение экземпляром таких программы или базы данных перестало быть правомерным.
К слову сказать, в лицензионном соглашении АББИИ «заботливо» прописала вот что (это копи-паст из соглашения к 12-й версии Lingvo, но если мне память мне не изменяет, в 11-й было написано так же):
8.3. Вы обязуетесь не осуществлять самостоятельно и не разрешать третьим лицам осуществлять следующие действия.
8.3.1. Деассемблировать, декомпилировать (преобразовывать объектный код в исходный текст) ПО (включая программы, базы данных (в том числе словари) и другие компоненты ПО), за исключением случаев и только в объеме, явным образом разрешенном применимым законодательством. Если применимое законодательство разрешает подобные действия, любая информация, полученная таким способом, не должна раскрываться третьим лицам, если только такое раскрытие не предусмотрено применимым законодательством, и должна быть немедленно сообщена Компании ABBYY. Вся такая информация является конфиденциальной и принадлежит Компании ABBYY.
К счастью, законодательство РФ явно разрешает декомпиляцию объектного кода в исходный текст (пункт 3 вышеупомянутой статьи 1280 ГК), если это необходимо для обеспечения взаимодействия с декомпилируемой программой (формально, достаточным поводом для этого является написание на bash скрипта, который вызывает stardict, которому нужны словари).
Дело техники
Итак, когда мне потребовалось воспользоваться словарём, я почитал всякие советы и блоги в интернете (рекомендую заметку Перенос словарей Lingvo из ABBYY Lingvo в stardict (на jack.kiev.ua) и пост на форуме AlReader), и сделал так:
1. Скопировал бинарные словари в формате .lsd в отдельный каталог, туда же скопировал
DslComp.exe
и все DLL-ки из каталога с устанной Lingvo.2. Поправил бинарный файл
DslComp.exe
(с помощью -b режима и xxd в vim), заменив по смещению 0004E8E1 байт 84 на байт 32. Эта замена включает в DslComp.exe недокументированную функцию декомпиляции словарей. Понятно, что то, какой байт и где заменять сильно зависит от версии Lingvo, и тот вариант, который описан у jack.kiev.ua у меня не подходит, а подошёл тот, который был указан на форуме alreader.com.На форумах в интернете можно найти «патчи» для DslComp.exe из Lingvo версий с 9-й по 11-ю. Про 12-ю ничего не видел, но и специально не искал. Как я понял, пользователям версии 8.0 и более ранних этим извратом (декомпиляцией словарей) заниматься вообще не надо. Так что, если нужно Lingvo в Linux, то лучше покупать самую старую версию, какую только найдёте. Главное, не 12-ю.
3. После этого запустил
wine DslComp.exe
, и выбрал там конвертацию из .sdl в .dsl. Получилось. Полученный файл .dsl — это простой текстовый файл в кодировке UTF-16. Возможно, из него потребуется вырезать упоминания про файлы с произношением (мне не пришлось).4. Затем я взял программку makedict с xdxf.sourceforge.net (Converter: many to many), собрал её. Конвертация словаря .dsl в формат stardict деляется с помощью неё так:
$ makedict -i dsl -o stardict Словарь.dsl
Словарь в формате stardict будет лежать отдельным подкаталогом. Его нужно переместить в
/usr/share/stardict/dic/
. Дополнение: или, как заметил SIR, в домашний каталог пользователя, ~/.stardict/dic/
(Спасибо!).Вроде всё. Если всё работает, резервную копию словарей в Windows можно удалять.
Информация к размышлению
Эта заметка показывает весь «блеск» несвободного программного обеспечения. Условия его использования противоречат интересам пользователей, и удовольствие за такие деньги ниже среднего. Тонкости и нюансы несвободных лицензий тоже создают дополнительные неудобства, ограничения и риски. В случае Lingvo, технически, использовать словари в GNU/Linux вместе с stardict возможно, но это требует получасовой возни. На мой взгляд, такое использование законно, но при использовании в организации лучше, наверное, проконсультироваться с юристом, а не с моим блогом :) На практике могу лишь посоветовать не покупать последнюю версию Lingvo. А лучше купить уже бывшую в употреблении старую версию (чтобы не платить проприетарщикам). В идеале — восьмую или более ранюю (чтобы не заниматься декомпиляцией словарей). Благо, на том же молотке.ру такие предложения бывают.
Дополнение: Читатели в комментариях дали вот эту ссылку, что нужно менять в dslcomp.exe в 12-й версии Lingvo (по-англ.)