Skip Navigation

Released on:

WPML 3.3 makes it easy to create multilingual WordPress sites that don’t have English as their ‘original language’, or don’t even have English at all.

As of WPML 3.3, each string has its own source language and you can easily set the language of individual strings, or entire contexts.

Let’s look at a practical example. Supposing that your site runs in Spanish (default), Catalan and French. No English. Your theme and plugins are coded with English, as their original language.

In this example, you will want to translate the texts in the theme from English to Spanish, Catalan and French. You will want to enter the site’s tagline and widgets in Spanish and translate them to Catalan and French. You certainly don’t want to go through English.

Enter texts in your normal language Translate to the site’s other languages in String Translation
Site name and tagline in Spanish, in the WordPress Settings admin screen
We can translate the tagline from Spanish to the other languages in the site
The Spanish homepage (original language) The French homepage (translation)
‘Original’ Spanish on the homepage
French translation on the French homepage

With this update to WPML, you can do just this. WPML assumes that any texts coming from WordPress, the theme or plugins is in English. Even if your site doesn’t have English, you will still see English as the source language of these strings and you can translate to all of your site’s languages.

WPML will also assume that any texts that you enter in the WordPress admin will be in the site’s default language. You will be able to translate these texts to the other languages in the site, without going through English.

How to set the source languages of strings

You can change the languages of specific strings or all strings that belong to a domain.

To change the language of specific strings, select them and click on the new Change language of selected strings button. Then, select the new language.

Change the language of selected strings

You can also change the language of entire contexts. This is useful when you get a theme or a plugin, that’s coded in a language other than English. Click on the new link, at the top of the String Translation page, Language of domains.

Click on the link to ‘Languages of domains’

Then, choose the new language.

Dialog for setting the language of entire domains

The dialog will show you a table of the strings in that domain. You can choose the new language and also make it the default language for new strings that will be added to that domain.

Existing sites remain unchanged (unless you want to change strings)

Existing sites are not affected by this change. Since you HAD to write texts in English before in the WordPress admin, when you update to the new version of WPML, WPML will know that existing admin strings are in English. If you want, you can now change their language and enter them again in your site’s default language. However, this change is entirely up to you. If you don’t want to go through the hassle, you don’t have to.

To update the string languages of existing sites, follow the same as shown before. You can update individual strings or entire contexts.

Major improvements to professional translation interface

WPML 3.3 greatly improves the way we work with translation services. Thanks to the accumulated experience of working with production sites with the new translation interface, we have noticed a number of issues and handled them. There were corner cases related to deleting content in WordPress, cancelling jobs on the translation service and all sorts of scenarios that happen, but were not handled.

We’ve also changed the translation pickup for sites that receive translations manually. The UI looks the same, but the actual translation pickup runs in small batches. This means that no matter how many translations you collect, the server and browser should not time out.

Fixes and improvements in WPML 3.3

We are finally reaching good unit and integration test coverage for WPML. These tests have helped reveal a number of glitches, that we are very happy to resolve:

  • Resolved dependency on of trid on browser referrer
  • Fixed issue with duplicated posts reverting to scheduled state with missed schedule status
  • Removed obsolete setting “Add links to the original content with rel=”canonical” attributes.”
  • Resolved PHP Notice: bbp_setup_current_user was called incorrectly.
  • Incorrect .htaccess when using a directory for the default language
  • Categories to navigation menu can be now added when WPML is active
  • Fixed incosisten behavior with hierarchical post types using the same slug
  • Setting a menu language switcher as “horizontal” now allows to set it back to “dropdown”
  • Fixes compatibility issues with languages switcher and 2015 theme
  • Removed asynchronous AJAX requests
  • Terms count are properly updated when setting a post a private
  • Fixed compatibility issues with Views
  • Removed dependency of ST with TM, causing a Call to undefined function object_to_array() fatal error
  • Fixed database errors when showing pages list and there are no taxonomies associated with the pages post type
  • The WPML language selector properly shows language names in the right language
  • Fixed random DB Errors & maximum execution time errors when upgrading to WPML 3.3
  • SitePress::pre_option_page properly caches data
  • Password-protected posts and private status are properly copied to translations, when this setting is enabled
  • Fixed the “Display hidden languages” options for users
  • Fixed redirection for child pages
  • Fixed issue with menu theme location being lost after updating another menu item
  • Administrator language switcher will be only added after installation is completed
  • Fixes the issue of WPML_Root_Page class not being included in some cases
  • Fixes the issue of errors in the communication with ICL leading to a white-screen
  • get_term_children results will be consistent when there is an element with the same id in icl_translations
  • The “Translate Independently” button now work when autosave is off
  • Resolved conflict with Avada theme and root page
  • Fix so that taxonomies can have a custom language template for the default language
  • Filter url for scripts and styles when language is per domain
  • Fixed an issue causing a notice and incorrect results for certain taxonomy queries that involved custom post types
  • Resolved notice “Undefined index: strings_language” after WPML activation and configuration
  • Fixes issue with password-protected posts in different domains per language configurations
  • Resolved notice “Undefined index: strings_language” after WPML activation
  • Resolved http(s) protocol and different domains per language issues
  • Resolved broken settings issue with WooCommerce during WPML activation
  • Resolved notices when selecting “All languages” in admin
  • Removed Translation Management dependency when duplicated posts are updated
  • Resolved issues when deleting a Layout which has no cells (hence no package)
  • Fix synchronizing post private state
  • Fix so that Gravity Forms with a large amount of fields can be send to translation
  • Fix translation of taxonomy labels when original is not in English
  • Adjust the current language if it’s different from the language of the menu in the get param
  • Fixed issue with comments not being shown on back-end in multisites using WooCommerce
  • Fixed issue with javascript browser redirection happening even in default language
  • Don’t show the taxonomy language switcher on the taxonomy edit page
  • Resolves database error when adding new sites in network installations
  • Fixed issue with bbPress and WPML configuration in network installations
  • Other minor bug fixes

