Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 5 Nov 2026. What's built · Install 0.3.0
jadpo
ReferenceErrors

ErrorsConfiguration · rule

translation.variant_missing

On this page

A wording that changes with a count or with an enum's value leaves out one of the plural forms or values.

Area 10, Configuration; not declinable; the next step is usually the agent's.

Why Jadpo refuses it

A message with a count is worded once for each plural form its language uses, and a message with an enum field once for each of the enum's values. Each language has its own plural forms, from Unicode CLDR: English has one and other, and French also has many, which it uses for a million. A count or value with no wording would have no words to show.

What it looks like

The message Parcels takes a count, and the English file words its two English forms, one and other. The French file gives the same two.

domains/shipping/translations/fr_fr.jadpo:

example
translations {    parcels: {        one: "{count} colis"        other: "{count} colis"    }}
jadpo checkcheck failed: 1 error, 4 files

error parcels in domains/shipping/translations/fr_fr.jadpo has no wording for the plural form many

--> domains/shipping/translations/fr_fr.jadpo:2:5

  |2 |     parcels: {  |     ^^^^^^^ no `many`
reason
Locale.fr_fr needs a wording for each plural form CLDR gives it, so a count in any of them has words to show.
next
Add a wording for many to parcels, each able to write {count} (agent)
rule
translation.variant_missing
help
https://jadpo.dev/docs/errors/translation.variant_missing

(agent) at the end of the next: line means your coding agent can make the fix itself.

A message with an enum field is worded once for each value. Here OrderShipped changes with how formally the customer is addressed, and the French file words only the formal value.

domains/shipping/translations/fr_fr.jadpo:

example
translations {    order_shipped: {        formal: "Bonjour {name}, votre commande a été expédiée."    }}
jadpo checkcheck failed: 1 error, 5 files

error order_shipped in domains/shipping/translations/fr_fr.jadpo has no wording for the value casual

--> domains/shipping/translations/fr_fr.jadpo:2:5

  |2 |     order_shipped: {  |     ^^^^^^^^^^^^^ no `casual`
reason
OrderShipped is worded once for each value of Formality, so every value has words to show.
next
Add a wording for casual to order_shipped, each able to write {name} (agent)
rule
translation.variant_missing
help
https://jadpo.dev/docs/errors/translation.variant_missing

How to fix it

If a plural form is missing, add a wording for it. In domains/shipping/translations/fr_fr.jadpo:

example
        many: "{count} colis"

A French count of a million parcels now has its own wording.

If an enum's value is missing, add a wording for that value:

example
        casual: "Salut {name}, ta commande est en route !"

A French customer addressed casually now gets the casual wording.

Markdown for agents: /docs/errors/translation.variant_missing.md.Built from Jadpo main at aee2e8f.