AumCreate

AumLang

AI translation for WordPress. Add the languages you want, press Translate on a page, and AumLang writes a translated copy, gives it its own URL, and keeps the links between the two.

This guide is for people who already have AumLang installed. Everything below is in the WordPress admin under AumLang.

The AumLang admin is in English on every site. No translation has been published for it yet, so the labels quoted here are what you will see whatever language your WordPress is set to.

1. How AumLang works

A translation in AumLang is a real post. Translating an English page into Japanese creates a Japanese post, with its own ID, its own URL under /ja/, and its own row in the posts list. You can open it, edit it by hand, and everything you normally do to a post works on it.

That has three consequences worth knowing up front:

  • Your original is never modified. Translating is additive.
  • Edits you make to a translation survive. AumLang stores each piece of text it translated separately, so re-translating only replaces what it wrote.
  • Deleting a translation deletes a post. It goes to the trash like any other.
The posts list, with a translation sitting beside its original

AumLang does not translate the page as one block of text. It breaks the content into pieces — a paragraph, a heading, a table cell, the text inside a page builder's shortcode — translates each piece, and puts them back in place. That is why the layout survives, and it is also why the plugin has opinions about page builders (see section 9).

2. Setting up

2.1 Languages

AumLang → Languages. One row per language: a code, a locale, a display name, a URL slug, and whether it is the default.

The default language is what your existing content already is. AumLang does not touch it and does not put a prefix on its URLs unless you ask.

Every other language gets a URL prefix from its slug: /ja/, /de/, /zh-hans/.

2.2 Translation provider

AumLang → Translation provider. Pick a provider, paste an API key, choose a model. Test connection checks that the key works before you spend anything on a real page, and Test reachability of all providers tells you which providers your server can reach at all — useful when a host blocks outbound requests.

Translation costs money, charged by your provider, not by us. AumLang makes no calls on its own; every call starts with a button you press.

The settings screen: languages, provider and translatable content

2.3 Translatable content

Three lists on the settings screen:

  • Post types — which types get the Translate button.
  • Taxonomies — which taxonomies have their terms translated.
  • Custom fields — which meta keys are translated along with the content.

The custom-fields list matters for sites built with a page builder or a custom field plugin, because a lot of visible text lives in meta rather than in the post content. AumLang reads any wpml-config.xml shipped by your theme and active plugins and picks up what they declare, so for many sites this list is already correct without you touching it.

3. Translating a page

Open any post of a translatable type. The editor has an AumLang Translations box listing every non-default language with a status and a button.

BadgeMeansButton
Not translatedNever translated.Translate
MachineTranslated, not reviewed.Re-translate
ReviewedSomeone marked it reviewed.Re-translate
OutdatedYou edited the original since.Update
IncompleteTranslated, but part of the page has never been translated. The box says how many pieces.Translate the rest

Press the button and the box reports progress. Translation runs in rounds, each sized to finish well inside what your server allows, so a long page takes several rounds rather than one long request that a server would cut off.

The AumLang Translations box, showing Machine, Not translated and Incomplete side by side

3.1 Translating many posts at once

One post at a time is fine for a handful. A site with twenty pages and five languages is a hundred of these, so there is a second way.

Select the rows you want in the Posts or Pages list, open Bulk actions, and choose AumLang: translate into … for the language you want. One language per run.

Apply does not start anything. It opens a screen that says how many of those posts will actually be sent, how many already have a translation and will be left alone, and into which language. That screen has the button, because this is the step that spends money with your provider.

Posts that already have a translation are skipped, not translated again — including ones whose translation is out of date. Nothing about selecting rows says "spend again on the ones that are done", and you would find out on the invoice. To redo one, open it and use the button in the editor, which says what it will do before it does it.

The run keeps going if you close the page, and the progress screen picks it up when you come back. Stop finishes the post it is working on and then stops; everything already done stays done.

3.2 "Incomplete" — what it means

A page can read as translated and still have text in it that was never sent.

The usual cause is that AumLang became able to see more of your page than it could before — a plugin update that taught it to read a new kind of content. Updating the plugin does not re-translate anything by itself, because that would spend your credit without asking. So the page stays as it was, and Incomplete is how AumLang tells you there is something left to do, with the number of pieces.

The box states it plainly — "5 pieces of this page have never been translated." Pressing Translate the rest sends only those. Already-translated text is not sent again and not paid for again, and the notice disappears by itself once nothing is missing.

4. The language switcher

AumLang → Switcher.

  • Floating switcher — a small control fixed to a corner of the screen. Position and label style are set here.
  • Add to menu location — AumLang appends the languages to a menu you pick, optionally under a parent item you name.
  • Place it manually — the shortcode [aumlang_switcher], usable anywhere. [aumlang_language_switcher] is the same thing under a longer name.

Label style decides whether each language shows as its name, its code, or both.

The Switcher screen

5. Strings

