Создание словарей

До создавания словаря необходимо создать исходный файл словаря, подготовить таблицу стилей, отредактировать файл списка свойств и добавить любые ресурсы, необходимые словарю. Эта глава объясняет, как выполнить эти задачи, обеспечивает инструкции для создавания Вашего словаря и показывает несколько простых примеров. Вы также узнаете, как создать японский словарь, установить предпочтения и добавить переднюю сторону и аппарат.

Подготовка исходных данных и создавание словаря

Прежде чем Вы начнете подготавливать свои исходные данные, скопируете project_template папка от комплекта разработчика до каталога, который Вы используете для разработки кода. Затем следуйте инструкциям, описанным в следующих разделах:

  1. Подготовка содержания словаря

  2. Редактирование файла списка свойств

  3. Добавление необходимых ресурсов словарем

  4. Подготовка make-файла

Подготовка содержания словаря

Смотрите на MyDictionary.xml файл обеспечил в шаблоне проекта. Ваш словарь должен следовать за этой формой, с помощью кодирования UTF-8. Можно изменить имя файла на что-то другое, чем MyDictionary, но если Вы изменяете имя, необходимо отредактировать DICT_SRC_PATH переменная в make-файле.

Пользовательский интерфейс словаря и Разметка), описывает XML-схему, которую необходимо использовать для разработки словаря. Схема использует RELAX язык схемы NG, описанный на этом веб-сайте:

http://www .relaxng.org/

Необходимо проверить источник словаря до создавания нового словаря, можно использовать RELAX программы блоков проверки допустимости NG, которые доступны от этого веб-сайта:

http://www .relaxng.org/#validators

Можно также проверить XML, использующий jing следующим образом:

$ java -jar <path to jing.jar> <schema definition> <XML to validate>

От project_template папки, с jing, расположенным в../jing/, командная строка следующие:

$ java -jar ../jing/bin/jing.jar ../documents/DictionarySchema/AppleDictionarySchema.rng MyDictionary.xml

Для получения дополнительной информации о jing см.:

http://www .thaiopensource.com/relaxng/jing.html

Подготовка таблицы стилей

Можно подготовить таблицу стилей для использования для содержания словаря путем редактирования MyDictionary.css файл обеспечил шаблоном проекта. Если Вы изменяете имя этого css файла, необходимо отредактировать CSS_PATH переменная в make-файле.

Необходимо минимально отредактировать таблицу стилей. Приложение Словаря и управление окном Dictionary используют их собственные определения стилей, чтобы гарантировать, чтобы содержание соответствовало дисплею. Для лучших результатов не указывайте абсолютный шрифт или размер шрифта.

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

Файл списка свойств для словаря является текстовым файлом XML. Шаблон проекта содержит файл в качестве примера —MyInfo.plist— чье содержание показано в Перечислении 2-1. Можно отредактировать этот файл так, чтобы он содержал записи, подходящие для словаря. Таблица 2-1 объясняет значения, что необходимо предусмотреть словарь.

Перечисление 2-1  пример файла списка свойств для словаря

<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>My Dictionary</string>
<key>CFBundleIdentifier</key>
<string>com.apple.dictionary.MySample</string>
<key>CFBundleName</key>
<string>MyDictionary</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>DCSDictionaryCopyright</key>
<string>Copyright (c) Apple Computer, Inc.</string>
<key>DCSDictionaryManufacturerName</key>
<string>Apple Computer, Inc.</string>

Если Вы изменяете имя файла списка свойств, необходимо отредактировать PLIST_PATH переменная в make-файле.

Табличные 2-1  Ключи и значения для файла списка свойств словаря

Ключ

Значение

CFBundleDevelopmentRegion

Область

CFBundleDisplayName

Полное имя дисплея словаря. Значение по умолчанию должно использовать имя файловой системы.

CFBundleIdentifier

Идентификатор пакета словаря; укажите уникальный идентификатор.

CFBundleName

Короткое имя дисплея словаря.

CFBundleShortVersionString

Версия словаря.

DCSDictionaryCopyright

Уведомление об авторском праве словаря.

DCSDictionaryManufacturerName

Имя производителя словаря.

Добавление необходимых ресурсов словарем

Необходимо поместить любые ресурсы (например, изображения), в котором словарь нужен в папке OtherResources в project_template папка. Когда Вы создаете словарь, ресурсы копируются в созданный словарь.

Например, если Ваш словарь использует имя файла образа test.png, необходимо поместить его в следующее расположение:

