Multilingual use case
Translate a WordPress site with AI, and keep WPML or Polylang in order.
Language models are good translators. The part that breaks multilingual WordPress sites is the bookkeeping: every translated page needs the right language, the right translation group and a place in the switcher. Here the AI client writes the words and GoBuildWP does the bookkeeping through WPML's or Polylang's own data.
GoBuildWP Pro, Works in Claude Code, Runs under Production Safe, Pricing
Illustrative ability sequence for GoBuildWP Free 1.18.6 and Pro 1.12.4. IDs, results and recovery outcomes are examples, not a recorded client or WordPress test. Select Read Only explicitly for the initial reads; Production Safe is the default. Connection management requires manage_options on a single site or superadmin on multisite.
The problem
Translation was never the hard part
Paste a German translation into a new page by hand and WPML treats it as a stray page in the default language: no translation group, no language switcher, hreflang pointing nowhere useful. Multiply that by forty pages and the site needs an afternoon of untangling.
The workflow here splits the job the right way. The AI client reads the source and writes the translation, which is language work. GoBuildWP creates the translated draft, assigns the configured language and joins it to the original's translation group, which is data work that WPML and Polylang are strict about.
What Claude Code can do here
- List which pages and posts are missing a translation in each configured language
- Read the source content and create the translated version as a draft
- Assign a configured language to a post and join posts into one translation group
- Resolve the counterpart of a post or term in another language, for menus and internal links
- On Weglot sites, manage languages, URL exclusions and translated slugs instead
What it cannot do
- Translate inside WPML or Polylang. Neither module has a translate ability; the words come from your AI client
- Translate page-builder or form package strings, which stay in WPML's Translation Editor. Theme and plugin strings can be written in WPML String Translation or Polylang, but not rolled back from the ledger
- Add a language that is not configured in the multilingual plugin
- Vouch for accuracy. Legal, medical and safety text needs a fluent human reviewer
The prompt
The prompt to paste into Claude Code
Built for Claude Code, which is good at long, ordered lists. Ask it to keep a table and exclude pages with an existing target-language translation. Review proposed IDs and full translation groups; the instruction does not enforce model compliance.
- Tone rules such as formal Sie belong in the prompt, or in GoBuildWP's site instructions if they apply to every session.
- Leaving existing translations alone lowers the risk of splitting a translation group someone set up by hand; check the group afterwards anyway.
- The table is your review list: open each draft beside its original before publishing.
Translate my site's missing German pages. WPML is active.
1. Run wpml-check-setup and confirm German is configured and pages are translatable.
2. List English pages that have no German translation. Read and record every member of each existing translation group before proposing a change.
3. For each one, read the English content and write a German translation. Keep headings, links and shortcodes intact. Use formal "Sie".
4. Create each translation as a draft page. Before language/link writes, show the full existing and proposed group, preserving every unrelated language member, and wait for approval. Re-read the complete group and draft after applying; report partial results and failures.
5. Do not publish, and do not touch pages that already have a German version.
6. Give me a table: English ID, German draft ID, title, word count, anything you were unsure about.Under the prompt
The abilities Claude Code will call
Registered GoBuildWP abilities, each with its own schema and permission check. The live ability list on your site is the final word; the tool map lists every group.
wpml-check-setupLanguages, default language, translatable types, String Translation and WooCommerce Multilingual status
wpml-list-contentContent with its language, translation group and the languages it is missing
get-contentReads the source page or post
create-postCreates the translated page or post as a draft
wpml-set-content-languageAssigns a configured language to one post
wpml-link-content-translationsJoins posts into one translation group so the switcher finds them
wpml-get-translationA post's or term's counterpart in another language, for links and menus
polylang-list-languagesPolylang's configured languages, locales and RTL state
polylang-link-content-translationsThe Polylang equivalent, for content of the same post type
Safety and recovery
Language writes are confirmed, one by one
- Safety profile
- Production Safe. Assigning a language and linking translations are destructive abilities, so each call needs a confirmation flag, because either can split an existing translation group. The client sets that flag itself unless "A person approves" or the Pro approval queue is on.
- Change ledger
- The draft, the language assignment and the link are three separate ledger entries, each naming the post IDs involved.
- Rollback
- The draft itself can be rolled back. The WPML language assignment and translation link live in WPML's own table and are recorded as irreversible, so a wrong group has to be repaired in WPML by hand. Reading the whole group before writing, as the prompt asks, lowers the risk of a split but does not rule it out; compare the group before and after each write.
- #655Create draft "Über uns" (978)Rollback available
- #656Language DE on post 978Confirmed first, irreversible
- #657Link 211 (EN) and 978 (DE)Confirmed first, irreversible
Where multilingual work needs you
- Page-builder layouts live in the builder's own data. Translating an Elementor or Bricks page means writing a builder document, which is a bigger job than post content.
- Menus, widgets and theme strings are separate from page content and are outside this workflow.
- Each page's text is sent to your AI provider. Check its data terms before translating confidential pages.
- Slugs follow the translated title unless you set them. Decide on translated slugs before publishing.
How profiles, confirmations and rollback fit together: safety profiles and the change ledger.
Setup
Connect Claude Code
One terminal command adds the server; the sign-in happens in your browser.
Free can read pages and create drafts, but has no WPML or Polylang abilities, so a translation made in Free is an unlinked page.
Pro adds the WPML, Polylang and Weglot modules: language lists, missing-translation reports, language assignment and translation links.
Install Free and Pro with WPML or Polylang
Pro loads the matching module only when the plugin is active. In WPML, pages must be switched on under Post Types Translation.
Add the server
Run claude mcp add --transport http with the server name from GoBuildWP's Connect screen and your site's OAuth endpoint, which ends in /wp-json/mcp/wppilot-oauth. The /wp-json/mcp/wppilot endpoint is for Application Password or access-token connections instead.
Run /mcp to sign in
Claude Code opens WordPress's approval screen. Approve it as an administrator-level user (manage_options, or a super admin on multisite); GoBuildWP refuses lower roles.
Translate one short page
Check it with the language switcher on the front end before running the rest of the list.
Let it work through the list
Claude Code keeps the table as it goes, so a long run is easy to pick up and review.
Quality, strings and search
Approve one translated page before expanding to the whole site
Choose a representative page with body text, a call to action and an internal link. Record its source ID, target language and existing translated counterpart before drafting. Ask for an update to that counterpart when appropriate, so another run does not quietly create a second competing translation.
Give a fluent reviewer the original and translated preview together. Check amounts, units, product names, promises, button destinations and untranslated fragments. Review the target-language title and description alongside the body. Keep the page in draft while any factual or language question is unresolved; the client returning translated text is not editorial approval.
Set a glossary before you translate a WordPress site with AI
AI translations can contain factual errors, awkward language and inconsistent terminology. Your product name gets translated on one page and kept on the next, a button says one verb in the header and another in the footer, and a legal term drifts between three renderings. Before the first page, give the client a short glossary: terms that never translate (brand, product and plan names), terms with one fixed translation, and the register you want, such as formal Sie or informal du in German, vous or tu in French.
Keep the glossary in the prompt for a one-off job, or in GoBuildWP's site instructions if every session should follow it. Then ask for the table at the end to flag any sentence where the client departed from it. That column is often the most useful thing for a fluent reviewer to start with.
Theme and plugin strings, in bulk and with care
Page content is only part of a multilingual site. Buttons, footer text and widget titles live in WPML String Translation. wpml-list-strings can filter to what is untranslated or needs updating in one language, so the client can work through the gaps. wpml-bulk-set-string-translations then writes up to a hundred at a time, with a dry run that shows each current value, the new one and whether it is a create, update or no-op.
Read the limit before running it for real: string translations are recorded as irreversible in the change ledger, and so are WPML language assignments and translation links. Each result carries the previous value, so keep the dry run output as your undo record. Strings that belong to a page-builder or form package are not handled here and stay in WPML's Translation Editor. Polylang sites have polylang-bulk-set-string-translations for the same job.
Translated pages need their own SEO fields
A translated draft carries the title and body in the new language, but the SEO title and meta description are separate fields. Ask the client to write them in the target language and set them per post with yoast-edit-post-seo, or the Rank Math, AIOSEO and SEOPress equivalents; those per-post editors are in the free edition. Decide on translated slugs at the same time, before publishing, because changing a slug later means redirects.
On Elementor pages, the text lives in the builder document rather than in post content. elementor-get-content reads the source structure, and the translated text has to be written into the counterpart's own document, which is a larger job than a block-editor page. Try one builder page end to end before planning the rest.
How long a site translation takes
Drafting is fast; review sets the pace. A fluent reviewer reading each draft beside its original, checking links point to the right language and that nothing was dropped, is the step that decides your timeline. Plan by the reviewer's capacity, translate in batches that fit it, and publish each batch only after the language switcher and hreflang links have been checked on the front end.
FAQ
Questions about how to translate a WordPress site with AI
Does GoBuildWP translate content itself?
No. GoBuildWP does not include a model. Your AI client writes the translation; GoBuildWP stores it as a draft and records its language and translation group in WPML or Polylang.
WPML or Polylang: which is better covered?
Both modules list languages and content, assign a language, link translations and write theme and plugin string translations. WPML also resolves a post's or term's counterpart in another language, registers strings it has not picked up, and reports whether String Translation and WooCommerce Multilingual are active.
Can it translate WooCommerce products?
Products are posts, so the same create, assign and link steps apply when the product type is translatable in WPML. Prices and stock across languages are WooCommerce Multilingual's job; check its settings.
What about Weglot?
Weglot translates on its own service rather than as WordPress posts, so the Weglot module manages languages, exclusions, translated URLs and the switcher instead of creating drafts.
Try it on staging first.
Install the free plugin, connect Claude Code, and run the read-only half of this prompt before anything on the site changes.