Строение словаря DSL
Вспомогательный словарь аббревиатур
Общие сведения
Словарь в формате DSL — это электронный словарь, состоящий из нескольких отдельных файлов, как правило трёх: основного текста, иконки и аннотации. Расширения у них разные, а имена должны быть одинаковыми. Такова базовая комплектация. Впрочем, непременно обязательным является только файл основного текста, а два другие могут не использоваться. Дополнением к базовому комплекту может стать ещё отдельный словарик аббревиатур, устройство которого немного отличается от основного.
Словарь DSL нельзя подключить к ABBYY Lingvo непосредственно — нужно преобразовать его в формат LSD. Процесс преобразования называется компилированием. При компилировании данные из трёх исходных файлов объединяются, сжимаются, кодируются и помещаются в один результирующий контейнер — файл *.lsd. Вспомогательный словарик аббревиатур, хотя и является составной частью основного словаря, компилируется отдельно — отдельным файлом *.lsd, о чём будет подробно рассказано ниже.
Дополнительно DSL словарь может содержать иллюстрации, звуковые и видео материалы. Соответствующие этому содержимому медиа-файлы именуются свободно и располагаются в одной папке с основным комплектом. Чтобы мультимедиа отобразилось в результирующем LSD, с медиа-файлами нужно поступить одним из двух следующих способов:
- Упаковать их внутрь контейнера LSD — для этого во время компилирования они должны находиться рядом с файлом основного текста, в той же папке. Компилятор считывает имена медиа-файлов в тэгах мультимедиа, проверяет их наличие рядом, и если находит — упаковывает, а если нет — сообщает об их отсутствии в специальном отчёте *.dde. После такого создания LSD медиа-файлы можно убирать, в этой папке они больше не нужны.
- Можно откомпилировать LSD без упаковки медиа-файлов — для этого на время компилирования их нужно переместить в другую папку, в сторону от файла основного текста. Компилятор создаст отчёт об отсутствующих файлах — это стандартное поведение. Теперь нужно переместить их в папку к созданному LSD и для дальнейшей работоспособности мультимедиа всегда держать их рядом с ним.
Программа GoldenDict работает по-другому: к ней словари DSL подключаются напрямую, без дополнительных преобразований. Медиа-файлы при этом необходимо поместить в отдельную папку или упаковать в отдельный zip-архив. Имя папки (если используется папка) должно повторять имя файла основного текста с его расширением, и с прибавлением окончания *.files. Например, /rus-rus_encyclopedia_we.dsl.files. Имя архива (если используется архив) также должно повторять имя файла основного текста с его расширением, но с прибавлением окончания *.files.zip. Например, rus-rus_encyclopedia_we.dsl.files.zip. Важно также, чтобы архив был упакован без каталога верхнего уровня, иначе он станет неработоспособным.
Далее мы рассмотрим правила создания и устройство каждого из трёх перечисленных файлов DSL словаря базовой комплектации, а также вспомогательного словарика аббревиатур. Часть этих сведений, в основном общего характера, опубликована в официальном справочном руководстве к ABBYY Lingvo. Остальное собрано и сформулировано стараниями сообщества лексикографов на портале Ru-Board.
Наименование файлов словаря
В документации Lingvo вопрос наименований файлов не затрагивается. Этот пробел восполняется «Соглашением о наименованиях», составленным сообществом лексикографов на Ru-Board. В соответствии с Соглашением в именах файлов словарей принято указывать:
- На первом месте: языковую пару словаря через дефис. Для обозначения языков определено применять 3-буквенные сокращения согласно международному стандарту ISO-639-2 или ISO-639-3.
- На втором месте: краткое название словаря или аббревиатуру его названия.
- На третьем месте: сокращение (желательно 2-буквенное) имени автора конвертации в формат DSL.
Полный список 2- и 3-буквенных сокращений языков см. в разделе Списки языков.
Если словарь предназначен для распространения и упакован в архив, то в наименовании архива следует дополнительно указать номер версии словаря и его формат (обычно DSL или LSD).
Примечание: Соглашение рекомендует указывать версию также и в именах файлов словаря. Однако такая практика создаёт неудобства при подключении словарей к словарным программам. Изменение имён с каждой новой версией потребует многократного отключения старых и подключения новых файлов через диалоги настроек. В то время как при сохранении единого имени, каждую новую версию достаточно всего лишь перезаписывать поверх старой. Программа, обнаружив при старте обновлённый файл, будет только автоматически перестраивать индекс.
В именах файлов следует употреблять только символы основной латиницы, цифры, знаки дефиса и подчёркивания. Настоятельно не рекомендуется употреблять пробелы, диакритические знаки, апострофы, точки, запятые, двоеточия и символы национальных алфавитов (в т.ч. русского), т.к. технически это может существенно затруднить как использование словарей, так и их пересылку. Например, пробелы, апострофы и диакритика некорректно обрабатываются некоторыми сторонними программами (в первую очередь сетевыми), а точка в имени файла иконки может привести к тому, что иконка не будет отображаться.
На рисунке приведён пример наименования файла англо-английского словаря Oxford American Writer Thesaurus, отконвертированного в формат DSL лексикографом weros. Как видим, версия словаря указана только в имени zip-архива.
Файл основного текста
Очевидно, что наличие этой части словаря строго обязательно, в отличие от двух других частей.
Файл основного текста — это простой текстовый документ в кодировке ANSI или Unicode (UTF-16 LE)[1]. Строки документа должны оканчиваться управляющим символом перевода строки LF, т.е. допустимы окончания строк, принятые в системах Windows (CRLF) и Unix (LF)[2], но недопустимы принятые в системе Mac (CR). При сохранении стандартное расширение файла *.txt необходимо поменять на *.dsl. Пример: rus-rus_ExplanatoryKuznetsov.dsl.
В первых трёх строчках файла должна располагаться т.н. шапка — три обязательные директивы предварительной обработки. На сегодняшний день принят следующий порядок их оформления и расположения:
- На первой строке: директива предварительной обработки #NAME, за ней знаки пробела или табуляции, за ними в двойных кавычках краткое, внутреннее наименование словаря. Длина наименования не должна превышать 255 символов (включая пробельные). Кавычки только двойные. В наименовании не рекомендуется использовать символы квадратных скобок [ ].
- На второй строке: директива предварительной обработки #INDEX_LANGUAGE, за ней знаки пробела или табуляции, за ними в двойных кавычках полное английское наименование языка заголовков.
- На третьей строке: директива предварительной обработки #CONTENTS_LANGUAGE, за ней знаки пробела или табуляции, за ними в двойных кавычках полное английское наименование языка статей.
Шапка основного файла :: Запись в DSL
#NAME "Словарь синонимов (Ru-Ru)" #INDEX_LANGUAGE "Russian" #CONTENTS_LANGUAGE "Russian" карточка [m1]фотография, снимок; визитка[/m]
После того, как словарь будет подключен к Lingvo, его внутреннее название, указанное в 1й директиве, будет отображаться во всех списках подключенных словарей и в правой, верхней части словарных карточек:
Шапка основного файла :: Вид в словарной карточке
Чтобы внутреннее название лучше воспринималось и умещалось в упомянутых местах, оно должно быть кратким. В его конце рекомендуется указывать языковую пару словаря в скобках и через дефис. В словарях от ABBYY в языковых парах используются 2-буквенные сокращения, согласно стандарту ISO-639-1. Соглашение лексикографов в данном случае рекомендует употреблять 3-буквенные сокращения по стандарту ISO-639-3 (или ISO-639-2).
Использование квадратных скобок во внутреннем названии вызывает ошибку в оболочке Lingvo версий x5 и выше[3]. В Lingvo x3 и в GoldenDict данная проблема не возникает.
Следующие две директивы содержат английские наименования языков, к которым принадлежат словарные заголовки и статьи. Эти наименования должны: a) числиться в списке поддерживаемых в Lingvo языков и b) соответствовать стандарту ISO-639-2. Первую часть этого правила можно не учитывать только в том случае, если словарь используется в альтернативных программах, таких как GoldenDict. В Lingvo если указать неподдерживаемый язык, компилирование прервётся с сообщением об ошибке. Вторую часть правила желательно учитывать в любом случае.
В шапке помимо трёх обязательных могут использоваться и другие директивы, необязательные. Подробнее о них см. в разделе Директивы предварительной обработки.
Сразу за директивами следует собственно содержимое словаря: словарные заголовки и их статьи. Строки заголовков могут начинаться с любого символа, кроме пробела, табуляции и метасимвола #. Строки статей наоборот могут начинаться только с символа пробела или табуляции. Подробнее об этом см. в разделе Структура словарной статьи.
Файл аннотации
Файл аннотации — это простой текстовый документ в кодировке ANSI или Unicode (UTF-16 LE)[1]. Строки документа должны оканчиваться управляющим символом перевода строки LF, т.е. допустимы окончания строк, принятые в системах Windows (CRLF) и Unix (LF)[2], но недопустимы принятые в системе Mac (CR). При сохранении стандартное расширение файла *.txt необходимо поменять на *.ann. Имя файла аннотации должно в точности соответствовать имени файла основного текста, за исключением расширения. Пример: rus-rus_ExplanatoryKuznetsov.ann.
Аннотация не является обязательной частью словаря, правила допускают её отсутствие. Тем не менее создание аннотаций настоятельно рекомендуется.
В содержание аннотации входит краткое описание словаря, характеристики его состава и сведения об авторах. Соглашение лексикографов считает обязательным указывать в аннотации следующие данные:
- Полное название словаря, т.е. более подробное и развёрнутое по сравнению с кратким, внутренним названием. Полное название может занимать более одной строчки. В конце первой строчки следует указывать языковую пару словаря в круглых скобках и через дефис. Для обозначения языков могут использоваться как 2-буквенные сокращения по стандарту ISO-639-1, так и 3-буквенные по стандарту ISO-639-3 или ISO-639-2.
- Номер электронной версии словаря. Рекомендуемый формат: две цифры через точку, или три цифры через точку. Пример: 4.2 или 2.1.6.
- Количество заголовков и количество карточек. Или раздельно на двух соседних строках, или в одну строку через косую черту. Пример: Заголовков/Карточек: 34266/33850.
- Информация об источнике: интернет сайте или печатном издании.
Пример минимальной аннотации :: Запись в ANN
Большой толковый словарь под ред. Кузнецова (Ru-Ru) DSL версия: 3.2.0 Заголовков: 79109 Карточек: 76298 Источник: Большой толковый словарь русского языка. Сост. и гл. ред. С. А. Кузнецов. 1-е изд-е: СПб.: Норинт, 1998. Публикуется в авторской редакции, 2009 г.
Кроме того по желанию можно добавлять:
- Краткое описание словаря, перепечатку аннотации к источнику.
- Имя (псевдоним) автора конвертации в формат DSL.
- Расширенную информацию из источника.
- Небольшой список словарных статей, рекомендуемых к ознакомлению. Обычно такими бывают: От составителя, От издательства, О построении словаря и т.п.
- Историю изменений электронных версий также можно добавлять в аннотацию, но лучше выносить её в отдельный файл ReadMe, как информацию сугубо техническую.
При подключении словаря к Lingvo, аннотация отображается в отдельном окне About Dictionary, доступном из разных меню программы. К тексту в этом окне не применяется форматирование и в нём нельзя изменить размер шрифта. Поэтому не рекомендуется включать в состав аннотаций длинные предисловия и введения из источников. Лучше размещать таковые в файле основного текста в качестве дополнительных статей, а в аннотации лишь ссылаться на их заголовки.
Из текста аннотации автоматически удаляются множественные пробелы (так же, как и из текста карточек). В связи с этим, для создания отбивок и отступов в абзацах, рекомендуется использовать неразрывные или экранированные пробелы. Подробнее об этом см. в главе Тело статьи.
Кроме того, к использованию в аннотациях предусмотрена директива предварительной обработки #LANGUAGE, в значении которой указывается английское наименование языка, поддерживаемого Lingvo. В одной аннотации может быть несколько таких директив с разными значениями. Все они делят аннотацию на части. Одной частью считается фрагмент текста от одной директивы до другой, или до конца файла. Каждой части присваивается язык, указанный в значении её директивы.
Директивы в аннотации :: Запись в ANN
#LANGUAGE "Russian" LatinAmerican (Es-Ru) (к версии ABBYY Lingvo x5) Испанско-русский словарь. Латинская Америка. © «Русский язык-Медиа», 2004, Фирсова Н.М. 50 тыс. слов и словосочетаний. #LANGUAGE "English" LatinAmerican (Es-Ru) (for ABBYY Lingvo x5) The Spanish-Russian Dictionary of Latin America. © Russkiy Yazyk - Media, 2004, N.M. Firsova. 50,000 words and phrases. #LANGUAGE "Ukrainian" LatinAmerican (Es-Ru) (до версії ABBYY Lingvo x5) Іспансько-російський словник. Латинська Америка. © «Русский язык-Медиа», 2004, Фірсова Н.М. 50 тис. слів і словосполучень.
При вызове окна с аннотацией, в нём отобразится та языковая часть, которая соответствует языку интерфейса программы, выбранному в настройках. Остальные языковые части будут скрыты. Подробнее о механизме работы этой директивы в Lingvo см. в главе Директива #LANGUAGE. В других программах она может не обрабатываться, как например в GoldenDict.
Файл иконки
Имя файла иконки должно в точности соответствовать имени файла основного текста, за исключением расширения. Пример: rus-rus_ExplanatoryKuznetsov.bmp.
Сама иконка должна обладать следующими характеристиками:
Формат файла изображения: | Windows Bitmap (*.bmp) |
Размер изображения: | 14×21 пикселей (ширина на высоту) |
Глубина цвета (битность) изображения: | 24 bit (Truecolor) |
Чтобы добиться эффекта «прозрачности» фона на картинке, необходимо закрасить его серым цветом RGB(192, 192, 192) или #C0C0C0.
При подключении словаря к Lingvo, иконка отображается на полке со словарями и в списках словарей в диалоговых окнах. В GoldenDict употребление иконки более активно: в окне аннотации «О словаре», в окне заголовков, в диалогах настроек программы и др. местах.
Иконка не является обязательной частью словаря, правила допускают её отсутствие. Если иконки нет, то программа присвоит словарю свою, стандартную иконку. Создание индивидуальных иконок, однако, настоятельно рекомендуется, поскольку в противном случае словари на полке будут выглядеть однотипно и в них будет легко запутаться.
Примеры стандартных иконок для словарей: в ABBYY Lingvo и в GoldenDict
.
В GoldenDict допустимо использование иконок в формате PNG. По сравнению с BMP этот формат иногда предпочтительней, т.к. поддерживает настоящую прозрачность (альфа-канал).
Вспомогательный словарь аббревиатур
Словарик аббревиатур также является частью словаря DSL, однако стоит особняком: отличается устройством и компилируется отдельным файлом.
Подобно файлу основного текста это — простой текстовый документ в кодировке ANSI или Unicode (UTF-16 LE)[1]. Строки документа должны оканчиваться управляющим символом перевода строки LF, т.е. допустимы окончания строк, принятые в системах Windows (CRLF) и Unix (LF)[2], но недопустимы принятые в системе Mac (CR). При сохранении стандартное расширение файла *.txt необходимо поменять на *.dsl. Имя файла словарика аббревиатур должно в точности повторять имя файла основного текста с прибавлением суффикса _abrv перед расширением. Пример:
Словарик аббревиатур представляет собой электронный аналог таких разделов бумажных словарей, как «Условные сокращения» или «Список аббревиатур». Его содержанием и является, собственно, список расшифровок сокращений, используемых в основной части словаря. Обращение к пунктам этого списка возможно только из основной части словаря, при наведении курсора мыши на аббревиатуру, заключенную в тэг [p]. Расшифровка при этом отображается во всплывающей подсказке. Другого способа отобразить содержимое словарика (например, в виде карточек) не существует.
Так же, как и файл основного текста, файл аббревиатур должен начинаться с трёх строк — директив предварительной обработки. Однако здесь их применение является чистой формальностью, поскольку имя, указанное в директиве #NAME нигде не отображается, а указание языков в двух других директивах ни на что не влияет. Таким образом, для всех словарей аббревиатур может быть использована единая универсальная шапка следующего вида:
Пример универсальной шапки для словарей аббревиатур :: Запись в DSL
#NAME "List of Abbreviations (Ru-Ru)" #INDEX_LANGUAGE "Russian" #CONTENTS_LANGUAGE "Russian" разг. разговорное ср. 1) средний род; 2) сравни страд. страдательный залог
Необходимость в создании словарика аббревиатур полностью зависит от использования в основном тексте словаря тэга [p] — если тэга нет, значит и вспомогательный список расшифровок к нему не нужен.
Предназначение содержимого словарика для показа только во всплывающих подсказках влияет на его устройство:
- В статьях словарика аббревиатур вовсе не используются тэги. Любой тэг, применённый в статье, во всплывающей подсказке будет отображён литерально. Согласно этому признаку вспомогательные словари аббревиатур можно причислить к разновидности простых словарей DSL.
- Статьи должны быть краткими. К сожалению, Lingvo отображает всплывающие подсказки в одну строчку без переносов. Поэтому, если содержимое статьи будет длинным, оно растянется во всю длину экрана, и его будет неудобно читать. Способов перевода строки в этом случае в Lingvo также не предусмотрено. GoldenDict лишён этого недостатка — в нём всплывающие подсказки по умолчанию отображаются в виде аккуратных прямоугольных блоков с переносом текста внутри.
- Статьи должны быть однострочными. Во всплывающей подсказке будет отображена только одна строка — первая после заголовка. Остальные строки, если они есть, будут проигнорированы. Поэтому, если у аббревиатуры два значения, рекомендуется обозначать их номерами и разделять точкой с запятой, как это продемонстрировано на примере выше.
Для использования в Lingvo словарик необходимо компилировать в формат LSD. Но компилировать отдельным файлом, отдельно от основного трёхсоставного LSD. При этом DSL Compiler будет сообщать об отсутствии файлов иконки и аннотации. Эти сообщения надо игнорировать, поскольку в отношении словарика аббревиатур они являются чистой формальностью: ему не нужны ни иконка, ни аннотация, но даже если их добавить, отображаться они нигде не будут.
При компилировании словарика аббревиатур необходимо отключать применение автоматической разметки Create dictionary ready for indexing. В противном случае компилятор добавит в текст расшифровок тэги, которые потом отобразятся литерально во всплывающей подсказке и будут мешать чтению.
По той же причине в тексте словарика не используются квадратные скобки. Компилятор не допустит их прямого употребления, а если применить к ним экранирование обратной косой чертой \ или удваиванием [[, то это некрасиво отобразится во всплывающей подсказке.
Для работоспособности словаря аббревиатур он должен всегда располагаться рядом с основным файлом словаря: в Lingvo рядом со скомпилированным LSD, в GoldenDict рядом с файлом основного текста DSL.
Словарик аббревиатур, входящий в комплект отдельно взятого словаря DSL, является локальным. Кроме него в Lingvo существует ещё глобальный словарь аббревиатур, файл которого располагается в каталоге c:\Program Files\ABBYY Lingvo ??\, где ?? — номер версии Lingvo. Глобальный словарь аббревиатур является общим для всех системных словарей Lingvo, но к нему программа обращается также и в том случае, если не находит локального. В GoldenDict глобальный словарь аббревиатур не используется.
[1] Программа GoldenDict работает также с кодировкой UTF-8. Файл, сохранённый в UTF-8, по размеру меньше, чем его аналог в UTF-16 LE.
[2] При использовании окончаний строк, принятых в системах Unix (LF), размер файла словаря уменьшается.
[3] В x5 после перезапуска оболочки такой словарь самопроизвольно пропадает с полки, а в x6 вдобавок перестаёт показывать карточки (т.е. при щелчке по заголовкам карточки не открываются).