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 stosuje kaskadę językową ISO 14289 do jednej pozycji treści i wypełnia Resolution zwycięską deklaracją
Gdy HasMarkedContentLanguage ma wartość True, wygrywa wartość /Lang z marked-content, a Resolution.Source przyjmuje pulsMarkedContent
W przeciwnym razie przechodzimy od elementu o indeksie ElementIndex w górę przez ParentIndex kolejnych przodków, aż któryś przeniesie niepuste Language; wówczas Resolution.Source przyjmuje pulsStructure, a StructureElementIndex zapamiętuje element deklarujący
Gdy żaden element struktury nie deklaruje języka, stosuje się niepuste CatalogLanguage ze Source równym pulsCatalog
Każdy kandydat jest walidowany przez IsPdfUaLanguageTagValid, a wynik trafia do Resolution.DeclarationValid
Funkcja zwraca Resolution.IsCovered, które ma wartość True tylko wtedy, gdy znaleziono deklarację i jest to poprawnie zbudowany tag
Gdy nie ma żadnego kandydata, Resolution zachowuje Source równe pulsNone z pustym Language, a wynik to False
Covered := ResolvePdfUaEffectiveLanguage(Pdf.Language, Elements, I, '', False, Resolution);