A month ago we announced first betas of WPML 3.4 and WooCommerce Multilingual 3.8. Today, we’re after 4 weeks of intensive testing (and a number of fixes and improvements) and we’re happy to release these as production versions.
Like we wrote in the beta announcement post, these versions of WPML and WooCommerce Multilingual focus on much improved usability and translation workflow. This update makes it easy to work with multilingual WooCommerce sites, especially when using many WooCommerce extensions. The streamlined translation interface puts the different fields that extensions add in a convenient translation editor, side-by-side.
This update of WPML is available directly in your WordPress admin. If your site is registered, you should receive the update notification in the Plugins admin screen within the next 12 hours (the time WordPress caches the status of updates). You can also download WPML manually from your account.
Coming Next (soon)
50% load reduction
In the past few weeks, we’ve also been busy analyzing the load that WPML adds, especially in the admin. We are thankful to all the clients who helped us with test sites. Most sites showed the issues that we were familiar with, but almost every site also showed us something else, that was new to us. The issues that we learned are related to content, server configuration and hosting environments.
We already found several improvements that will reduce execution time for most sites running WPML (including our). The highest impact of WPML was on listing admin screens, such as the WooCommerce Products page. There, we can reduce execution and SQL queries by about 1/2. On other admin screens, WPML’s contribution to load is a lot smaller, so the relative improvement is smaller (but it’s still significant compared to WPML’s part).
We’re going to push the performance improvements in two steps.
WPML 3.4.1 and WooCommerce Multilingual 3.8.1 (in about 2-3 weeks) will include a reduction of around 25% in execution time and 50% in queries to these listing pages.
WPML 3.5 will come with a completely new way we load strings to memory. Preliminary tests show that this new algorithm is very promising. It can make sites with WPML load even faster than sites that use compiled .mo files. The idea is to selectively pre-load only the strings needed for each page (front-end and admin). This way, we avoid both huge queries (to load all) and many tiny queries (to load many individual strings). Our tests show that this works even faster than the built-in 「load_theme_textdomain()」 and 「load_plugin_textdomain()」 calls. We’re aiming for a very significant improvement in CPU time, number of queries and memory.
Schedule for WPML 3.5 is still flexible. We’ll see how fast we can get a first beta and announce it.
Revamped language switcher
The language switcher in WPML 3.5 is a complete redesign. It’s 100% backward compatible, so all existing sites with work unchanged. However, it will offer new possibilities for language switchers, which we hope will make your work easier.
To name a few:
- Ability to display different language switchers in different menus and widgets without limiting to one
- Compatibility modes with different CSS frameworks, including Bootstrap and current WordPress default themes
- Customization for colors and design per language switcher
I’ll write about it and include in a beta as soon as it’s available.
Translation for links in strings
We use strings for many different purposes. Many themes include complex texts in translatable stings and often also links. In WPML 3.5, all links in strings will automatically adjust to URLs in the right language. When you’re sending strings to translation, if these strings contain URLs, WPML will adjust the URLs in the translated strings.
For example, let’s suppose you’re using Gravity Forms and have a comment linking to a page (pretty common situation). You want to translate this comment and you’d want the comment to link to the correct page in the translated language.
When you translate the GF form, WPML converts the texts to strings and sends them to translate as a 『Package』. The translator will need to translate just the texts. When translation is complete, WPML will scan all completed strings and check if they have links. If there’s a link, WPML will check if it goes to a page that’s been translated to the same language. If so, it will update the link to point to the translation.
This sounds easy, but is a pretty involved process. We need to handle translation in any order (no matter if you’ve translated strings before or after pages) and to keep accurate book-keeping.
Please let us know how you’re doing with WPML 3.4 and WooCommerce Multilingual 3.8. We’d love to get your feedback about the changes in this release, as well as the plans for the next rounds.