project_template/OtherResources/Images/test.png

Папка изображений копируется в словарь. Когда для словаря нужно изображение, он использует для относительного пути —Images/test.png— который записан в XML-файл во время процесса сборки.

Подготовка make-файла

Назовите свой словарь и затем отредактируйте DICT_NAME переменная в make-файле. Это имя используется в качестве имени папки для словаря. Например, когда DICT_NAME = “My Dictionary”, созданный словарь My Dictionary.dictionary.

Если Вы изменяете местоположение Комплекта разработчика Словаря от /Developer/Extras/Dictionary Development Kit, необходимо изменить DICT_BUILD_TOOL_DIR переменная в make-файле для отражения изменения.

Создавание словаря

Для создавания словаря выполните эти шаги:

  1. Запустите Терминальное приложение.

  2. Используйте cd команда для изменения на надлежащее расположение:

    /Developer/Extras/Dictionary Development Kit

  3. Войти make.

  4. После того, как сделать процесс заканчивается успешно, тип делают установку для копирования нового словаря в:

    ~/Library/Dictionaries/

После выполнения make install команда, можно удалить все промежуточные файлы в папке объектов. В Окне терминала войдите, делают чистыми для удаления папки объектов.

Теперь можно запустить приложение Словаря и протестировать новый словарь.

Как Вы видите от рассмотрения make-файла, процесс здания использует сценарий build_dict.sh, расположенный в /Developer/Extras/Dictionary Development Kit/bin. Этот сценарий берет 4 параметра —dictionary_name, dictionary_source_path, StyleSheet_path, и InfoPlist_path. Это создает новый каталог в /objects папка.

One-Word Dictionary Example

Yomi показывает простой пример словаря, содержащего запись для слова, делают. Это похоже на рисунок 1-1, открыто с помощью приложения Словаря.

Перечисление 2-2  словарь с одним словом

<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
<d:entry id="make_1">
    <d:index d:value="make" d:title="make"/>
    <d:index d:value="makes" d:title="makes (make)"/>
    <d:index d:value="made" d:title="made (make)"/>
    <d:index d:value="making" d:title="making (make)"/>
    <h1>make</h1><span class="syntax">| māk |</span>
    <div>
        <ol>
            <li>
                Form by putting parts together or combining substances; construct; create; produce
                <span d:priority="2"> : <i>Mother made her a beautiful dress</i>
                </span>
                .
            </li>
            <li>
                Cause to be or become
                <span d:priority="2"> : <i>The news made me happy</i>
                </span>
                .
            </li>
        </ol>
    </div>
    <div d:parental-control="1" d:priority="2">
        <h3>PHRASES</h3>
        <div id="make_it"><b>make it</b> : succeed in something; survive.</div>
        <h4><a href="x-dictionary:r:make_up_ones_mind"><b>make up one's mind</b></a></h4>
    </div>
</d:entry>
</d:dictionary>

Пример словаря акронима

Перечисление 2-3 показывает, как тегировать следующее содержание для создания словаря акронима.

Перечисление 2-3  словарь акронима

<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
<d:entry id="ldap">
    <d:index d:value="LDAP" d:title="LDAP"/>
    <h1>LDAP</h1>
    <p>Lightweight Directory Access Protocol</p>
</d:entry>
<d:entry id="midi">
    <d:index d:value="MIDI" d:title="MIDI"/>
    <h1>MIDI</h1>
    <p>Musical Instrument Digital Interface</p>
</d:entry>
<d:entry id="xml">
    <d:index d:value="XML" d:title="XML"/>
    <h1>XML</h1>
    <p>Extensible Markup Language</p>
</d:entry>
</d:dictionary>

Добавление передней стороны и аппарата к словарю

Можно добавить переднюю сторону и аппарат к словарю путем выполнения этих шагов:

  1. Подготовьте запись к передней стороне и аппарату

  2. Измените файл Info.plist

  3. Добавьте элемент индекса (Необязательно)

Можно просмотреть переднюю сторону и аппарат для словаря с помощью приложения Словаря. В меню Go выберите Front/Back Matter.

Подготовьте запись к передней стороне и аппарату

В XML-файле для словаря необходимо указать запись переднего аппарата с помощью id припишите, чье значение установлено в front_back_matter как показано в следующем простом примере:

<d:entry id="front_back_matter" d:title="Front/Back Matter">
    <h1><b>My Dictionary</b></h1>
    <h2>Front/Back Matter</h2>
    <p>
        This is a front matter page of the sample dictionary.<br/>
    </p>
 
    ...
 
</d:entry>

Измените файл Info.plist

Необходимо изменить список свойств для словаря путем добавления DCSDictionaryFrontMatterReferenceID ключ к Info.plist файл. Присваиваемое значение является строкой, указывающей id оцените Вас используемый в XML-файле. Следующее показывает, что строка, используемая в, Подготавливает Запись к Передней стороне и Аппарату.

<key>DCSDictionaryFrontMatterReferenceID</key>
<string>front_back_matter</string>

Добавьте элемент индекса (Необязательно)

Этот пример не использует a <d:index> элемент, что означает, что страница не обнаружится в поиске. Если Вы хотите, чтобы передняя сторона и аппарат показали в поиске, добавьте<d:index> элемент. Иначе, пользователи могут просмотреть переднюю сторону и аппараты путем выбора Go> Front/Back Matter из приложения Словаря.

Установка предпочтений словаря

У Вас есть опция установить предпочтения словаря. Пользователи получают доступ к предпочтительным настройкам из приложения Словаря путем выбора Dictionary> Preferences. Например, Новый Оксфордский американский Словарь, предоставленный OS X v10.5, позволяет пользователям выбирать из числа трех фонетических транскрипций — (Диакритический) английский язык США, английский язык США (IPA) или британский вариант английского языка (IPA).

Этот раздел показывает, как можно установить предпочтения словаря. Можно счесть файлы связанными с этим примером в Комплекте разработчика Словаря расположенный в:

/Developer/Extras/Dictionary Development Kit/samples/

Для реализации специфичных для словаря предпочтений выполните эти шаги:

  1. Измените содержание словаря соответственно.

  2. Подготовьте файл XSLT для применения к словарным статьям.

  3. Реализуйте Предпочтительный Пользовательский интерфейс.

  4. Измените файл Info.plist.

Измените содержание словаря соответственно

Необходимо изменить содержание для поддержки предпочтений, которые Вы устанавливаете. Например, если Вы хотите позволить пользователю выбирать из числа трех фонетических транскрипций, необходимо обеспечить эти три фонетических транскрипции для каждой записи в нашем словаре. Следующий пример показывает три фонетических транскрипции для слова make.

<d:entry id="make_1" d:title="make">
    ...
    <h1>make</h1>
    <span class="syntax">
        <span d:pr="US">| māk |</span>
        <span d:pr="US_IPA">| meɪk |</span>
        <span d:pr="UK_IPA">| meɪk |</span>
    </span>
    ...
</d:entry>

Обратите внимание на то, что XML не указывает который фонетическая транскрипция показать. Вы сделаете это в следующем разделе путем создания файла XSLT.

Подготовьте файл XSLT для применения к словарным статьям

Файлы XSLT содержат инструкции, что Dictionary Services применяется к каждой записи прежде, чем вывести на экран это. В этом примере необходимо обеспечить инструкции для удаления неиспользованной фонетической транскрипции. Для этого используйте $pronunciation переменная, которая является предоставлением глобальной переменной приложением Словаря, как показано в следующем примере.

<xsl:template match="*[@d:pr='US']">
    <xsl:if test="$pronunciation = '0'">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:if>
</xsl:template>
 
<xsl:template match="*[@d:pr='IPA']">
    <xsl:if test="$pronunciation = '1'">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:if>
    <xsl:if test="$pronunciation = '2'">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:if>
</xsl:template>
 
<xsl:template match="*[@d:pr='US_IPA']">
    <xsl:if test="$pronunciation = '1'">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:if>
</xsl:template>
 
<xsl:template match="*[@d:pr='UK_IPA']">
    <xsl:if test="$pronunciation = '2'">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:if>
</xsl:template>

Реализуйте Предпочтительный Пользовательский интерфейс

Необходимо обеспечить файл XHTML, указывающий пользовательский интерфейс для представления в окне Dictionary Preferences в приложении Словаря. Следующий пример показывает, как установить предпочтения фонетической транскрипции. Пользователь рассмотрит три выбора, выведенный на экран как переключатели. После делания выбора Dictionary Services сохраняет это и передает выбор инструкциям XSLT. Инструкции тогда применяются к словарным статьям.

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <div id="copyright"></div>
        <hr />
        <div class="query">
            <input type="hidden" name="version" value="1" />
        </div>
        <div class="query">
            Pronunciation:<br />
            <input type="radio" name="pronunciation" value="0">US English (Diacritical)</input><br />
            <input type="radio" name="pronunciation" value="1">US English (IPA)</input><br />
            <input type="radio" name="pronunciation" value="2">British English (IPA)</input><br />
        </div>
    </body>
