Что такое DSL
О языке DSL
DSL (Dictionary Specification Language) — это язык описания электронных словарей (лексиконов). Основное его назначение — описание внешнего вида словарных статей. Эта задача решается в DSL путём разметки текста при помощи небольшого набора структурных и семантических элементов — тэгов. Использование тэгов причисляет DSL к компьютерным формальным языкам разметки гипертекстовых документов, таким как HTML и XML. На сегодняшний день синтаксис DSL включает в себя 32 тэга и команд, а также 7 директив предварительной обработки. Язык DSL не сложен в освоении, с его помощью можно легко создать относительно простой, но красиво оформленный словарь.
Язык DSL был разработан специалистами российской компании ABBYY. Изначально он предназначался для создания электронных словарей с целью использования их в словарной программе Lingvo. Идея создания Lingvo принадлежит Давиду Евгеньевичу Яну, ныне председателю совета директоров ABBYY. К разработке Lingvo он приступил в 1989 году совместно с программистом Александром Москалёвым, будучи тогда студентом факультета общей и прикладной физики МФТИ. Первая версия 1.0 была выпущена в 1990 году. В 1993 Давид Ян защитил диплом на тему «Язык описания словарей DSL».
Справочные материалы по DSL стали включать в дистрибутив программы, начиная с первых версий. Поначалу это были краткие комментарии внутри демонстрационного словарика EXAMPLE.DSL, затем, со временем, было составлено отдельное руководство. Утилита для компилирования пользовательских словарей также входила в самые ранние дистрибутивы. Поначалу она именовалась LC.COM (Lingvo Compiler), а с версии 6.0 приобрела своё современное название — DSL Compiler. Обнародование материалов по языку DSL и рекомендаций по созданию собственных словарей положили начало широкому распространению DSL и пробудили интерес пользователей к активному словаределанию.
О формате DSL
Говоря о формате DSL, справедливо выделять два случая употребления этого понятия: формат файла и формат словаря.
Файл в формате DSL представляет собой простой текстовый документ с расширением *.dsl, в кодировке ANSI или Unicode (UTF-16 LE), содержащий текст с разметкой на языке DSL.
Словарь в формате DSL — это электронный словарь, состоящий из трёх отдельных, редактируемых файлов: текста словаря, иконки и аннотации. Разновидностью словаря DSL является список аббревиатур, состоящий только из файла текста и подключаемый к основному словарю в качестве дополнения.
DSL рассматривается его создателями — разработчиками из компании ABBYY — как формат исходный и неокончательный. В чистом виде он не может быть подключен к программе ABBYY Lingvo, необходимо компилировать его в формат LSD. Компилированием называется процесс, во время которого происходит перевод (трансляция) из формы, ориентированной на лучшее понимание человеком, в форму, ориентированную на лучшее понимание компьютером. При этом данные из трёх исходных файлов словаря объединяются, сжимаются, кодируются и помещаются в один контейнер — файл *.lsd. Результирующий LSD, будучи сжатым и закодированным, редактированию уже не подлежит. Таким образом, DSL является исходным редактируемым форматом электронного словаря Lingvo, предназначенным для преобразования в целевой нередактируемый формат LSD.
Тем не менее свойства DSL предполагают бо́льшую самостоятельность и независимость. По факту он обладает достаточными средствами для отображения в программах без дополнительных преобразований и компилирования и, кроме того, является форматом открытым.
И, действительно, мы видим, что в настоящее время DSL получил распространение бо́льшее, чем LSD — объект его предназначения. Разработчики других словарных оболочек предпочитают реализовывать в своих программах поддержку DSL напрямую, без компилирования, и крайне редко проявляют интерес к LSD. Относительно последнего известен только один случай: GoldenDict под Android, который позволяет подключать LSD версии x3, хотя и DSL поддерживает тоже.
На сегодняшний день словари DSL поддерживают следующие программы:
В системе Windows: | GoldenDict, SimpleDict. |
В системе Mac OS X: | GoldenDict, TranslateIt!, Leopard Dictionary. |
В системе Linux: | GoldenDict. |
В системе Android: | GoldenDict, Fora Dictionary, JaLingo, SlovoEd, ColorDict. |
В системе iOS: | Dictionary Universal. |
Приведённый список является неполным и его состав может меняться, поскольку формат набирает популярность. Некоторые программы не отображают DSL в исходном виде, но предоставляют средства для его конвертации в свой собственный словарный формат.
Ограничения формата DSL
Максимально допустимая длина «внутреннего» наименования словаря: 255 символов, включая пробельные.
Максимально допустимая длина заголовка статьи: 246 символов, включая пробельные и \ ( ) { } .
Максимально допустимая длина отдельного «слова»: 255 символов, без учёта \ и тэгов. «Словом» является также URL-ссылка.
При компиляции DSL в кодировке UTF-16 учитывается не количество символов, а количество двухбайтовых «слов» (для сравнения: противопоставление code unit и code point в JavaScript). Поэтому суррогатные пары считаются за два символа. Как следствие, если хоть один символ в заголовке с максимальной длиной или в «слове» карточки с максимальной длиной является суррогатной парой (например, клинопись или финикийские буквы), то это уже нарушение границ. Если же все символы — суррогатные пары, ограничение нужно делить на два: максимальный заголовок уже не 246, а 123 символа, максимальная длина «слова» не 255, а 127.