Other improvements

  • Introduced internationalisation API for wp_mail() – needed to complete multilingual support for the WooCommerce Sensei extension
  • Data transfer between domains (when using languages in domains): needed with WooCommerce, and in preparation for other upcoming features
  • Added button to to clear all WPML caches
  • WPML now allows to load a taxonomy template by language, also for the default language
  • Added ‘blog_translators’ filter to programmatically change the list of translators
  • Improved browser redirect performances
  • Fixed performance issues when lists posts (in particular, but not only, WooCommerce products)

Download and Update

You can get this release directly to the WordPress admin or download and install manually. To receive automatic updates, you need to register WPML on your site. Then, visit the Plugins or Updates admin pages. To download manually, visit your wpml.org account and go to Downloads. Follow the installation and upgrade instructions for complete details.

When you update WPML, be sure to update together all the components that you are using. Don’t use a mixture of new and older versions.

Feedback? Need Help?

We love feedback. To make a suggestion, ask a question or give an idea, leave your comment here. If you need technical support and help troubleshooting problems, please use our technical support forum.

17 Responses to “3.3”

  1. Hello, great new features!! But one bug still remains:

    “AJAX results update” of VIEWS is still not possible with “domain per language” setup in WPML. I had a topic open in Toolset forum 2 month ago and it was said the update would fix it but I just found out that it did not 🙁

    I think is it has todo with ajax include and cross-domain linking (different domains per language but the ajax include is always from the main domain).

    As far as I know, AJAX Requests are only possible if port, protocol and domain of sender and receiver are the same. So for me this is a problem between Toolsets Views FILTER and WPML cross-domain setup for languages.

    Please fix!

  2. Awesome! I use GravityForms in my site which primary language is Lithuanian. Now I can set default specific form strings domain language to Lithuanian and have no problems if I don’t need that form in English or translate without confusions. Thanks! 🙂

  3. Thank you for listening to our concerns and giving us the ability to use non-english context strings. It’s really appreciated.

  4. I’m having a

    “Plugin could not be activated because it triggered a fatal error”:

    Fatal error: Class ‘WPML_Helper’ not found in /home/chiconiedzielski.com/public/wp-content/plugins/sitepress-multilingual-cms/sitepress.class.php on line 62

    WPML is currently the only plugin in the website.

  5. Hi, i have a problem. In my website i use plugin for makeing payments and changing curency. After wpml update in english i can change curency and make payment but in other langs there is error – something wrong please try again .

    • Hi Boris,

      Please report the issue in our support forum, where we can ask you some more details we can’t ask here.

      You may also want to give our beta a try, as long as you can do that in a non production server.

  6. El plugin no se activa y da error fatal:Warning: require_once(/var/www/vhosts/catjal.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/embedded/composer/autoload_real.php): failed to open stream: No such file or directory in /var/www/vhosts/catjal.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/embedded/autoload.php on line 5

    Fatal error: require_once(): Failed opening required ‘/var/www/vhosts/catjal.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/embedded/composer/autoload_real.php’ (include_path=’.:’) in /var/www/vhosts/catjal.com/httpdocs/wp-content/plugins/sitepress-multilingual-cms/embedded/autoload.php on line 5

  7. Estou tendo problemas com o “WPML Multilingual CMS”
    Toda vez que eu ativo este plugin, minha página e propriedades somem. Ainda consta quantas página e propriedades existem, mas elas não aparecem.
    Desativei e ativei vários plugins para descobrir qual era. Tenho todos os plugins necessários.

    Comprei o WPML há mais de um mês, e não consigo descobrir o problema. O suporte que me dão por e-mail é muito ruim, e vêm com respostas diferentes do que eu perguntei, falam para eu instalar um outro plugin (que eu já tenho), e tenho que esperar mais diaaaas para ter outra resposta.