Утилиты для создания словарей


DictBuilder

DictBuilder является частью программы MDict.
DictBuilder.app находится внутри пакета MDict.app. Его можно найти здесь:
/Applications/MDict.app/Contents/Resources/DictBuilder.app
DictBuilder.app – это оболочка для сценариев DictBuilder. Эти сценарии можно использовать и без оболочки через командную строку (см. ниже).
Они находятся внутри пакета DictBuilder.app: DictBuilder.app/Contents/Resources/DictBuilder.
DictBuilder.app автоматически переключается между режимами упаковки и распаковки файлов словарей:
- если в качестве входных данных указана папка, используется режим упаковки словаря (о структуре каталогов неупакованных словарей см. ниже);
- если же в качестве входных данных указан файл с расширением ".dict", используется режим распаковки словаря.
Для работы этих сценариев необходима файловая система Mac OS X HFS+ или ей подобная, а имена файлов должны быть в кодировке UTF-8.


Структура неупакованных словарей

Неупакованные словари имеют следующую структуру (это – общий формат для всех неупакованных словарей для программы MDict):
￼
1
Корневой каталог неупакованного словаря.
При упаковке имя этой папки будет использовано в качестве имени файла словаря.

2
Папка “Words” содержит файлы словарных статей.
Каждая статья вашего словаря должна содержаться в отдельном файле. При этом имена файлов должны соответствовать заголовкам словарных статей.
Например, если вы хотите создать словарную статью для слова “dictionary”, вам следует создать в папке “Words” файл с именем “dictionary.txt” (если вы создаете простой текстовый словарь или текстовый словарь с гипертекстовой разметкой) или “dictionary.html” (если вы создаете HTML-словарь), и этот файл должен содержать текст словарной статьи.
Имена файлов словарных статей могут содержать необязательный суффикс в виде цифры, отделенной дефисом от основного имени файла, например, “Atlas-1.txt”, “atlas-2.txt” (для простых текстовых словарей) и “Test-3.html”, “test-4.html” (для словарей в формате HTML). Эта функция позволяет создавать словарные статьи, заголовки которых отличаются лишь регистром. При упаковке словаря эти суффиксы всегда удаляются.
Все нижеприведенные имена для файла словарной статьи “test” допустимы:
- test
- test-1
- test-2.txt
- test-3.html

3
Папка “Replacements” является необязательной. Она содержит файлы замены для файлов словарный статей с заголовками, содержащими специальные символы, которые не могут использоваться в именах файлов.
Допустим, вы хотите создать словарную статью для термина “input/output”. Текст “input/output” нельзя использовать в качестве имени файла, поскольку он содержит специальный символ “/”. Поэтому вам следует выбрать для файла этой словарной статьи другое имя, например, “input_output”. Затем вам следует перейти в папку “Replacements” и создать в ней файл с точно таким же именем (в нашем случае – “input_output”), содержащий всего одну строку – “input/output”.
Примечание: имя файла замены должно быть полностью идентично имени файла словарной статьи (включая расширение файла). Поэтому если вы создаете HTML-словарь, то файл замены для файла словарной статьи “input_output.html” должен также называться “input_output.html”. При этом он не должен содержать никаких тэгов языка HTML или мета-данных, а лишь строку с реальным названием будущей словарной статьи – “input/output” (без кавычек).
При упаковке словаря каждый файл словарной статьи wordN (имя файла) из папки “Words” будет автоматически проверяться на наличие соответствующего ему файла замены в папке “Replacements”, и если такой файл будет найден, то в качестве заголовка словарной статьи будет использован текст из файла Replacements/wordN.
Данная техника использования файлов замены дает создателям словарей максимум возможностей для создания заголовков словарных статей.
Если при распаковке словаря DictBuilder обнаружит словарную статью с заголовком, содержащим недопустимые символы, он автоматически создаст для такой статьи файл замены (например, _REPLACEMENT_SomeNum-SomeNum).

