Matterhorn 11-001 · PDF/UA-1 UA1:7.2-3

Set the PDF language so a screen reader uses the right voice

Blocker Checkpoint 11: Declared Natural Language WCAG 3.1.1 (A)WCAG 3.1.2 (AA)

No /Lang is in effect for some text: neither on the catalog, nor on an enclosing structure element, nor on a marked-content sequence.

The condition, as the protocol states it. “Natural language for text in page content cannot be determined.”

Matterhorn Protocol 1.1, checkpoint 11, index 11-001, section UA1:7.2-3. Software can decide this one on its own.

What a screen reader actually does

The reader uses its default voice. Hebrew read with an English synthesiser is unintelligible; English read with a Hebrew synthesiser equally so.

What is in the file

One entry on the catalog covers the whole document:

1 0 obj
<< /Type /Catalog
   /Lang (en-US)
   /Pages 2 0 R
   /StructTreeRoot 6 0 R
   /MarkInfo << /Marked true >>
>>
endobj

Any structure element can override it for its subtree:

14 0 obj
<< /Type /StructElem /S /P /Lang (he-IL) /Pg 3 0 R /K [ 2 ] >>
endobj

Condition 11-001 fires when text exists for which no /Lang is in effect anywhere up the chain — and, in Taggart’s implementation, also when a /Lang is present but is not a well-formed BCP 47 tag, since a reader that cannot parse it behaves exactly as if it were missing.

What the user hears

An English synthesiser reading French produces something a French speaker can usually decode with effort. The same synthesiser reading Hebrew produces nothing decodable at all: the letters are outside its phoneme inventory, so it spells them, announces them by name, or falls silent.

This is why the condition matters far more in Hebrew and Arabic documents than the checker’s severity suggests. In a Latin-script document a missing language is an irritation. In a Hebrew document it makes the file unusable, and it is the second most common Hebrew PDF defect after reading order.

How to fix it free, in Acrobat Pro

Thirty seconds, and it is the highest-value half-minute in PDF remediation:

  1. File → PropertiesAdvanced tab.
  2. Reading Options → Language — pick from the list, or type a BCP 47 tag.
  3. Save.

For a passage in another language:

  1. Open the Tags panel.
  2. Right-click the element containing the passage → PropertiesTag tab.
  3. Set Language. It applies to that element and everything inside it.

Upstream, again, is better. Word carries the language of each run into the export: select the text, Review → Language → Set Proofing Language. InDesign carries the language set on the paragraph or character style. Doing it in the source means the per-passage overrides come across automatically, which is the tedious part to do by hand.

The mistake that passes every checker

Setting /Lang (en-US) on a Hebrew document.

The catalog has a language. It is well-formed. Every checker passes it, including PAC and veraPDF, because condition 11-001 asks whether a language can be determined, not whether it is right. Whether it is right is condition 11-007, which the protocol marks as requiring human judgement.

It is extremely common, because English is the default in most PDF producers and nobody changes it. The result is a document that is formally conformant and completely unusable.

Where Taggart differs

Taggart reports the missing case with the count of affected elements and a sample of their structure paths, so you can see whether it is the whole document or one stray subtree.

For the “wrong language” case it does something a validator normally will not: it decides. Hebrew and Arabic are decidable from the script, so Taggart compares the characters actually used against the language declared:

The document declares /Lang ‘en-US’ but 138 of 138 strong-direction characters are hebrew. The declared language does not match the script actually used.

It does the same per element, so an English abstract inside a Hebrew paper is caught in both directions.

The fix proposes a value from the dominant script and waits for confirmation before writing it — “mostly Hebrew” is not the same as “this document is Hebrew”, and a document is allowed to be about something other than what its characters suggest. Per-run /Lang for right-to-left passages is handled by TG-RTL-002, which sets he-IL or ar on each detected run.

How Taggart handles it

Taggart detects this condition automatically. It is reported as a blocker, with the page, the structure path and the object id of every occurrence.

The fix is Set the document language. It changes what the document means, so Taggart proposes it and waits for your approval rather than applying it unattended.

Whatever Taggart changes, the page still looks identical. Fixes edit the PDF object model, not the content streams, and every remediation is re-rendered and compared against the original at structural similarity ≥ 0.999 before you get the file back. A tool that quietly reflows your document is worse than no tool.

Frequently asked questions

Where does the language actually go?

The document default is /Lang on the catalog. Any structure element can override it with its own /Lang, and that override applies to everything beneath it. A marked-content sequence can carry one too. The language in effect for a piece of text is the nearest /Lang up the tree.

What format does the value take?

A BCP 47 language tag: en-US, he-IL, ar, fr-CA. Not a full language name, not a locale code with an underscore. Taggart validates the syntax and reports a malformed tag rather than accepting it, because a reader that cannot parse the tag falls back to its default just as if it were absent.

Do I need to tag every paragraph, or is the document language enough?

The document language covers everything by default. You only override where the language actually changes — a quotation in another language, an English abstract in a Hebrew paper, a bibliography of foreign titles. WCAG 3.1.2 Language of Parts (Level AA) is the criterion that requires those overrides.

Does this affect anything other than screen readers?

Yes. Hyphenation, search indexing, machine translation and text-to-speech in reading apps all use it. It also affects how a braille display renders the text, since braille contractions are language-specific.

Where this sits in the standards

Standards this condition maps to
StandardReference
Matterhorn Protocol 1.1 Checkpoint 11 (Declared Natural Language), index 11-001
PDF/UA-1 (ISO 14289-1) Clause 7.2-3
WCAG 2.1 3.1.1 Language of Page — Level A
WCAG 2.1 3.1.2 Language of Parts — Level AA
EN 301 549 / Section 508 / ADA Title II All three point at WCAG 2.1 Level AA for non-web documents, so a Level A or AA criterion here is in scope for each of them.

Other conditions in checkpoint 11

Checkpoint 11 covers declared natural language. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.

Check your own file. Taggart’s validator is free and unlimited — every machine-checkable Matterhorn condition, no page cap, no watermark, no account needed.

Check a PDF free

Verified against a real document on . Last updated .