function ResolvePdfUaEffectiveLanguage(const CatalogLanguage: WString;
const Elements: TPdfStructureElements; ElementIndex: Integer;
const MarkedContentLanguage: WString; HasMarkedContentLanguage: Boolean;
out Resolution: TPdfUaLanguageResolution): Boolean;
| CatalogLanguage | WString |
| Elements | TPdfStructureElements |
| ElementIndex | Integer |
| MarkedContentLanguage | WString |
| HasMarkedContentLanguage | Boolean |
| Resolution | TPdfUaLanguageResolution |
BooleanResolvePdfUaEffectiveLanguage применяет языковой каскад ISO 14289 к одной позиции содержимого и заполняет Resolution выигравшим объявлением
Когда HasMarkedContentLanguage равно True, побеждает значение /Lang из marked-content, а Resolution.Source становится pulsMarkedContent
Иначе выполняется обход элемента с индексом ElementIndex и его предков по ParentIndex, пока один из них не укажет непустой Language; тогда Resolution.Source равен pulsStructure, а StructureElementIndex фиксирует объявивший элемент
Если ни один элемент структуры не объявляет язык, применяется непустой CatalogLanguage с Source pulsCatalog
Каждый кандидат проверяется функцией IsPdfUaLanguageTagValid, и результат сохраняется в Resolution.DeclarationValid
Функция возвращает Resolution.IsCovered, которое равно True, только когда объявление найдено и является корректно сформированным тегом
Если кандидатов нет, Resolution сохраняет Source pulsNone с пустым Language, а результат равен False
Covered := ResolvePdfUaEffectiveLanguage(Pdf.Language, Elements, I, '', False, Resolution);