4
Папка “Extensions” также является необязательной. Она может иметь любую структуру каталогов и содержать любые дополнительные файлы (изображения, документы, аудио-файлы в формате WAV, Flash-ролики или видео-файлы).
Если вы создаете HTML-словарь, то вы можете добавлять ссылки на эти ресурсы в тело словарных статей. Эти ссылки должны быть относительными по отношению к папке “Extensions”. Ссылка на саму папку “Extensions” при этом должна иметь вид “__E__” (без кавычек). При компиляции словаря текст “__E__” будет заменен на реальный путь к папке “Extensions”.
Примеры ссылок:
- Ссылка на файл с изображением “fish.png”, находящийся в папке “Extensions/fish.png”, в HTML-файле “Words/fish.html” будет выглядеть следующим образом:
<img src=“__E__/fish.png”>
- Ссылка на видео-файл “fisher.mov”, находящийся в папке “Extensions/Movies/fisher.mov”, будет выглядеть следующим образом:
<a href=“__E__/Movies/fisher.mov”>Fisher Video Clip</a>
- Если же вы хотите, чтобы ваш видео-ролик отображался прямо внутри словарной статьи, вы можете вставить в HTML-файл следующую ссылку:
<object type=“video/quicktime” data=“__E__/Movies/fisher.mov” width=“320” height=“260”><param name=“controller” value=“true”/>[Fisher Video Clip]</object>
При упаковке вашего словаря DictBuilder упаковывает папку “Words” в файлы “My Dictionary.dict” (собственно файл вашего словаря, содержащий все словарные статьи) и “My Dictionary.idx” (файл индекса вашего словаря), а папку “Extensions” – в файл “My Dictionary.ext”, где “My Dictionary” – имя корневой папки вашего неупакованного словаря.
Структура простого словаря с мультимедиа-ресурсами может выглядеть следующим образом:
demo-dict
demo-dict/Extensions
demo-dict/Extensions/colors.png
demo-dict/Extensions/Movies
demo-dict/Extensions/Movies/intro.mov
demo-dict/Extensions/Movies/test.mov
demo-dict/unpack.log
demo-dict/Words
demo-dict/Words/adobe colors panel.html
demo-dict/Words/intro-1.html
demo-dict/Words/test-2.html
При упаковке этого словаря вы получите три файла: “demo-dict.dict”, “demo-dict.idx” и “demo-dict.ext”.
Содержимое файла словаря “demo-dict.dict” может выглядеть следующим образом:
Adobe Photoshop CS 2 color panel looks like this:<br>
<img src="__E__/colors.png">
Apple WWDC'06 Intro<br>
<object type="video/quicktime" data="__E__/Movies/intro.mov" width="360" height="280">
<param name="controller" value="true" />
 [Test Movie Video Clip]
</object>
Test<br>
<a href="__E__/Movies/test.mov">Test link</a>
При упаковке все файлы словарных статей собираются в единый .dict-файл.


Формат файлов словарных статей

Ссылки