AumLang → Strings. Page content is only part of a site. Themes and plugins also print their own text — "Read more", "Add to cart", a widget title.

AumLang collects those strings and lists them here for translation. Discovery mode controls whether it keeps watching the front end for new ones. Leave it on while you are setting the site up, then turn it off: discovery costs a little on every page view, and once the list is complete it has nothing left to find.

Some site text lives in the database rather than in code — menu labels you typed yourself, the text inside a widget, wording a theme stores in its own settings. Those never pass through the mechanism above, so AumLang collects them separately and fills them in while you translate a page. There is nothing extra to press.

Widgets are read field by field, whoever wrote them. WordPress offers plugins a standard way to have their widget titles translated, but using it is voluntary, and plenty of widgets simply print what they have stored. AumLang reads the stored fields instead, just before WordPress draws the widget, so a widget that never offered anything is still covered. Web addresses, icon names, CSS classes, email addresses and phone numbers are left alone — translating those changes the widget's wiring rather than its wording.

The Strings screen

6. Glossary

AumLang → Glossary. Terms that must always come out a particular way: product names, model numbers, the house translation of a word your industry argues about.

Each entry is a source term, a target language, the translation, and whether the match is case-sensitive. The glossary is applied to every translation in that language, so one entry fixes a word everywhere instead of page by page.

Use it for things a translator would get wrong, not for things it gets right.

The Glossary screen

7. Review

AumLang → Review. Lists machine translations that nobody has checked. Select the ones you have read and Mark selected as reviewed.

This changes nothing about the page. It is a record of what a person has looked at, so a second person knows where to start.

The Review screen

8. Diagnostics

AumLang → Diagnostics. Under Why translation fails here, Run the check measures the two things that explain nearly every failure: how long your server allows a request to run, and how long one call to your provider takes. Then it reports whether a round plus one more call still fits inside the limit.

Copy the report gives you the whole thing as text. It never includes your API key.

The Diagnostics screen

If translation fails and the report says timing is fine, send us the report — that is exactly the case where the cause is something we need to see.

9. Page builders

AumLang reads content from Gutenberg, the classic editor, and Elementor directly, plus any builder that stores its text in shortcode attributes, which covers most of the rest.

Two things it deliberately does not translate:

  • Layout markup. [row], [column], a colour value, a CSS class. Sending those to a translator would at best waste money and at worst break the page.
  • Values that are not prose. URLs, IDs, part numbers, hex colours.

The line between "layout" and "text" is drawn by shape, not by a list of builder names, so a builder we have never seen still mostly works. Builders that describe their own content in a wpml-config.xml are read exactly.

If a page comes back looking unchanged, the result message says which of these it was: the page was almost entirely builder markup and AumLang skipped it rather than mangling it, or there was nothing in it to translate.

9.1 A header or footer that is really a page

Builder-driven themes often keep the header, the footer, or a block that repeats across the site in an ordinary page, and pull it into every request. Such a page behaves like any other here: it appears in your Pages list with its own translation status, and you translate it the same way.

Translate it once and every page of the site shows the translated version — including the pages you have not translated yet, since the block is not part of their content.

If you cannot tell which page holds your footer, open the site and look for an Edit Footer control near it; themes that build the footer this way almost always put one there, and it points at the page.

10. URLs and links

Each language lives under its own prefix. The default language keeps the URLs it always had.

Inside translated content, links that point at a page on your own site are rewritten at display time to point at that page's translation, when one exists. A reader who follows a link from a Japanese page lands on another Japanese page rather than being thrown back to English. This happens on output; your stored content keeps the original links.

11. Settings reference

ScreenSettingDefault
LanguagesDefault languageYour existing content
LanguagesPrefix on the default languageOff
Translatable contentPost typesPosts and Pages
Translatable contentTaxonomiesNone
Translatable contentCustom fieldsFrom wpml-config.xml
SwitcherFloating switcherOff
SwitcherLabel styleName
StringsDiscovery modeOn
GeneralDelete data on uninstallOff

12. Troubleshooting

Translation stops partway with a server error. Your server cut the request off. Run Diagnostics (section 8) — it measures exactly this. Pressing Translate again resumes where it stopped; nothing already translated is paid for twice.

A page says it finished but looks unchanged. Either the page is mostly builder markup (section 9), or it says Incomplete and there is text left — see section 3.1.

Part of the page translated, part did not. Tables and other content stored inside a builder's shortcode attributes were not read before version 1.4.2. Update, then press Translate the rest.

The menu is only half translated. Menu labels you typed yourself were not translated before version 1.5.0. Update, then translate any page — the labels are filled in alongside it.

A link on a translated page goes back to the original language. That page has no translation yet. Links are rewritten only where a translation exists.

A product code came back translated. Add it to the Glossary (section 6) with itself as the translation.

Nothing happens when I press Translate. No provider configured, or the key is wrong. Use Test connection in section 2.2.