</html>

Измените файл Info.plist

Необходимо добавить ключи к Info.plist файл к индикации, что словарь имеет свои собственные предпочтения. Значения для этого примера показаны в следующей записи списка свойств. Необходимо изменить значения на, которые являются подходящими для словаря. Значения, ожидаемые для каждого из ключей, показаны в Таблице 2-2.

<key>DCSDictionaryDefaultPrefs</key>
    <dict>
        <key>pronunciation</key>
        <string>0</string>
        <key>version</key>
        <string>1</string>
    </dict>
    <key>DCSDictionaryPrefsHTML</key>
    <string>MyDictionary_prefs.html</string>
    <key>DCSDictionaryXSL</key>
    <string>MyDictionary.xsl</string>
Табличные 2-2  Значения для предпочтительных ключей словаря

Ключ

Значение

DCSDictionaryDefaultPrefs

Ни один. Этот ключ указывает, что следуют пары ключ/значение для значений по умолчанию.

DCSDictionaryPrefsHTML

Имя файла XHTML

DCSDictionaryXSL

Имя файла XSLT

Создание японского словаря

Японский язык имеет многократные классы символов — Hiragana, Katakana и Кандзи. Из-за этого японские слова часто имеют многократные представления. Кандзи использует идеографические символы; Hiragana и Katakana используют фонограммы. (Иностранные слова часто представляются с помощью Katakana. Также используются римские символы.) Слово Кандзи имеет свой Yomi, представляющий его чтение. Hiragana или Katakana обычно описывают Yomi.

Записи во многих японских словарях слова сортируются Yomi. В таких словарях пользователь вводит Yomi для поиска слов. Используя Yomi для Hiragana и Katakana не проблема, потому что это фонограммы, и нет многих из них. Но для Кандзи, это - проблема, потому что тот же Yomi может представлять различное Кандзи. Например, Yomi «かい» представляет много слов: 会, 界, 貝, 解, 階, 回, 介... 下位, 甲斐...

Пользователь, ищущий «かい», получает эти результаты:

Пользователь может выбрать надлежащую запись с помощью дополнительной части Кандзи.

Если поисковое слово является «くふう», результаты:

Вот результаты поиска для “工夫". Yomi くふう и こうふ добавляются для выбора надлежащей записи.

Необходимо отметить содержание Yomi в японском словаре с помощью d:yomi атрибут. Отображения приложения Словаря d:title и d:yomi в надлежащем порядке в списке результатов поиска. Когда пользователь ищет использование Hiragana, Yomi появляется перед Кандзи. Когда пользователь ищет Кандзи использования, Yomi добавляется.

Для слов в японском словаре, имеющих многократные представления, значение, связанное с d:title элемент может отличаться от значения, связанного с d:value элемент. Чтобы гарантировать, что пользователи могут найти то, что они ищут, используйте d:yomi атрибут с d:index элемент.

В японском словаре запись Кандзи имеет и Kanji и Yomi как d:value атрибут d:index элемент. d:title разметка в ее обычной форме:

<d:entry ... d:title="工夫">
    <d:index d:value="くふう" d:title="工夫"/>
    <d:index d:value="工夫" d:title="工夫"/>
    ...
</d:entry>

Можно добавить Yomi с помощью d:yomi атрибут как показано:

<d:entry ... d:title="工夫">
    <d:index d:value="くふう" d:title="工夫" d:yomi="くふう"/>
    <d:index d:value="工夫" d:title="工夫" d:yomi="くふう"/>
    ...
</d:entry>
<d:entry ... d:title="工夫">
    <d:index d:value="こうふ" d:title="工夫" d:yomi="こうふ"/>
    <d:index d:value="工夫" d:title="工夫" d:yomi="こうふ"/>
    ...
</d:entry>

Использование приложения Словаря d:yomi и d:title добавить дополнительную информацию или для поиска Yomi или для поиска Кандзи. Можно опустить d:title когда это имеет то же значение как d:value.

Комплект разработчика Словаря содержит источник для демонстрационного японского словаря (см. /Developer/Extras/Dictionary Development Kit/samples/). Словарь содержит записи для различных случаев, включая следующее: