Skip to content

Updating Outdated Translations

On this page

Available in LATW AI Translator for WPML PRO.

#What it does

When you change a post that is already translated, WPML marks its translations as outdated.
You then decide how to bring them up to date. The plugin offers three ways:

  • Translate only changed strings (recommended) — the default. Only the parts of the post you
    actually changed are sent to the AI. Everything else keeps the translation it already has.
  • Translate only changed strings, with the whole page as context — the same strings are
    translated and written, but the AI is also shown the rest of the page and the translation
    already published for it. Best quality, and it costs more on every update.
  • Re-translate the whole post from scratch — the post is translated again from the first
    word to the last, and the previous translation is replaced.

The setting lives in AI Translator → Settings → Translation → Outdated Translations.

Translating only what changed is usually much cheaper: fixing a typo in one paragraph of a long
article costs one paragraph, not the whole article. It is also faster, and it leaves the rest of
the translation exactly as it is — including any wording you corrected by hand.

#Translating with the whole page as context

This mode requires version 2.3.0 or later.

The two “only changed strings” modes write exactly the same thing: the changed strings, nothing
else. They differ in what the AI is allowed to see while translating them.

In the default mode the AI receives the changed strings alone. A new paragraph added to a long
article arrives with no idea what the article is about, how its terms were translated last year,
or whether the page addresses the reader formally or informally. That is what makes an updated
page read as if it were written by two different people: the new paragraph is correct on its own
and does not match the page around it.

With the whole page as context, the job also carries every untouched field of the page — its
source text and the translation currently published for it — marked as reference material the
AI must not translate or return. The AI is told to treat the published translation as approved:
to reuse its terminology, keep its tone and formality, and not to “improve” a word your
translator chose.

This is the mode to pick if you correct translations by hand and want new content to sound like
the corrections rather than like a fresh translation. Your corrections are part of the context
— they are read back from the translation exactly as the default delta mode reads them, so the AI
is shown your wording, not the wording it produced originally.

The cost. Every update sends the entire page to the AI on top of the strings being
translated, so an update to a long article is priced closer to a full re-translation than to a
delta one — while still writing only the changed strings, and still protecting everything else.
It is deliberately the expensive option: it exists for sites where translation quality matters
more than the token bill.

The exact shape of that reference material — and of everything else the model receives — is
described in How the Translation Prompt Works.

Machine-translation engines. DeepL and Google Translate translate text instead of following
instructions, so there is no way to give them context. With one of those selected, this mode
behaves exactly like the default one.

Nothing else changes. The same strings are compared, the same hand corrections are kept, jobs
with nothing to translate are still closed without calling the AI, and the same limits apply to
page builders and custom fields as described below.

This setting only applies to content that is already translated. A post being translated for
the first time is always translated in full, because there is nothing to keep. The Translate
Again
button is also always a full re-translation, whatever the setting says — that is what the
button is for.

#How the plugin decides what changed

The comparison is WPML’s, not ours. WPML remembers the exact text it sent for translation last
time and compares it with the text now:

  • Identical → the existing translation is kept and nothing is sent to the AI.
  • Different, or brand new → it goes to the AI.

What counts as one “string” depends on how the post is built:

Content Compared as
Title, excerpt, slug One string each
Body written in the block editor One string per piece of text in a block — usually one per paragraph or heading, several for blocks that hold more than one (a list, a table, a button and its label)
Body written in the classic editor The whole body as a single string
Custom fields (ACF and others) One string per field
Taxonomy terms One string per term name

This is why the block editor benefits most: add one paragraph to a long page and only that
paragraph is translated. In the classic editor the body is a single string, so any change to it —
even one word — re-translates the whole body. Title, excerpt and custom fields are still compared
separately, so they are still skipped when untouched.

#When nothing is sent to the AI at all

A translation is marked outdated when anything WPML watches changes — the content, the title, the
excerpt, the terms, the custom fields. Some of those changes carry no new text to translate at
all: re-arranging blocks, swapping an image, adjusting a block setting, or a field that is not
translated, such as a price written by an importer.

When that happens the plugin finds nothing to translate, closes the job and clears the outdated
flag without calling the AI. You are not billed, and the translation stops showing as
outdated.

#Corrections you made by hand

This is the part worth understanding, because it is where the two modes differ most.

You translate a page, then open the translation and fix a sentence the AI got wrong. Later you add
a new paragraph to the original and update the translation. What happens to your fix?

With “translate only changed strings”, your correction is kept. Before sending anything to the
AI, the plugin reads the translation as it stands now and records your wording as the current
translation of that paragraph. The AI is then asked only for the new paragraph, and the finished
page contains your corrected sentence plus the newly translated paragraph.

With “re-translate the whole post from scratch”, your correction is replaced. Every paragraph
is translated again, including the one you fixed. This is intentional — it is what a full
re-translation means — but it is worth knowing before you pick that option on a post you have
edited by hand.

#Where hand corrections are kept

What you edited in the translation Kept when translating only what changed
Title, excerpt, slug Yes
Body — classic editor content Yes
Body — block editor content Yes
Body — Divi, Elementor, WPBakery and other page builders No — correct them in WPML’s Translation Editor
Custom fields / ACF values No — correct them in WPML’s Translation Editor

#Where they are not

Page builders. Divi, Elementor, WPBakery, Beaver Builder, Fusion Builder and the like store
their content in their own format, and the plugin cannot tell which piece of the translation
belongs to which piece of the original. If you edited a translation in the builder, updates to it
are refused the same way as above — nothing is billed and nothing is lost — until you replace the
translation with Translate Again. Do not correct page-builder translations in the builder
itself.
Make the correction in WPML’s Translation Editor, where it is stored as the translation
and kept from then on.

Custom fields. The same applies to ACF and other custom fields: editing the value directly on
the translated post is not recorded anywhere WPML reads back from, so a later update overwrites it
with the last translated value. Change custom field translations in WPML’s Translation Editor.

#Things that stop a merge

Even with block content, there are situations the plugin will not try to resolve:

  • You added or removed blocks in the translation itself. The translation no longer matches the
    original block for block, so there is no safe way to say which translated block belongs to which
    original one.
  • The same text appears twice in the original and you translated the two copies differently.
    WPML stores one translation per distinct source text, so there is no way to keep both.

When this happens on a translation you edited directly in the WordPress editor, the update is
refused before anything is sent to the AI
. You get a message saying so, nothing is billed, and
the translation stays exactly as you left it. This is deliberate: WPML would not have written the
new translation to that page anyway, so paying for it would buy nothing — and the attempt would
cost you your corrections on the run after.

The fix is Translate Again. It replaces the translation completely, in one pass, and updates
merge normally from then on. If you would rather keep what is there, edit the translation in
WPML’s Translation Editor instead — corrections made there are stored as translations and are
always kept.

#What a changed paragraph does to your correction

If you correct the translation of a paragraph and then change that same paragraph in the
original
, the paragraph is re-translated and your correction to it is gone. Only corrections to
parts you did not touch in the original survive. That is unavoidable: the source text it belonged
to no longer exists.

Purely cosmetic differences — an extra space, a  , a different HTML entity for the same
character — are not treated as corrections and do not stop anything.

#Which mode should I use?

Use translate only changed strings (the default) for normal editing: fixing typos, adding
sections, updating prices in text, extending an article. It is cheaper, faster, and it protects
the corrections you or your translators made.

Use translate only changed strings, with the whole page as context when the result matters
more than the cost: a flagship page, a site whose translations are proofread by a person, or
content full of terminology that has to stay consistent from one update to the next. It keeps
everything the default mode keeps and buys consistency with the surrounding text.

Use re-translate the whole post from scratch when the translation as a whole is no longer
good: you rewrote the original heavily, you changed the translation prompt or glossary, you
switched AI provider or model, or you simply want a clean result and do not need what is there
now.

You do not have to change the setting to do a one-off full re-translation — the Translate
Again
button on the Translations screen always does that for the posts you select.

#Checking what happened

Every run is recorded in the plugin log (AI Translator → Logs). Useful lines:

  • imported manual edits from the translation into String Translation — hand corrections were
    found and kept, with the number of strings.
  • delta job already up to date, closing without an LLM call — nothing changed, nothing was
    billed.
  • refusing to translate, WPML will not rebuild this translation — the update was refused as
    described above; nothing was sent to the AI and nothing was changed.
  • could not match part of the translation to the original — part of the translation could not be
    attributed to the original, but the update went ahead because there were no hand edits at risk.
  • enqueued WPML job — shows the mode the job ran in (delta, delta-context or full), how
    many fields are being translated and, for delta-context, how many fields were sent along as
    context.

The History screen lists every translation with the tokens and cost it used, so an update that
only translated a paragraph is visibly cheaper than a full one.