Skip Navigation

We’re ready with another, final, beta for WPML 3.8. Like you probably know, in this release we are focused on performance. Since the previous beta we found additional room for improvement and it’s ready for your testing now.

The new defaults for speed and ease-of-use

Until now, when you activated WPML’s String Translation, you had to configure it. This meant two things:

  • Without configuration, translations are not showing.
  • You could pick the “right” configuration or the “wrong” configuration, leading to low performance and harder use.

Now, when you activate String Translation, WPML automatically sets the best mode for your site. What’s the best mode? This depends on the actual strings found in your site. If you only have strings that come from English texts, WPML sets it as the site’s default. WPML will only run String Translation in other languages, so that it doesn’t slow your site for the default language.

Bottom line, there’s less configuration and better performance.

When you upgrade to WPML 3.8, it will check if your configuration has room for improvement and would suggest to you to automatically make changes when needed.

Run String Translation only when it’s absolutely needed

String Translation allows you to translate texts (strings) from one language to others. In WPML 3.8, we’ve applied several important speed optimizations to this:

  • WPML doesn’t look for translations to the original language.
  • WPML doesn’t check the original language of each string separately.
  • WPML only loads the right strings needed for each page.

Together, this means much faster operation.

String Translation instead of .mo files

The major new feature in WPML 3.8 is the ability to replace .mo files with String Translation. You probably know that WordPress uses .mo files and that .mo files are relatively efficient (because they’re running below PHP).

However, this holds true only for small .mo files. Some plugins (and even WordPress core) have HUGE .mo files. WPML has huge .mo files. WooCommerce has huge .mo files and other plugins and themes also.

If it takes WPML longer to load the translation of “a string”, but it loads a tiny fraction of the strings found in the .mo files, WPML can do the job a lot faster. For example, when you’re looking at a blog post on the front-end, you need maybe 15 strings from WordPress core (“leave a reply”, “reply”, etc.). To get these few strings, WordPress loads a HUGE .mo file.

Now, WPML will block loading this .mo file and, instead, supply the translations for these specific strings. The performance gain is very significant.

For this little magic to happen, WPML needs a short training period. As soon as you activate the option to “not load .mo files”, WPML hooks to the .mo file loading and reads the strings that they contain. We do this in small batches, so as not to load your site too much. When this training is over (typically, after several loads of the site), WPML switches mode, blocks the scanned .mo files and supplies the necessary translations.

Give it a try!

WPML development team spent months on this version and we’re eager to know your feedback. We are running full QA next week. If you can test this version on your development sites, we’ll know for sure that all the new stuff doesn’t conflict with your code and with plugins and themes that you’re using.

To test, go to your WPML account and click on Downloads. Switch the channel to Beta and download. Make sure that you’re downloading all of WPML’s components that you use (you should not mix “production” and “beta” components).

Let us know how it’s working for you?

How can we make WPML better for you?

Share your thoughts and comments about our plugin, documentation, or videos by booking a Zoom call with Agnes, our Client Advocate. Your feedback matters and helps us improve.

Book a call with Agnes

12 Responses to “Last WPML 3.8 Beta with Performance Boost”

  1. Hi.
    I am going to test the WPML 3.8 on my test site

    What do I have to do if I find errors and/or side effects?
    Do I open a ticket?


    • Thanks for your help. If you find any problem, leave another message here, explain what’s wrong, and I’ll connect you with the right developer for that feature.

  2. Did I do something wrong when installing the betas? Now my system complains about missing _icl_strings tables for all Sites in a network + multisite install during this statement:
    SELECT id FROM wp_15_icl_strings WHERE BINARY value='My Domain Name (english)' AND context='WP' AND name = 'Blog Title' LIMIT 1 von require_once('wp-admin/admin.php'), do_action('admin_init'), WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, _wp_admin_bar_init, WP_Admin_Bar->initialize, get_blogs_of_user, WP_Site->__get, WP_Site->get_details, get_option, apply_filters('option_blogname'), WP_Hook->apply_filters, call_user_func_array, wpml_st_blog_ti

  3. Hi
    I cannot install the beta version.

    WordPress says:
    Destination folder already exists. /var/www/vhosts/

    Plugin install failed.

    • Hi Miguel,

      Please proceed by:
      – Deactivating the plugins you want to update
      – Manually downloading the file and replacing them with your remote server
      – Reactivating the plugin

      It looks like there is an issue with the Installer module.

  4. I’m trying to test the beta version on my local install but I’m not getting the option to switch channels when in the Commercial plugins screen.

    • Hi William,

      Please proceed by:
      – Deactivating the plugins you want to update
      – Manually downloading the file and replacing them with your remote server
      – Reactivating the plugin

      It looks like there is an issue with Installer module.

    • William, sorry for the partially incorrect answer I gave you yesterday.

      We don’t have an issue with the Installer module. the fact is that this module will start supporting channels only after WPML 3.8.0 is officially released.

      For the time being, you must proceed with the manual update of the plugins, when you want to install a beta.

  5. Hello,
    I do have a problem with translating texts in page builders – I am using Oxygen for my page templates and Elementor for the content.
    For Oxygen templates all fields are properly scanned but if a template uses re-usable parts they are being load always as original, not translated version.
    At the same time pages (Elementor-based) content is not scanned at all. I have only a page title in a list of strings for translation.