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 aplica la cascada de lenguajes de ISO 14289 a una posición de contenido y llena Resolution con la declaración ganadora
Cuando HasMarkedContentLanguage es True, gana el valor /Lang del marked-content y Resolution.Source es pulsMarkedContent
De lo contrario, se recorren el elemento en ElementIndex y sus ancestros a través de ParentIndex hasta que uno tenga un Language no vacío; Resolution.Source es entonces pulsStructure y StructureElementIndex registra el elemento declarante
Cuando ningún elemento de estructura declara un lenguaje, se aplica un CatalogLanguage no vacío con Source pulsCatalog
Cada candidato se valida con IsPdfUaLanguageTagValid y el resultado se guarda en Resolution.DeclarationValid
La función devuelve Resolution.IsCovered, que es True solo cuando se encontró una declaración y esta es una etiqueta bien formada
Cuando no existe ningún candidato, Resolution conserva Source pulsNone con un Language vacío y el resultado es False
Covered := ResolvePdfUaEffectiveLanguage(Pdf.Language, Elements, I, '', False, Resolution);