The compatibility of the WPBakery Page Builder with WPML is assured through the language configuration file. Learn how to use this file to maintain compatibility.
This page is intended for the WPBakery development team, developers who offer a customized version of the page builder, authors who develop WPBakery addons, and web developers using WPBakery Page builder.
- How the Integration of the WPBakery Page Builder Works With WPML
- Updating the Language Configuration File
- Page Builder Shortcode Structure in the Language Configuration File
- Testing the Language Configuration File
- Known Issues
To understand how the WPBakery Page Builder works with WPML, let us start by creating a simple page using the WPBakery Page Builder. We will include a few modules, such as a Text Block, a Message Box, and a Hover Box.
As you already know, these modules generate shortcodes, which wrap the content. You can see an example of this in the following screenshot:
To translate the page we created, click on the plus icon found in the language meta-box on the top right.
This will take you to the Translation Editor screen, where you can translate your page. Fill in your translated text, and choose Translation is complete for each field, then click on the Save & Close button.
When we view the translated page in the Text editing mode, we can now see the translated strings wrapped with the page builder shortcodes.
You might need to update the page builder shortcodes in the language configuration file for different reasons:
- Adding a new shortcode to the page builder
- Adding a new attribute to an existing shortcode
- Removing an obsolete shortcode
You can download the language configuration file from our repository. Add the shortcodes or attributes to the existing shortcodes within the language configuration file.
For authors who are bundling a customized version of WPBakery Page Builder in their theme, please take into consideration that you will need to update the language configuration file of the customized version of the plugin.
To extract strings from pages built using the WPBakery Page Builder and load them on the Translation Editor screen, we need to configure WPML to identify the shortcodes and attributes containing the strings that require translation. This is done by adding a file, called wpml-config.xml, which is typically placed in the root folder of your theme. For WPBakery Page Builder, we are hosting the language configuration file on our servers. It is set to override the local configuration file placed in WPBakery’s Page Builder root folder, ensuring that the configuration file is always up to date.
The wpml-config.xml file is also used to configure the following elements:
- Custom fields
- Custom taxonomies
- Admin texts / wp_options
- Language switcher configuration
- Page builder shortcodes
See our detailed documentation to learn more about the language configuration file structure and syntax.
As an example, let us see how we added the Tabs shortcode to the wpml-config.xml file.
<shortcode> <tag>vc_tta_tabs</tag> <attributes> <attribute encoding="allow_html_tags">title</attribute> </attributes> </shortcode>
The structure of the above example can be broken down as follows:
- All the shortcodes are wrapped with the main shortcodes (plural) tag.
- The shortcode tag wraps all the tags belonging to one, single shortcode.
- The tag tag defines the name of the shortcode, which in this case, is the vc_tta_tabs.
- Shortcodes can have one or more attributes; hence, we wrap them in the attributes (plural) tag and use the attribute (singular) tag to define the title of each attribute. In this case, we have the title attribute.
For shortcodes that include link attributes, you can make internal links automatically point to the translated version of that post by using the type option for the attribute. Here is an example:
<shortcode> <tag>vc_button</tag> <attributes> <attribute encoding="allow_html_tags">title</attribute> <attribute encoding="vc_link" type="link">href</attribute> </attributes> </shortcode>
To test the updated language configuration file, follow these steps:
- Set up an installation having both WPBakery Page Builder and WPML activated. Download and activate the String Translation and Media Translation add-ons.
- You will need to override the remote language configuration file with the updated one. To do this, navigate to WPML → Settings page and click the Custom XML Configuration tab. Copy the content of your updated language configuration file to the editor, then click Save.
- Create a new page and add the new module(s) to it. In case you updated some attributes for existing modules, add these to the page as well. In this example, we will assume that the Call To Action module was newly added to the WPBakery Page Builder. Add it to the page and Publish.
- Click on the plus icon to translate the page. This will take you to the Translation Editor screen.
- Ensure that the module textual elements are displayed on the Translation Editor screen.
- Fill in your translated text. Select Translation is complete for each field then click on the Save & Close button.
- Check the translated page on the front-end.
The translated page shows all the translated strings, implying that the updated language configuration file is working properly.
Please note that the CSS styles for the page elements from the original language are copied to the translation language. This ensures everything will look correct between languages. If you would like to disable this feature, please see this article for instructions.
If you encounter any issues, please contact our compatibility development team. They will be happy to check issues related to the language configuration file.
Once done with the tests, please submit a merge request to our repository. Our compatibility developers will receive your request and review it.
Please note that the language configuration file hosted on our repository is for the default version of WPBakery Page Builder. In case you are updating the language configuration file of a customized version of WPBakery Page Builder, apply the changes to the configuration file inside your plugin’s root folder.