Run this first when a translation appears not to take effect. It answers the questions that decide whether anything else in this suite can work: the site locale, whether the languages directory exists and is writable, how many bundles Loco can see.
And one that matters more than all of them — whether this WordPress uses the .l10n.php translation cache.
At a glance
| Ability | translations/get-translation-status |
| Toolset | Loco Translate — toolset/loco-translate |
| Group | Loco Translate › Discovery |
| Requires | Loco Translate, active on the site |
| Capability | manage_options |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
WordPress 6.5 and later compiles translations into a .l10n.php file and reads that in preference to the MO. A save that produced an MO but no cache leaves the old strings rendering on the front end, with nothing logged and nothing visibly wrong.
So uses_php_cache is not trivia. It tells you how to read every save in this suite: on a 6.5+ site, php_bytes being zero in an artefacts response means the write did not reach what WordPress actually loads.
The writable check catches the other common cause. A languages directory owned by root, or missing entirely, makes every write in this suite fail — usually at the point where someone has already typed forty translations.
Input
This ability takes no input.
What comes back
| Name | Type | What it is |
|---|---|---|
site_locale | string | The locale the site runs in. |
languages_dir | string | Where translations are written. |
languages_dir_exists | boolean | Whether that directory exists. |
languages_dir_writable | boolean | Whether it can be written to. |
uses_php_cache | boolean | True on WordPress 6.5+, where the .l10n.php cache is read in preference to the MO file. |
bundle_count | integer | How many bundles Loco can see. |
loco_version | string | The Loco Translate version in use. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
I translated a string but the site still shows English — what’s wrong?
It resolves to one call:
{
"ability": "translations/get-translation-status",
"parameters": {}
}Worth knowing
- First call for any “the translation didn’t take” report.
- On a 6.5+ site, a stale
.l10n.phpbeats a correct MO every time.translations/compile-translationsis the repair. - A non-writable languages directory fails every write in this suite, so check it before starting work rather than after.
Related abilities
- Recompile Translations — the fix for a stale cache
- List Translation Bundles — what Loco can see
- List Locales — valid locale tags for this site
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category