WPML 2.7 greatly focuses on performance and robustness of existing features. After upgrading our own site, we see a very significant improvement in CPU load and site speed.

Speed Improvements

In this release, we’ve set our focus on making WPML run faster. For this, we gathered a number of large databases, profiled WPML’s code and found bottlenecks. Then, we cleared them 🙂

The biggest performance hog was in the String Translation. Turns out that some internal caching for function output managed to remove up to 80% of the calls to CPU-intensive functions. If your site includes a large number of strings, like our does, you should feel an immediate improvement after you upgrade.

We also found that some DB queries are running without an index. It’s not too bad if you have a small database, but for large databases (again, like our), the performance boost is very noticeable. This index also makes your DB more responsive and use the disk less.

Updated Menu Sync

WPML’s Menu Sync functionality got a big push in this release. It can now cope with most anything you do in the menu system. Previous versions of WPML could not synchronize menus when their order had changed. This version handles all menu operations and manages to keep the menus in different languages in sync.

Multilingual SEO

We’ve added a new column to WPML’s language table, which holds the language name for href tags. You can view it when you go to WPML->Languages->Edit Languages. In the language editing page, you will see a new column called “Language tag“. That’s the language name that WPML uses when it links to translations.

Having a separate entry lets you specify the exact language code that Google wants to see. We’ve already populated that column with correct defaults, according to Google’s language naming convention. If you need, you can always edit it for your own site.

Bug Fixes

And, we managed to clean a number of bugs. Here are the highlights:

  • _ex() not showing the translation on the front end
  • Custom post type translated slugs didn’t work on archive pages in WPML’s language switcher
  • Several PHP notices and warnings
  • Fixed the layout of the translation dashboard for RTL languages
  • Fixed the alignment of the language navigation bar in RTL
  • Types custom fields were missing in Custom Fields Translation section
  • Tags error instead of 404 on secondary language domain
  • WPML Media Featured image duplication error

Updating WPML

As always, the recommended way to install and update WPML is by using our Installer plugin. Installer will let you get WPML updates directly to your WordPress admin.

You can always download WPML manually from your account.

Update: A few bugs slipped through our QA and made it into WPML 2.7. We have updated to 2.7.1, solving the issues with String Translation and PHP warnings on the Translation Management. Please update to these versions to get your site running smoothly again.

45 Responses to “WPML 2.7 – Stability and Performance Update”

  1. This is great! I immediately noticed the speed improvement within my backend after updating. Kudos guys.

    What I’d really, really LOVE to see for the next updates is more focus on the UI. Currently, it is usable, but could do with a LOT more improvements. (e.g. more clean, flat icons (especially the “help” one, that’s one ugly icon!), organizing plugin’s options in a more intuitive way than just slapping a bunch of meta boxes all over the page, better padding/spacing between some elements and buttons, currently some areas fell seriously stuffed, no enough white space for content and UI elements). Just my thoughts.

    Hoping to see WPML improve more and more.

  2. It sounds great however after updating wpml strings some translation were missing. I had to revert to previous version 1.5.3 and they are back. I’m looking forward for new version, thanks for your work.

    • This is not supposed to happen and it’s not happening in our testing. I’ve asked Mihai, WPML’s lead developer, to contact you and get more information, so that we can check what’s happening.

    • I’m also have the same problems on my test server. Several of the custom string translations of mine have been reverted back into English from Chinese. In particular my translations of the WordPress toolbar and my custom translatable version of the Slick Contact Form.

      • Joshua, you are right. This bug should not have slipped through. We’ll have it fixed today.

        • Great, look forward to the updated update. Would it be possible to send a an e-mail or at least e-mail to people on this forum when it goes out?

          • That’s a fair request. I’ll update on our site, confirm that everything is working, update the downloads and write here. Then, we’ll send emails to everyone who left a comment here, or submitted a report on the forum. I really appreciate your patience with us. Thanks.

          • Fixed now. The update is in WPML 2.7.1 and String Translation 1.6.1. Thanks again for your patience. Please let us know if you need any help.

    • Hey, you’re right. I’m seeing some strings that don’t show translations in our site now too. We’ll handle it and have an update today. Sorry for this mess. It somehow escaped through our testing.

  3. I’ve also had problems with strings getting ‘lost’ in translation. Suddenly they weren’t translated from English to my other 2 languages. I didn’t want to take a chance and restored my site from a Backupbuddy backup. And now it works again 🙂

    • You’re right. I’m seeing this too now in a few places. We’ll have it fixed today and issue an update. This is pretty embarrassing, considering how much time was spent here on testing.

  4. After updating these are warnings in every page and the whole site down:

    Warning: array_unique() [function.array-unique]: The argument should be an array in /usr/local/psa/home/vhosts/digitpro.it/httpdocs/cofornisito/wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php on line 3173

    I immediately reverted back to 2.6, but I renewed the license to update to 2.7 because of the speed improvement claims, as 2.6 was too slow. I’ll look for some better alternatives on the web.

    • This sort of bug shouldn’t happen to us, but we’re not going to leave it like this for long. We’re going to have a bugfix update for this and 2 other issues today (and have a quick chat with our QA folks).

        • You can find previous versions on the download page. Click on the plugin name and then ‘changelog’.

          The problem you’re describing is happening on our site as well. We’ll have a fix ready in a few hours.

  5. Replace
    $_icl_admin_option_names[$type][$atid][$k] = array_unique($v);

    $_icl_admin_option_names[$type][$atid][$k] = array_unique((array)$v);
    in translation.management.class.php on line 3173

  6. I’m really waiting for the full stable release to speed up the front and backend. Hope, that we will have a final one today.

    • We’re really sorry for the mess we caused. We’ve updated WPML and WPML String Translation plugins. All issues are fixed now. You should have string translation working again and the reported PHP warnings resolved. It’s working on our sites now too and looking good. To get this update, log in to your WPML account and go to Downloads. Please let me know if there’s still anything wrong for your site(s).

  7. This is a bad solution if you want to use it in conjunction o to woocommerce.
    Product variation does not work!

    • There are a few issues with WooCommerce, which we are working on. We’re planning to have a new WooCommerce Multilingual release by the end of next week. Variations are included.

      • I have flagged this problem since 1 month ago. On the support forum my post is still waiting, just with a promise that it will be …

  8. Is WPML compatible with Slidedeck 2 and translating posts from a specific category yet? I don’t see it in the listings. This is an issue that I have been working to get addressed by both WPML and Digital Telepathy for nearly a year with zero effort from either side, based on the responses I have received in support.

  9. Hi,

    I still see a problem with one language. I am trying to to build a page in Slovak language but in WPML there is no such language. There is just “Slavic” but such language does not exist! Would it be possible to add the Slovak language and flag?

    • That’s an oversight. I realize that there’s no such ‘Slavic’ language, but a family of languages. You can add it yourself via WPML->Languages->Edit languages. There, you can add and enter translations for languages.

  10. Somes Requests in the futur :

    – Easy reorder language for dropdown switcher
    – Better support migration between 2 domains name when you use domain name for language
    – add same duplicate function on term and category as posts

  11. Hi all,

    Since upgrading to 2.7 I have noticed a significant speed increase on my website, which is translated into seven languages, with two more coming soon, Chinese and Portuguese.
    I like using WPML and congratulate the WPML team on their latest improvements.
    Keep up the good work!

    • Thanks Todd for letting us know! I’m very glad to hear that you’re feeling a significant improvement.

  12. Hi all,

    as you suggested I used your installer to upgrade some modules, but I get the message that the installation folder exists – I normally get this message when I try to install an existing module.

    What can I do to upgrade modules without losing my configuration?

    Best regards!

    • You can delete the plugin manually and then add it again with Installer. This will not change any of your configuration. It’s normal practice to upgrade plugins by disabling them, removing, installing the new version and enabling again.

  13. Hi,

    I have purchased your product and am testing it out, but it seems like the automatic browser language detection does not happen? Can you point me to the resource that explains in details the process of browser language detection. I believe the Javascript navigator object is not reliable to detect browser language setting, so I suggest you guys add a detection on the PHP end: the browser will send the HTTP_ACCEPT_LANGUAGE header. I don’t think I saw it in your source code.

    Thank you and please let me know about this,

    • The automatic language detection works only once (intentionally). WPML creates a cookie and checks if this is the first time you’re visiting the site. If so, it does the language redirect. The reason is, to allow your visitors to still select their own language manually. You should be able to simulate this by using ‘incognito’ mode in Chrome and opening a new window for each experiment.

      This entire operation runs in Javascript. The purpose is to allow it to work if you are using page cache.

      Does this make sense?

    • Amir,

      Thanks for timely reply. I updated your files “browser-detection.*” to include the HTTP header sent from the client browser to PHP, since it is much more reliable than the JS navigator language properties. It works pretty well now.

      The issue was that in Chrome, even when I have my browser language preferences set to ES, EN (in that order), the redirect was not happening.

      Thank you for your help,

  14. Great news, but why i do not see update notification under installed plugins? should i just download new version and override? Kinda strange

    • If you were using our Installer plugin, you should have gotten that update notification in your WordPress admin. Is this missing?

  15. Hi – after the update to 2.7.1, our site is suddenly getting a 508 Resource Limit Reached message whenever you go to it. Before updating from 2.6 to this version, I also installed your Installer plugin. Has this been reported before, or do you have any ideas?

  16. I run http://www.iautism.info, a website with some very large posts that include extensive tables and many plugins. Typical load time for simple pages has dropped from 6-7 to 1 second. Larger posts has dropped from 30 to less than 10. An RAM consumption has been reduced by 20 MB.

  17. hi, cant really find info about upgrading WPML 2.01 to latest version.

    do i just overwrite plugin files? of course wordpress admin plugins section cant let me update it there, because it went commercial. its a very old site.

    • Yes. The correct sequence is:
      0) Backup your database. You should do this before any upgrade of anything.
      1) Deactivate the plugin (this makes sure that the PHP files are not in use)
      2) Delete the old WPML folder
      3) Install the new WPML folder
      4) Activate

      Your data should not change during this process. Deactivating and activating the plugin doesn’t change anything for your language setup.