Skip to content

AI for WordPress themes & plugins

WordPress theme translation.PO files without the breakage.

Translate WordPress .po and .pot files with AI. Human-level language quality, with 100% protection for PHP variables, HTML tags, and Gettext metadata. A new language for your plugin or theme, not a new debugging session.

  • Free trial
  • 100+ languages
  • No plugin installation
WordPress localization workflow example. A theme exports a PO file to Qopywriter.ai. AI translates the catalog while Variable Integrity remains locked at 100%. The translated PO returns to your toolchain, compiles into an MO file with Loco Translate or Poedit, and updates a WordPress dashboard showing Translation Active - 0 Errors.
Your tools. Your workflow.
WordPress Loco Translate WPML GNU Gettext
.po.pot.mo

01 / Code safety comes first

A missing %s is a production bug.

Gettext catalogs are not plain text. A generic translator that rewrites %1$s, drops %d, or strips an HTML tag changes the rules your PHP code relies on.

Malformed sprintf() formats trigger PHP 8 errors. An uncaught fatal error means the White Screen of Death; damaged HTML means a broken frontend. Either way, someone loses an afternoon tracing a translated string back to its source.

Qopywriter.ai separates language from structure. The AI translates the words. Protected tokens stay outside its reach.

100% structural protection. Guaranteed.PHP variables, HTML tags, and Gettext metadata.
Placeholder protection example 100% LOCKED
#: includes/notices.php:42
#, php-format
English / source string
msgid "Welcome back, %1$s! You have %d new messages."
Spanish / translated string
msgstr "¡Hola de nuevo, %1$s! Tienes %d mensajes nuevos."
Placeholder match2 / 2 protected
Format specifiersUnchanged
Source referencePreserved

PHP formatting, protected

Preserve token spelling, types, and argument bindings. Numbered placeholders follow the target language’s word order. Unnumbered placeholders retain their sequence.

HTML and shortcodes, respected

Protect tag names, nesting, attributes, and shortcode syntax. Translate visible copy without turning a working link, checkout button, or admin notice into broken markup.

Gettext stays Gettext

Keep msgid, msgctxt, source references, comments, and format flags. Set Language and Plural-Forms for the destination locale.

02 / The language matters, too

Reads like a human.
Behaves like valid code.

A file that compiles is only half the job. Our WordPress Gettext AI translator delivers human-level linguistic accuracy, using context, target-language plural rules, and consistent UI terminology across the whole catalog.

Context-aware translation

“Post” is not always a post.

On a button, it’s an action. In a content list, it’s a noun. Translator comments and msgctxt tell the AI which meaning belongs on screen.

Button / Spanish
msgctxt "button"
msgid "Post"
msgstr "Publicar"
Content / Spanish
msgctxt "content type"
msgid "Post"
msgstr "Entrada"
Locale-specific plural forms

One count. The right ending.

English has two Gettext plural forms. Russian has three. The AI handles msgid_plural, fills the correct msgstr[n] entries, and sets the target locale’s plural rules.

msgid "%d message"
msgid_plural "%d messages"
Try a message count, Russian example
1 сообщениеmsgstr[0] · %d protected
2 сообщенияmsgstr[1] · %d protected
5 сообщенийmsgstr[2] · %d protected
21 сообщениеmsgstr[0] · %d protected

One product. One vocabulary.

Nobody should see “Cart” translated three ways in the same plugin. Keep settings, buttons, and notices on the same vocabulary across the full catalog.

Settings
Ajustes
Cart
Carrito
Account
Cuenta

03 / Built around your release process

Your source catalog in.
A localized PO out.

A PO file translator for WordPress should fit your tools, not replace them. Translate a WordPress plugin or theme catalog in one pass, then take a standard Gettext file back to your existing workflow.

  1. 01 / INPUT

    Upload your PO or POT

    Start with an existing translation catalog or a source template from your theme or plugin. Source strings, context, and references stay linked.

    my-theme.pot
  2. 02 / TRANSLATE

    Choose the target locale

    AI translates the UI copy and applies the language’s plural rules. PHP placeholders and markup are protected before translation and checked against the source.

    en_US → es_ES
  3. 03 / SHIP

    Download, compile, deploy

    Download your localized PO. Compile it to MO in Loco Translate, Poedit, or your build process, then load the matching locale in WordPress.

    .po → .mo → WordPress

Keep Loco. Keep WPML.

