Варианты написания – набор полей, хранящих различную информацию о записи в списке слов. Количество вариантов написания одинаково для всех записей списка.
Не все варианты являются отображаемыми – количество видимых вариантов можно узнать только перебрав все варианты и проверив наличие нужных. Информация о том, является ли отображение того или иного варианта поведением по умолчанию указана в каждом из них. В случае отображаемых вариантов финальный вид заголовка статьи (т.е. как и с какими стилями значения вариантов будут объединены в финальный заголовок) определяется логикой приложения. Таким образом, с точки зрения отображаемости варианты можно поделить на три типа:
- отображаемые (стилизация определяется приложением);
- рекомендуемые к отображению (в конечном итоге стилизация определяется все так же приложением, но в базе прописан уже стилизованный вариант);
- не рекомендуемые к отображению (ни в одном приложении не показываются);
В настоящий момент актуальными являются следующие типы вариантов написания (в скобках указано значение 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 |
---|---|
a | a |
a❄ | a. |
a❄❄ | A |
aa | AA |
Часть речи (eVariantPartOfSpeech, “PartOfSpeech”)
Вариант написания, который используется для отображения части речи в списке слов.
Метка (eVariantLabel, “Label”)
Метка, на которую нужно перейти в статье (т.е. подмотать окно с переводом) при переводе слова. Текст метки уникален в пределах статьи и потому подмотка однозначна. Вариант написания может встречаться как в основных отображаемых списках (словарном, например), так и в результатах полнотекстового поиска. По умолчанию не отображается.
Ключ сортировки исходного списка (eVariantSourceSortKey, “SourceSortKey”)
Универсальный ключ, по которому можно найти статью в мультиязычной базе вне зависимости от текущей локализации
При этом локализации переключаются во время работы приложения. Значение данного варианта написания инвариантно относительно языковой пары и используется например для сохранения текущей статьи в списке после переключения локализации:
Мультиязычные базы содержат полную матрицу языков, т.е. все возможные языковые пары, образуемые используемыми языками; например, для трехъязычной базы En+De+Ru это [En-En, En-Ru, En-De, De-En, …Ru-Ru]
1. Включена англо-русская локализация, используется EN-XX список слов (в котором включена русская локализация), одна из записей которого выглядит так:
eVariantShow | eVariantSourceSortKey |
---|---|
Австрия | Austria |
2. Переключились на англо-немецкую локализацию – используется тот же список слов (локализация изменилась на немецкую), та же запись будет выглядеть так:
eVariantShow | eVariantSourceSortKey |
---|---|
Österreich | Austria |
3. Переключились на немецкую-английскую локализацию – список слов сменился на DE-XX (английская локализация), та же запись:
eVariantShow | eVariantSourceSortKey |
---|---|
Austria | Austria |
Код языка заголовка (eVariantLanguageCode, “LanguageCode”)
Вариант написания – код языка варианта написания eVariantShow
Используется для списка слов, в котором разные элементы списка слов могут быть на разных языках. Например, смешанный список, часть заголовков которого английские (и ведут на статьи с переводом на немецкий), а другая – немецкие (в статьях перевод на английский):
eVariantShow | eVariantLanguageCode |
---|---|
arachnophobia | engl |
arbeiten | germ |
arbiter | engl |
Флаг доступности в демо режиме (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” с необходимым содержимым располагается на том же уровне, что и словарная база):
eVariantShow | eVariantHtmlSourceName |
---|---|
Содержание | html/index.xhtml |
Статья 1 | html/chapter01.xhtml |
Статья 2 | html/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;