Варианты написания – набор полей, хранящих различную информацию о записи в списке слов. Количество вариантов написания одинаково для всех записей списка.

Не все варианты являются отображаемыми – количество видимых вариантов можно узнать только перебрав все варианты и проверив наличие нужных.  Информация о том, является ли отображение того или иного варианта поведением по умолчанию указана в каждом из них. В случае отображаемых вариантов финальный вид заголовка статьи (т.е. как и с какими стилями значения вариантов будут объединены в финальный заголовок) определяется логикой приложения. Таким образом, с точки зрения отображаемости варианты можно поделить на три типа:

  • отображаемые (стилизация определяется приложением);
  • рекомендуемые к отображению (в конечном итоге стилизация определяется все так же приложением, но в базе прописан уже стилизованный вариант);
  • не рекомендуемые к отображению (ни в одном приложении не показываются);

В настоящий момент актуальными являются следующие типы вариантов написания (в скобках указано значение enum-а, а после него – текстовое значение, которое обрабатывает компилятор при сборке – его нужно указывать в VariantProperty > Type без кавычек; если текстового значения нет – вариант нельзя добавить через xml списка слов, он генерится отдельно).

Описание вариантов

Заголовок (eVariantShow, “Show”)

Основной вариант написания, содержит заголовок словарной статьи. Это вариант написания по умолчанию, поэтому он есть в любой базе (как в словарных, так и в ресурсных базах звука и картинок). По умолчанию должен отображаться.

Сам текст заголовка может быть стилизован, т.е. часть его может быть размечена цветом, другая – курсивом и т.д (в этом смысле его можно считать полноценной словарной статьей, которая при этом должна отображаться в ячейке списка слов).

Текст этого варианта написания учитывается в некоторых функциях поиска по тексту (подмотки), даже если он не первый по счету в списке.

Вспомогательный заголовок (eVariantShowSecondary, “ShowSecondary”)

Альтернативное написание слова – актуально для китайского, японского и т.д. В этих языках Show вариант содержит основной текст заголовка (иероглифы), а ShowSecondary – пиньинь/ромадзи и т.д. Является отображаемым по умолчанию.

Ключ сортировки (eVariantSortKey, “SortKey”)

Вариант написания для сортировки списка. По умолчанию не отображается. Слова в списке отсортирован

ы на основе этого варианта, т.е. возможна ситуация:

eVariantSortKey eVariantShow
cartoon cartoon
collins Michael Collins
collide collide

таким образом отображаемые заголовки могут идти не в алфавитном порядке.

Сортировка основана на массах символов для текущего языка списка и по умолчанию игнорирует разделители, цифры, диакритики.

Если в списке слов есть этот вариант написания, то он должен стоять первым и поиск по тексту большинством функций осуществляется на основе его содержимого.

Т.к. поле одновременно определяет и положение статьи в списке, и является ключом поиска, для сортировки статей с одинаковым Show-вариантом не рекомендуется дополнять SortKey символами алфавита (они позволят задать правильный порядок, но могут повлиять на работу поиска). Для правильной сортировки используется символ ❄ (U+2744) – он добавляется в конец ключа сортировки; при прочих равных, статьи с большим количеством снежинок будут отсортированы ниже, например:

eVariantSortKey eVariantShow
aa
a❄a.
a❄❄A
aaAA

Часть речи (eVariantPartOfSpeech, “PartOfSpeech”)

Вариант написания, который используется для отображения части речи в списке слов.

Метка (eVariantLabel, “Label”)

Метка, на которую нужно перейти в статье (т.е. подмотать окно с переводом) при переводе слова. Текст метки уникален в пределах статьи и потому подмотка однозначна. Вариант написания может встречаться как в основных отображаемых списках (словарном, например), так и в результатах полнотекстового поиска. По умолчанию не отображается.

Ключ сортировки исходного списка (eVariantSourceSortKey, “SourceSortKey”)

Универсальный ключ, по которому можно найти статью в мультиязычной базе вне зависимости от текущей локализации

При этом локализации переключаются во время работы приложения. Значение данного варианта написания инвариантно относительно языковой пары и используется например для сохранения текущей статьи в списке после переключения локализации:
Мультиязычные базы содержат полную матрицу языков, т.е. все возможные языковые пары, образуемые используемыми языками; например, для трехъязычной базы En+De+Ru это [En-En, En-Ru, En-De, De-En, …Ru-Ru]