Looking for a Loco Translate alternative with AI? Skip the line-by-line translation, not the editor you already know. Your output uses the standard Gettext PO format used in the WordPress localization workflow.

Loco Translate handoff

Export the catalog, translate it here, then open the returned PO in Loco. Save to compile the MO file and use Loco’s custom location to protect your translations from updates.

WPML String Translation handoff

Export a PO catalog from WPML String Translation. Import the translated PO back into the same text domain and language. WPML keeps managing your site’s content languages.

GETTEXT / LOCAL BUILD

Compile and check in your toolchain

$ msgfmt --check --check-format \
  -o my-plugin-es_ES.mo \
  my-plugin-es_ES.po

Use your actual text domain and WordPress locale in the filename. Install the compiled catalog in the matching language directory.

Plugin catalog wp-content/languages/plugins/
my-plugin-es_ES.mo
Theme catalog wp-content/languages/themes/
my-theme-es_ES.mo

04 / Plans for your release schedule

Start with a real catalog.

Test your WordPress PO files with the free trial. Every plan includes context-aware AI translation, protected PHP placeholders, and Gettext structure preservation.

Lite

$9 / month

400,000 charactersper month
  • AI translation for PO & POT
  • PHP variable & HTML protection
  • Gettext metadata preservation
  • 100+ languages
Start free trial

Starter

$19 / month

1,000,000 charactersper month
  • AI translation for PO & POT
  • PHP variable & HTML protection
  • Gettext metadata preservation
  • 100+ languages
Start free trial

Business

For teams

$49 / month

3,000,000 charactersper month
  • AI translation for PO & POT
  • PHP variable & HTML protection
  • 100+ languages
  • Unlimited team members
  • Priority support
Start free trial

Yearly

Annual billing

$169 / year

12,000,000 charactersper year
  • AI translation for PO & POT
  • PHP variable & HTML protection
  • 100+ languages
  • Unlimited team collaboration
  • Priority support
Start free trial

Developer questions

The details before you deploy.

File formats, PHP placeholders, import paths, and the checks that keep multilingual WordPress releases on track.

What is the difference between PO, POT, and MO files?

A .pot file is the source template. A .po file pairs source strings with editable translations for one locale. A .mo file is the compiled catalog WordPress reads at runtime. Upload PO or POT here, download the translated PO, then compile it to MO with your usual Gettext tools.

Can I translate a POT file online?

Yes. Upload your theme or plugin’s POT template and select the target language. Qopywriter.ai creates a localized PO catalog with translated entries and the target locale’s headers. Your source strings remain the lookup keys, so the catalog still matches the code that calls them.

How are %s, %d, and %1$s protected?

PHP format tokens are protected before translation and checked against the source during export. Token types and argument bindings stay the same. Numbered placeholders support natural word order in the target language; unnumbered placeholders retain their sequence. The same protection covers HTML tags and shortcode syntax.

Is this an AI alternative to Loco Translate?

Yes, for translating the strings. Qopywriter.ai replaces the manual translation work while Loco remains your WordPress catalog editor and compiler. Export the PO, translate it here, open the returned catalog in Loco, and save to compile the MO. Choose Loco’s custom translation location to keep your work separate from theme and plugin updates.

Does it work with WPML String Translation?

Yes. Translate PO catalogs exported from WPML String Translation, then import the resulting PO back into the same text domain and language. WPML handles your posts, pages, and content languages; Qopywriter.ai handles the theme and plugin strings stored in the Gettext catalog.

How does AI handle plural forms and context?

The translator uses msgctxt, translator comments, and related UI strings to interpret each message. For plural entries, it translates msgid_plural into the target language’s required msgstr[n] forms and sets the matching Plural-Forms header. Russian’s three forms are not squeezed into English’s two.

Where do I put the translated WordPress files?

Use your text domain and locale in the filename, such as my-plugin-es_ES.mo. Standard global locations are wp-content/languages/plugins/ for plugins and wp-content/languages/themes/ for themes. Loco also provides a custom location. Select the matching site language and check that your theme or plugin loads that text domain.

Why is my translation not showing in WordPress?

Match the active locale, filename, and text domain first. Compile the PO to MO, clear relevant caches, and confirm that the text domain is loaded. Review fuzzy entries, which Gettext excludes from compiled catalogs by default. For JavaScript strings, generate the required WordPress JSON language files separately from the reviewed catalog.

Your next language pack starts here

Ship a new language.
Not a new PHP bug.

Start with the PO or POT file you already have. Put the translated catalog back into the tools your team already knows.