Translate ajax strings in WordPress

Loading content with AJAX is used by a lot of WordPress themes and plugins (like WooCommerce) to show content and extend functionality without reloading the page. For a fully multilingual website, we need to translate AJAX strings in WordPress, as well as standard strings from your posts and pages.

In WordPress, you can see ajax strings in:

  • checkout pages
  • multi-step forms
  • widgets
  • infinite scrolls
  • booking forms

In TranslatePress, we’re detecting AJAX strings and you can translate them just like a normal string. But that’s not where the magic happens. So let’s get a closer look at how we have actually implemented this.

Translate AJAX Strings in WordPress

The trick to translate AJAX strings in WordPress is using the same functionality for AJAX loaded content as for a normal page load.

This means we’re not making any assumptions as to what the frontend JavaScript is using to output or what it’s doing with the AJAX response.

We’re just translating the content as long as it is HTML.

Gettext fields in AJAX request

Gettext fields already come wrapped in translation tags from the gettext filter. As long as the locale is setup correctly in WordPress, we’re detecting all the strings loaded in that ajax request.

So there’s a good chance that all those strings will appear already translated from .po files for a lot of plugins.


By translating AJAX requests on the PHP side of things, we didn’t have to have two parsers (both PHP and JS). So more code reuse, less complexity and hopefully less bugs.

We still have a JS DOM change listener that tracks down text changes that are not AJAX requests, but that’s a discussion for another time. It’s doing things a bit differently compared to the PHP parser so while we do have to manage extra code that conceptually does the same thing, it has a lot less impact on the entire experience as a whole.

This pretty much sums it up. TranslatePress was designed from the get go to allow you to translate everything from the same simple interface. AJAX translation was a big item on our todo list and we’re really happy how it turned out. So start translating those AJAX driven interfaces today.

4 thoughts on “Translate ajax strings in WordPress

  1. I have issues with your plugin… when I translate my checkout fields I get an internal server error when submitting the order in all languages. Can you help me fix this?

  2. Thanks for your reply. I can only submit a ticket with a license… I currently run your free plugin so i don’t have a serial number to enter in that form.

Leave a Reply

Your email address will not be published. Required fields are marked *