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.placeholder_unknown

On this page

A wording writes a placeholder, such as {nom}, that isn't one of its message's fields.

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

Why Jadpo refuses it

A message's fields are the only values its wording can write, each as a {field} placeholder. A placeholder that names no field has no value to fill it, so the sentence could never be written. It is most often a field's name that was translated or mistyped along with the text.

What it looks like

The message OrderShipped has one field, name, and the English file writes it as {name}. The French file translates the placeholder too.

domains/shipping/translations/fr_fr.jadpo:

example
translations {    order_shipped: "La commande de {nom} a été expédiée."}
jadpo checkcheck failed: 1 error, 4 files

error {nom} isn't a field of OrderShipped

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

  |2 |     order_shipped: "La commande de {nom} a été expédiée."  |                                    ^^^^^ no such field
reason
OrderShipped has no field nom a wording can write; this wording may write {name}.
next
Remove {nom}, or add the field to OrderShipped (agent)
rule
translation.placeholder_unknown
help
https://jadpo.dev/docs/errors/translation.placeholder_unknown

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

How to fix it

If the placeholder means a field the message has, write that field's name, untranslated. In domains/shipping/translations/fr_fr.jadpo:

example
    order_shipped: "La commande de {name} a été expédiée."

The French wording now writes the customer's name where {name} stands.

A wording that needs a value the message doesn't carry needs a new field on the message, OrderShipped here. Each call of the message then passes it, and each language's file writes it, since a field a language never writes is translation.field_unused.

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