Словари для MDict всех форматов поддерживают перекрестные ссылки между словарными статьями. Перекрестные ссылки имеют простой формат, сходный с форматом ссылок в Wiki:
[:[ … ]:]
Примечание: после открывающего тэга [:[ может стоять любой символ, кроме пробела.
Пример:
[:[have]:] – ссылка на словарную статью “have”.
Перекрестные ссылки могут иметь более сложную структуру:
[:[been|be]:] – слово “been” в качестве ссылки на словарную статью “be”.
Кроме того, тэг [:[ … ]:] может использоваться для создания ссылок на внешние ресурсы по протоколам http, ftp, file и feed:
[:[http link demo - link to Apple|http://apple.com]:]
[:[ftp link demo - link to FreeBSD server|ftp://ftp.freebsd.org]:]
[:[file link demo - shows /etc/hosts|file:///etc/hosts]:]
[:[feed link demo - some RSS|feed://www.macosxhints.com/backend/geeklog.rdf]:]
Совет: в первой части сложных ссылок можно использовать HTML-тэги (в HTML-словарях), например:
[:[<strong><sup>х</sup><sub>а</sub><sup>в</sup><sub>а</sub><em>т</em><i>ь</i></strong>|есть]:]
или даже:
[:[<img src=http://mif.mitme.ru/images/mdict.png>|dictionary]:]
если вы хотите использовать изображение в качестве ссылки.
Если вы создаете HTML-словарь с использованием файлов мультимедиа, и в папке “Extensions/images” вашего словаря содержится файл “mdic.png”, вы можете использовать это изображение в качестве ссылки в статьях вашего словаря:
[:[<img src=__E__/images/mdict.png>|dictionary]:]


Стили CSS

Если вы создаете HTML-словарь, вы можете использовать в нем стили CSS.
Вы можете создать в папке “Extensions/css” файл “styles.css”, содержащий стили форматирования:
/* dictionary styles */
p { font-size: 30; color: red; }
и добавлять в HTML-файлы словарных статей ссылки на этот файл:
<link type=text/css rel=stylesheet href=__E__/css/styles.css />
<p>test
Поскольку во время выполнения все словарные статьи разбиваются на отдельные “HTML-части” между директивами, и эти части интерпретируются и отображаются  независимо, чтобы стили форматирования применялись, необходимо подключать строки стилей после каждой директивы MDict.


Распространение словарей

После упаковки вашего словаря при помощи DictBuilder вы можете упаковать его в ZIP-архив для его распространения в сети Интернет.
Если вы создали простой словарь, не содержащий мультимедиа-ресурсов, ZIP-архив должен содержать файлы “dictionary.dict” и “dictionary.idx”, где “dictionary” – название вашего словаря. Если же вы создали словарь с мультимедиа-ресурсами, кроме файлов с расширениями “.dict” и “.idx”, ZIP-архив должен также содержать файл с расширением “.ext”.
Начиная с версии … MDict поддерживает новый формат пакетов словарей с расширением “.mdict”. Пакеты словарей упрощают хранение и распространение ваших словарей, поскольку они содержат все файлы словарей (файлы dict, idx и ext) в одном файле. Такой пакет может содержать файлы одного или нескольких словарей.
Кроме того, словарный пакет также может содержать файл списка атрибутов (файл с расширением “.plist”), содержащий метаданные вашего словаря, такие как название словаря, его формат (Plain, Plain/HT или HTML) и описание. Ниже приведен пример содержимого такого файла списка атрибутов (для пакета, содержащего два словаря):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>aliases</key>
	<dict>
		<key>dict1</key>
		<string>Dict1 Name</string> //-- название первого словаря
		<key>dict2</key>
		<string>Dict2 Name</string> //-- название второго словаря
	</dict>
 <key>types</key>
	<dict>
		<key>dict2</key>
		<string>Plain/HT</string> //-- формат словарей
	</dict>
 <key>information</key>
	<dict>
	 	<key>dict1</key>
		<string>dictionary1 full description here</string> //-- описание словарей
	</dict>
</dict>
</plist>
Чтобы создать файл пакета словарей:
1. Создайте новую папку.
2. Поместите в нее файлы словаря с расширениями “.dict”, “.idx”, “.ext” (если ваш словарь содержит мультимедиа-ресурсы) и “.plist” (если вы создали файл списка атрибутов вашего словаря).
3. Переименуйте эту папку, используя название вашего словаря (или краткое описание словарей, если вы добавляете в пакет более одного словаря, напр., “English Dictionaries” или “Business Dictionaries”), затем добавьте к названию папки расирение “.mdict” (без кавычек) и нажмите клавишу “Enter”.
4. Когда появится диалог с вопросом, действительно ли вы хотите добавить  к имени файла расширение, кликните по кнопке “OK”.
После того как вы создали файл пакета словарей, чтобы уменьшить его размер, вы можете упаковать его в архив, используя встроенную в Mac OS X функцию архивирования (удерживая клавишу “Control”, кликните по файлу пакета (или кликните по нему правой кнопкой мыши, если у вас двухкнопочная мышь) и выберите в контекстном меню пункт “Create Archive of...” (“Создать архив...”)) или утилиты для архивирования сторонних разработчиков.
Существует несколько способов установки новых пакетов словарей:
1. Выделите пакет в Finder и перетащите его на окно MDict.
2. Откройте настройки словарей MDict (кликните по кнопке “Dictionaries” (“Словари”) на панели инструментов MDict, нажмите клавиатурное сокращение Command-, (окно программы MDict должно быть активным) или выберите MDict > Preferences (MDict > Настройки), а затем выберите вкладку “Dictionaries” (“Словари”), если она не активна), кликните по кнопке “+” (крайняя слева кнопка под списком установленных словарей), выберите пакет словаря, который вы хотите установить, и кликните по кнопке “Open” (“Открыть”).
3. Дважды кликните по пакету словаря в Finder.
Первые два способа также можно использовать для установки словарей, не упакованных в пакеты словарей (файлов с расширением “.dict”).


Сценарии DictBuilder

Для работы со словарями вы можете использовать следующие три Perl-сценария:
- dictparser.pl – сценарий для распаковки табулированных словарей в формате StarDict в директорию со структурой, описанной выше;
- unpackdict.pl – сценарий для распаковки существующего словаря в формате MDict в директорию со структурой, описанной выше;
- packdict.pl – сценарий для упаковки неупакованного словаря, имеющего описанную выше структуру каталогов, в файл словаря (с именем, соответствующим имени корневого каталога неупакованного словаря).
Для использования этих сценариев вам понадобится интерпретатор языка Perl и будет необходимо задать файлам сценариев права доступа исполняемых файлов (+x). Вы можете установить права доступа, используя следующую команду в Terminal:
chmod +x unpackdict.pl packdict.pl
Сценарии используются через команды в программе Terminal. Чтобы получить помощь по использованию сценариев, запустите их в Terminal, используя следующие команды (предполагается, что файлы сценариев находятся в текущей папке):
./dictparser.pl
./unpackdict.pl
./packdict.pl

Удачи!
– MiF.
