Troubleshoot machine translation
Start with the message shown beside the POM AI action or in the Generate pending translations activity log. Then match the symptom to the checks below.
| Symptom | Likely cause | Check |
|---|---|---|
| POM AI action is absent | LLM translation is disabled or no target locale exists | Settings → POM Translate → Advanced and the additional-language list |
| A valid POM AI license is required | No readable POM AI key exists for this site | Settings → POM AI → License |
| Domain is not configured or authorized | The current host is absent from the POM AI license | The Domain line and account authorized-domain list |
| Not enough AI credits | Account balance or this domain's allowance is exhausted | Settings → POM AI → License and My Account → POM AI Management |
| Daily translation limit reached | Local word or string counter has no room for the next batch | Machine Translation Status and LLM translation settings |
| Translation is temporarily paused | Qualifying failures reached the error threshold | License, connectivity, latest error, and backoff time |
| Service could not be reached | Outbound HTTPS, DNS, firewall, or temporary account-service problem | Retry one small item after connectivity is restored |
| AI reply was unusable | Empty, incomplete, malformed, or missing output | Retry one representative string; review persistent cases manually |
| Protected formatting markers changed | Required placeholders were removed, duplicated, or altered | Leave the row pending and correct it manually |
| Source changed during the request | An editor saved the source before the reply arrived | Run translation again against the current source |
| String exceeds the limit | One extracted value exceeds 400 payload words, including protected formatting and application markers | Find the source from the batch details, then split the source content or translate the value manually |
| Queue does not move | Background translation is disabled or WordPress cron is not running | Background setting, cron runner, then Process now |
Use the correct status view
Open Translations → Generate pending translations to inspect queue size, word usage, string usage, and paused state.
Then open Translations → Translate contents, select the target language, and filter:
- Pending for unresolved or rejected values;
- Machine for successful POM AI results awaiting editorial review.
The generator completing its object scan does not prove every string translated. The final pending filter is the authoritative review list for database-backed content.
Identify an affected batch
Failed stored-string batches include Batch details in the activity log: the target locale, string IDs, source object types and IDs, source fields, and payload word and string counts alongside their per-request limits. These details are available without enabling WordPress debug logging. They contain identifiers and counts, not the source text or translation prompt.
For example, a source shown as post:567:post_content belongs to the content of post or page 567. Open Translations → Translate contents, select the reported language, set Filter by status to Pending, set Filter by object type to Post, enter 567 in Object ID, and select Filter. A meta source belongs to a custom field of that same post. Registered values are managed under Other translations.
When only part of a batch remains unresolved, the details identify those remaining rows. A job paused after repeated translation failures also lists its pending string IDs and locale. Correct the reported cause before resuming the same processing mode.
Payload words are counted after formatting and application markers have been protected for the translation request. This count can exceed the number of visible words in the editor. Multi-string requests are split automatically when their final payload exceeds a local request limit; an individual string that still exceeds the limit requires manual attention.
Retry safely
- Correct the deterministic cause first.
- Retry one short value.
- Confirm the target locale and stored status.
- Confirm the local counters and POM AI balance behave as expected.
- Resume a larger run only after the sample succeeds.
Do not reset local quota counters to solve a missing license, domain, credit, network, or formatting problem. The reset changes none of those conditions.
If a value cannot be translated automatically, enter it manually. Leaving the field empty is also safe: public rendering falls back to the source text.