1. Включена англо-русская локализация, используется EN-XX список слов (в котором включена русская локализация), одна из записей которого выглядит так:

eVariantShoweVariantSourceSortKey
АвстрияAustria

 2. Переключились на англо-немецкую локализацию – используется тот же список слов (локализация изменилась на немецкую), та же запись будет выглядеть так:

eVariantShoweVariantSourceSortKey
ÖsterreichAustria

3. Переключились на немецкую-английскую локализацию – список слов сменился на DE-XX (английская локализация), та же запись:

eVariantShoweVariantSourceSortKey
AustriaAustria

Код языка заголовка (eVariantLanguageCode, “LanguageCode”)

Вариант написания – код языка варианта написания eVariantShow
Используется для списка слов, в котором разные элементы списка слов могут быть на разных языках. Например, смешанный список, часть заголовков которого английские (и ведут на статьи с переводом на немецкий), а другая – немецкие (в статьях перевод на английский):

eVariantShoweVariantLanguageCode
arachnophobiaengl
arbeitengerm
arbiterengl

Флаг доступности в демо режиме (eVariantLockFlag, “LockFlag”)

Вариант написания – флаг, явно указывающий доступен ли элемент списка для просмотра или нет. Может отмечать как папки, так и отдельные статьи. Используется в демо-базах.

Глубина вложенности (eVariantDepth, “Depth”)

Вариант написания – отступ для слова в списке, соответствующий положению элемента в иерархии.

Фраза (eVariantPhrase, “Phrase”)

Вариант написания – контекст поискового результата, т.е. фраза, в которой встретилось слово (обычно используется при полнотекстовом поиске в Auxiliary списках).

Настройки отображения видимых вариантов (eVariantStylePreferences)

Deprecated. Вариант написания – настройки стилизации других вариантов написания текущей записи списка слов. Актуальный способ реализации подобного функционала – Стили в списке статей.

Нумерация (eVariantNumeration, “Numeration”)

Нумерация в списке статей (обычно это индексы омонимов); это отображаемый вариант.

Настройки локализации (eVariantLocalizationPreferences, “Localization”)

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

Подробно локализации в списке слов описаны здесь.

Индекс слова в несортированном списке (eVariantNotSortedRealGlobalIndex)

Индекс слова в несортированном списке (см. eWordListType_SimpleSearch) используется функциями подмотки.

Генерируется автоматически компилятором, не отображается (как и содержащий его список слов)

Грамматическая информация (eVariantGrammarInfoBegin, “GrammarInfo_[0…8]”)

Представляет собой диапазон [eVariantGrammarInfoBegin, eVariantGrammarInfoBegin + 0x8] возможных значений, которые предназначены для хранения грамматической информации об указанном слове; также применялся для отличных по смыслу вещей, которые со временем будут заменяться за собственные значения – по этой причине может быть как отображаемым, так и чисто техническим (соглашения диктуются конкретным проектом)

Ссылка на внешнюю статью (eVariantExternArticleLink, “ExternArticleLink”)

Ссылка на внешнюю статью

Ключ поиска во внешней базе (eVariantExternalKey, “ExternalKey”)

Вариант написания, содержащий в себе текст, по которому мы можем поискать контент во внешней базе.

Необходим для случаев, когда мы хотим разбить контент словаря на несколько баз и отображать некий список-оглавление из одной базы, а соответствующий записи контент подтягивать из другой. В этом случае из базы с оглавлением берется значение данного варианта и ищется во внешней базе среди значений варианта написания eVariantInternalKey (ID внешней базы прописывается отдельно; также считаем, что там всего 1 список слов и поэтому указывать индекс списка не требуется).

Поле для поиска по внешнему ключу (eVariantInternalKey, “InternalKey”)

Вариант написания, содержащий в себе текст, по которому внешняя база может найти данную запись

Функционально связан с eVariantExternalKey – при линковке баз текст варианта eVariantExternalKey из “основной” базы должен искаться среди значений данного варианта eVariantInternalKey в 0-м списке слов.

Имя подготовленного html-файла (eVariantHtmlSourceName, “HtmlSourceName”)

