GoBuildWP

Localization · 3 modules

WordPress Translation MCP that keeps translations linked.

A WordPress translation MCP keeps the links between language versions intact: which language a post is in, which posts translate each other, and which strings have translations. Polylang and WPML work on posts and strings; the Weglot module manages its languages, URLs and cache.

What goes wrong without a plugin-aware module

  1. Language and URL changes made without a crawl
  2. Provider keys exposed in prompts or logs
  3. Caches, canonicals, hreflang, and switcher behavior reviewed separately

Worked example

Publish a French version of an English page on a Polylang site and have both versions know about each other.

Polylang, where a translation is its own post joined to the original by a translation set. WPML follows the same shape with its own calls; Weglot translates in its cloud instead.

  1. wppilot/polylang-list-languagesPro

    Lists the languages actually configured, with slug, locale and which one is the default, so the agent never invents a language code.

  2. wppilot/create-postFree

    Creates the French page as a draft. This is the core Free ability; the translation still has no language at this point.

  3. wppilot/polylang-set-content-languagePro

    Assigns French to the new page. It can alter an existing translation relationship, so it needs confirmation.

  4. wppilot/polylang-link-content-translationsPro

    Replaces the translation set so the English and French pages point at each other. Every post in the set must already carry its language, which is why the previous step comes first.

  5. wppilot/polylang-get-content-languagePro

    Reads one of the pages back with its full translation set, to confirm both sides are linked.

What to check yourself. Publish the French page, open the English one and use the language switcher to reach it, then read the hreflang tags in both pages' rendered source. If a caching plugin is active, purge it before deciding the switcher is wrong.

Modules

3 modules compared

Each module loads only when its plugin is active and needs GoBuildWP Pro. Open a module for its full ability list, requirements and safety notes.

Localization modules, editions and ability counts
ModuleEditionAbilitiesInspect / change / destructiveCovers
WeglotPro197 / 5 / 7language configuration, translated URLs, excluded URLs, language switcher settings
PolylangPro95 / 2 / 2setup health, language discovery, translated content discovery, content language and translation sets
WPMLPro138 / 3 / 2setup health, language discovery, translatable post types and taxonomies, content discovery by language

Why it matters

What plugin-aware changes for localization

A multilingual site is one set of content with several addresses, and the links between translations are what hold it together. A broken association can affect switcher links and rendered language signals. Inspect the saved group, hreflang and canonicals separately; a group change alone does not establish what a search engine indexed.

A first safe workflow

Translate one page, then use the language switcher rather than typing URLs, because the switcher is what a visitor uses and what breaks first. Check the hreflang tags in the rendered source of both versions, clear the cache, and check again. Two passes catch the caching problems that make translation work feel unpredictable.

How to tell it worked

Load each language, use the switcher rather than typing URLs, and check the hreflang tags in the rendered source. Translation plugins cache aggressively, so clear the cache before deciding whether something is actually broken.

Picking a translation model an agent can work with

Where the translated words live: on your site or in a cloud project

The three translation plugins with modules in this category split along one line, and it shapes everything an agent can do. With WPML and Polylang, each translation is an ordinary post in your database, tied to its siblings by a group record. An agent can write a German page with create-post or update-post like any other content, then give it a language and link it to the original. With Weglot, the translated text lives in Weglot's cloud and is served over your pages; the WordPress side holds configuration, translated slugs and a cached copy of the cloud settings.

So the first question for a multilingual AI agent on WordPress is not which plugin is better but which half of the job you want it doing. On WPML or Polylang it can produce and file translations. On Weglot it manages languages, exclusions, translated URLs and the switcher, while translation text is edited on the Weglot dashboard.

Choosing between WPML, Polylang and Weglot for agent-maintained sites

Each choice gives something up, and none of the modules reconfigures its plugin in depth: WPML's languages, translatable types and translation mode are reported, never set, and Polylang Pro's machine translation and WPML's Translation Management jobs are not exposed. Within those limits:

  • Pick WPML when you need string translation for theme options and custom fields as well as posts. Its String Translation add-on is what the string abilities read and write, and without it they refuse with a clear error rather than guessing.
  • Pick Polylang for a lighter footprint where content is the main job. Its strings are keyed by the exact original sentence, so a theme that rewords a label silently loses that translation; ask the agent to list untranslated strings after any theme update.
  • Pick Weglot when nobody on the team will manage translated posts, and translation quality is handled by Weglot's engine and dashboard editing. Expect configuration changes to need a publish step before visitors see them.

Translation writes are confirmed because they cannot be rolled back

Unlike most content work, almost nothing in this category comes back from the change ledger. Assigning a language and linking a translation set rewrite a group shared by several posts, so both are confirmed writes with no undo on WPML and Polylang. String writes return the previous value so a person can put it back by hand. On Weglot, changing the original language can affect the whole translation project; review the provider's warning and publish/readback results. Recognized secret values are redacted from displayed/exported records, but usable settings before-images can retain them in protected storage. Keep keys out of prompts and exports.

Two habits keep this safe. Read the full translation map for a post before linking, because a link call treats the map it is given as the whole set and drops members you left out. And never let a language change and a link happen in the same unreviewed step: assign, check, then link.

A translation workflow an agent can run on WPML or Polylang

Term translations are not handled by either module, so category and tag names in other languages stay a manual task in the plugin's screens.

  • Read the configured languages with wpml-list-languages or polylang-list-languages, and use the exact codes they return (WPML expects de, not de_DE).
  • Find what is missing with wpml-list-content or polylang-list-content; languages absent from an item's map are the untranslated ones.
  • Write the translation as a draft post through create-post, with the same post type as the original.
  • Give the draft its language with wpml-set-content-language or polylang-set-content-language. Linking fails on a post that has no language yet.
  • Link the set with wpml-link-content-translations or polylang-link-content-translations, passing every existing member.
  • Publish after a person has read the translation, then check the switcher and rendered tags on both language versions.

Multilingual stores and other edges

On a WooCommerce store running WPML, products are translated through the same content abilities as any post type. WooCommerce Multilingual's handling of prices, attributes and variations per language is not wrapped, so currency and variation work stays in its own screens. Weglot translated slugs are stored on this site and never reach the Weglot project, which means another install or a refresh from the cloud can discard them; keep a note of any you add.

Weglot reads also say where their answer came from. When the configuration source is a local fallback, Weglot could not be reached and every cloud-managed field is unknown rather than empty, so an agent should report that and stop instead of concluding a language or exclusion is missing. weglot-get-status and weglot-get-translation-cache-state are the reads to start with.

Each module keeps to its own plugin. Identifiers from one are never passed to another, so a site migrating from Polylang to WPML is a migration a person plans, not a prompt. The WPML MCP guide goes deeper on that plugin alone.

Translating TranslatePress strings, one language at a time (Pro)

TranslatePress has no row in the module table above; what follows is a Pro addition and a Free change record for the abilities TranslatePress ships itself. TranslatePress's own abilities can add and remove languages, but they cannot read or write a single translation, so an agent could add Spanish and then not write a word of it. GoBuildWP Pro 1.12.0 fills that gap. It lists the strings TranslatePress has collected from the site for a language, with the status of each, and saves up to 100 translations at a time through the same call TranslatePress's own editor makes.

Saved translations use TranslatePress's reviewed status, so TranslatePress's automatic translation leaves them alone afterwards. Undo writes each string's previous translation and status back and reads them again to confirm.

From GoBuildWP Free 1.18.0, TranslatePress's own abilities for adding, removing and updating languages, choosing the default language and switching on automatic translation are recorded with a snapshot of the settings they change, so they can be undone. Setting the TranslatePress licence key is recorded as irreversible: a licence key is a secret and is never copied into the change log.

FAQ

Localization and AI, answered

Can an agent translate content?

It can create and link translations through the plugin's own model, and where a translation service is configured it can drive that too. Translation quality belongs to the model or the service; the module supplies supported relationship operations. Inspect complete groups and verify saved membership, rendered switcher/hreflang/canonical output and unrelated members separately.

Will hreflang and canonical tags stay correct?

Not automatically. The module keeps translation relationships intact, and the translation plugin builds those tags from them, but the printed tags also depend on the SEO plugin, the theme and any cache in between. Check hreflang and canonical in the rendered source of every language version, after clearing the cache, rather than in the plugin screen.

Are translation provider keys visible to the AI client?

They should not be. Keys belong in the plugin's own settings on the site, not in prompts or client configuration, and no workflow needs to read them back.

Why does linking translations fail on a page I just created?

Because the page has no language yet. wppilot/polylang-link-content-translations and its WPML counterpart require every post in the set to already carry the language it is mapped to. Assign the language first with the set-content-language call, then link.

Why does a Weglot site keep showing old translations after a change?

Weglot keeps a local copy of its cloud settings and of translated URL slugs in transients, the settings snapshot for 300 seconds by default. wppilot/weglot-clear-translation-cache deletes both, so the next page load fetches fresh data; check again after that before deciding the change did not take.

Start in Read Only, then add what the site runs

Connect your AI client to the free MCP foundation and check what it can see. Add Pro when you want the Weglot, Polylang and WPML modules.