Вариант написания, содержащий в себе имя внешнего html-файла (при необходимости – с путем относительно расположения файла со словарной базой), который должен быть отображен вместо перевода статьи. Используется в случаях, когда словарная база должна быть индексом (упрощающим поиск, сортировку и т.п.) для набора внешних html-ресурсов. Проверка наличия этих ресурсов по указанным путям и подгрузка для отображения возлагается на приложение.

Например (считаем, что папка “html” с необходимым содержимым располагается на том же уровне, что и словарная база):

eVariantShoweVariantHtmlSourceName
Содержаниеhtml/index.xhtml
Статья 1html/chapter01.xhtml
Статья 2html/chapter02.xhtml
Тест 1 (Выберите правильный ответ)html/objects/b028198/index.xhtml

Информация для разработчиков приложений

/// Перечисление типов вариантов написания в списке слов
enum EListVariantTypeEnum
{
    /// Основной вариант написания
    eVariantShow = 0,
    /// Второй вариант написания (для китайского, японского и т.д.)
    eVariantShowSecondary,
    /// Вариант написания для сортировки списка (по умолчанию не отображается)
    eVariantSortKey,
    /// Вариант написания, который используется для отображения части речи в списке слов
    eVariantPartOfSpeech,
    /// Вариант написания - метка, на которую нужно перейти в статье при переводе слова (по умолчанию не отображается)
    eVariantLabel,
    /// Вариант написания - содержимое ключа сортировки для слова в исходном списке слов
    eVariantSourceSortKey,
    eSourceSortKey = eVariantSourceSortKey,
    /// Вариант написания - код языка варианта написания eVariantShow
    /// Используется для списка слов, в котором разные элементы списка слов могут быть на разных языках
    eVariantLanguageCode,
    /// Вариант написания - флаг, явно указывающий доступен ли элемент списка для просмотра или нет
    eVariantLockFlag,
    /// Вариант написания - отступ для слова в списке, соответствующий положению элемента в иерархии
    eVariantDepth,
    /// Вариант написания - фраза, в которой встретилось слово (используется при полнотекстовом поиске)
    eVariantPhrase,
    /// Вариант написания - настройки стилизации других вариантов написания текущей записи списка слов
    eVariantStylePreferences,
    /// Вариант написания - нумерация в списке статей; это отображаемый вариант
    eVariantNumeration,
    /// Вариант написания - настройки локализации (по умолчанию не отображается)
    eVariantLocalizationPreferences,
    /// Вариант написания - тип элемента структуры учебника
    eVariantTextBookLevelType,
    /// Вариант написания - номер элемента в структуре учебника
    eVariantTextBookLevelNumber,
    /// Вариант написания - описание элемента структуры учебника
    eVariantTextBookLevelDescription,
    /// Вариант написания - индекс слова в несортированном списке (см eWordListType_SimpleSearch)
    eVariantNotSortedRealGlobalIndex,
    /// Начало диапазона дополнительной информации о слове
    eVariantGrammarInfoBegin,
    /// Конец диапазона дополнительной информации о слове
    eVariantGrammarInfoEnd = eVariantGrammarInfoBegin + 0x8,
    /// Вариант написания - тип контента
    /// Необходимо для отображения иконок напротив элементов списка по типу контента на конечных платформах
    eVariantTypeOfContent,
    /// Ссылка на внешнюю статью
    eVariantExternArticleLink,
    /// Вариант написания, содержащий в себе текст, по которому мы можем поискать контент во внешней базе
    eVariantExternalKey,
    /// Вариант написания, содержащий в себе текст, по которому внешняя база  может найти данную запись
    eVariantInternalKey,
    /// Вариант написания, содержащий в себе имя внешнего html-файла, который должен быть отображен вместо перевода статьи
    eVariantHtmlSourceName,
    /// Вариант написания, содержащий в себе автора, для хрестоматий учебника
    eVariantAuthorName,
    /// Вариант написания, содержащий уникальный ID Kes-а
    eVariantKesID,
};
 
/// Информацию о вариантах написания можно узнать с помощью этих функций класса CSldListInfo:
 
/// Возвращает количество вариантов написания слова
ESldError GetNumberOfVariants(UInt32* aNumberOfVariants) const;
/// Возвращает тип варианта написания слова по индексу варианта
ESldError GetVariantType(UInt32 aIndex, UInt32* aVariantType) const;
/// Возвращает код языка варианта написания слова по индексу варианта
ESldError GetVariantLangCode(UInt32 aIndex, UInt32* aLangCode) const;

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.