Smartling Connector


The Smartling Connector facilitates the translation of WordPress content within Smartling.
Easily installed with minimal developer support, the combination of WordPress and Smartling provides users with a powerful technology solution to manage the translation and localization process with full visibility and control across the entire organization.
Translations are requested from within WordPress, and translated content is automatically returned to your WordPress environment.

Integration Features

  • Automatic change detection for content updates
  • Robust custom workflow engine configurable per language
  • Automatic download of completed translations to WordPress
  • Translation Memory integration
  • No tie-ins to translation agencies or vendors
  • Reporting for translation velocity, efficiency


  • Submit posts for translation using the Smartling Post Widget directly from the Edit page. View translation status for languages that have already been requested.
  • The Bulk Submit page allows submission of Post, Page, Category, Tag, Navigation Menu and Theme Widget text for all configured locales from a single interface.
  • Track translation status within WordPress from the Submissions Board. View overall progress of submitted translation requests as well as resend updated content.


Gutxieneko eskakizunak

  • WordPress 5.5 or higher
  • Multisite mode enabled
  • PHP Version 8.0 or higher
  • PHP extensions:
    • mbstring
    • curl
    • libxml
    • xml
    • xmlreader
    • xmlwriter
    • yaml
    • gd
    • json
  • For “WP Engine” hosting maximum execution time should be set to 300 seconds.

The full step by step guide can be found here.

  1. Upload the unzipped Smartling Connector plugin to the /wp-content/plugins/ directory.
  2. Go to the Plugins screen and Network Activate the Smartling Connector plugin.
  3. Navigate to the Smartling – Settings page (/wp-admin/network/admin.php?page=smartling_configuration_profile_list) and click Add Profile.
  4. Set the Project ID, User Identifier and Token Secret credentials found in the Smartling Dashboard for the project created for WordPress.
  5. Select the Default Locale and the target locales for the translated sites you are creating.


Additional information on the Smartling Connector for WordPress can be found here.


Ez dago berrikuspenik plugin honentzat.

Laguntzaileak eta Garatzaileak

“Smartling Connector” software librea da. Ondoko pertsonek egin dizkiote ekarpenak plugin honi.


Aldaketen loga


  • Fixed submissions stuck in New status after uploading


  • Fixed auto authorise flag ignored when submitting from widget


  • Fixed submissions not being created on target site when uploading to multiple target sites
  • Added possibility to dismiss admin notices for extended periods of time


  • Reworked elementor elements processing
  • Reworked upload queue


  • Added smartling_filter_before_clone_content_written filter
  • Added possibility of locking of nested JSON Gutenberg block attributes


  • Fixed Elementor and other known plugins content not being added for translation when cron is invoked from non-source blog for submission
  • Fixed strings not being added to some languages when uploading for multiple languages when there are more than one active profile for the source blog
  • Improved shortcode detection to avoid Smartling placeholders present in translated content with shortcodes


  • Added support for custom Smartling directives in the expert settings


  • Added support for copying Elementor page settings on translation
  • Added support for Elementor post blocks that reference other posts


  • Added support for Yoast premium multiple related key phrases and synonyms


  • Fixed Gutenberg attributes locking with nested blocks


  • Added support for Redirection plugin


  • Fixed Elementor Posts widget excerpts appearing in original language after translation


  • Fixed Gutenberg attributes locking


  • Added Bulk Submit submission status filter
  • Fixed Elementor Posts widget excerpts appearing in original language after translation
  • Daily bucket jobs date format will now use WordPress settings instead of US defaults


  • Added support for Elementor popups that reference related content


  • Added Elementor widgets content field to translatable fields, removed anchor field from translatable fields.
  • Elementor CSS is now regenerated for downloaded content when translations are applied
  • Reworked supported external plugins to not include known problematic and irrelevant fields for translation, even if the plugins are not detected or disabled


  • Fixed fatal error when downloading translations if a nested locked Gutenberg block was present in the target content, but not in the source


  • Changed Translation Lock screen: locked strings persist when cloning

  • Bugfix release for broken widget download button


  • Added support for Elementor icon widget


  • Added the possibility to lock attributes in a Gutenberg block. To accomplish this, manually add the attribute smartlingLockedAttributes to the block and set its string value to the comma-separated list of attributes you do not want to be changed when translation is applied

    text here


  • Added ExportedApi::ACTION_AFTER_TARGET_CONTENT_WRITTEN. This action is invoked after target content has been written to the WordPress database, both after translation and cloning
  • Added Elementor links rewrite. The plugin will now try to replace links to known content in the target site


  • Added confirmation for upload queue purge
  • Added filter for cancelled submissions to Translation Progress screen
  • Added upload action for Translation Progress screen. This will upload content into last job, if any, or will set status to selected submissions to Failed, if none.


  • Added support for block level locking when cloning content. The target locked blocks that are present in the source page will have their contents preserved when cloning


  • Added support for Elementor icon-list widget


  • Fixed Elementor elements that could have a background image from the library but didn’t have the images set, preventing valid background images from being processed as related content


  • Added Elementor background images processing as related content


  • Fixed a use case in which an already translated post was re-uploaded, new source strings were not authorized, and the connector automatically re-delivered translations. It happened because all authorized strings are published. This type of re-delivery confused people because it was unexpected, but it also included new strings that were untranslated. Starting with this release, automatic delivery will occur when all authorized strings have been translated and published. Any unauthorized string will prevent the automatic delivery. To unblock automatic delivery, any unauthorized strings should be Excluded or Authorized. Manual delivery is still possible at any translation status from the sidebar widget.


  • Added bulk submit screen backend filter
  • Removed broken bulk submit screen sorting by status


  • Fixed multiple target assets and submissions being created when sent with two levels deep dependencies in cases of complex relations. Added UI to review and fix such tangled assets.


  • Added support of Elementor version 3.15
  • Fixed post parent not being properly updated when cloning
  • Fixed issues when cloning serialized metadata values


  • Changed default Bulk Submit screen type to be Posts
  • Fixed Bulk Submit screen not showing unpublished content


  • Fixed Elementor translation uploading untranslatable fields


  • Improved support for Elementor: fixed issue when translated related assets and css were visible when editing, but missing on the frontend
  • Improved blog removal hook: will delete profiles that reference the deleted blog
  • Improved adding Smartling lock attributes in the blog editor: broader support for other block editor javascript


  • Changed behaviour for known supported plugins: unsupported versions should not upload content not meant for translation
  • Improved batch uid handling to avoid batch not suitable for adding files error when uploading


  • Reworked cloning to better preserve non-string values
  • Added support of Elementor version 3.14


  • Removed automated related items processing when uploading content. Previously, the plugin tried to create placeholders for known related content in taxonomies automatically, now any related content should be sent manually from post widget or bulk submit screen.
  • Fixed regression for retries in automated daily bucket jobs
  • Fixed Gravity Forms handler causing translations from Beaver Builder and Elementor to not apply


  • Added retries for automated daily bucket jobs in cases where a translation batch was prematurely marked completed
  • Fixed taxonomy page submission widget layout
  • Fixed Gutenberg block level locking attributes not created on content save due to a possible race condition


  • Fixed Beaver Builder unable to apply translation to outdated content


  • Added support of Elementor version 3.13


  • Fixed related submissions file name


  • Fixed issue where cloning or translation would fail due to undefined wp_read_video_metadata function
  • Fixed media attachment rules being ignored when translating
  • Added support of Elementor versions 3.11 and 3.12


  • Fixed issue where custom components could interfere with Elementor downloads


  • Fixed translation lock screen locking unintended submissions


  • Added support of Elementor version 3.9 to 3.10


  • Added Gravity Forms support


  • Added Gutenberg block rules import from exported file


  • Fixed wrong content IDs being sent for translation when sending related content one or two levels deep
  • Fixed plugin unable to change target content IDs when encountering a non-standard post type


  • Removed possible target site content duplication when translating


  • Added option to remove “Test run” flag from a blog that was previously used to do a test run


  • Minimum required PHP version is now 8.0!
  • Fixed upload queue getting stuck


  • Added Beaver Builder 2.6 to supported versions


  • Changed handling of related items: plugin will now honor the changes in registered custom post types and taxonomies by ExportedApi::FILTER_SMARTLING_REGISTER_CUSTOM_POST_TYPE and ExportedApi::FILTER_SMARTLING_REGISTER_CUSTOM_TAXONOMY when sending related items for translation


  • Tested compatibility with WP 6.1


  • Changed related assets handling. The plugin will treat unknown post types as the default ‘attachment’ post type when working with related content


  • Fixed locked serialized metadata fields becoming corrupt after translation is applied


  • Improved logging when discovering related assets
  • PHP 7.4 will stop receiving security updates on 28th of November! Refactored code to remove known E_DEPRECATED notices, next major release expected to require at least PHP 8.1


  • Fixed Gutenberg block rules with JSON paths in nested Gutenberg blocks


  • Removed ACF and manual relation handling obsolete expert settings. The behaviours controlled by these options have been reverted to the default values


  • Added options to prevent plugin from escaping post content and metadata before saving. This is useful if there are other plugins that hook on the “post content” or “save metadata” and add extra escaping slashes to them


  • The plugin will no longer automatically fail submissions based on content type not registered in WordPress


  • Added support for Elementor global widgets translation using the related items translation interface


  • Improved supported for nested ACF in Gutenberg block fields (e.g. repeater blocks)


  • Added debugging for related content replacer
  • Added diagnostic message for WordPress not in multisite mode
  • Fixed critical error with locking when metadata was null
  • Improved detection of active AIOSEO pack, Beaver Builder and Elementor plugins when running with limited capabilities


  • Added Beaver Builder plugin support


  • Fix scoping to avoid conflict with Symfony\Polyfill\Intl\Idn


  • Fixed post content not being sent for translation when Elementor is active, but not used for a specific post


  • Fixed errors when saving metadata by improving the escaping process


  • Fixed issue where content without Elementor data was unable to be sent for translation


  • Added sending related attachments for translation along with Elementor plugin content


  • Added Elementor plugin support


  • Improved AIOSEO pack plugin translation for fields that contain tags


  • Fixed upload queue length appearing stuck


  • Added actions to alter translated content or do other actions just before translation gets saved
  • Fixed block level locking for nested Gutenberg blocks


  • Added support for sending related items from within ACF Gutenberg blocks


  • Fixed AIOSEO pack plugin translation using wrong fieldset when translating taxonomies


  • Added display of error messages when widget uploads fail
  • Fixed check/uncheck all links in widgets affecting all Smartling checkboxes on a page
  • Fixed source title detection for taxonomy submissions


  • Added support for AIOSEO pack
  • Fixed shortcodes with no attributes preventing content uploads
  • Fixed widget uploads broken when an audit log record could not be created


  • Fixed broken content in ACF fields after translation


  • Fixed cloning affecting fully locked submissions


  • Fixed terms meta values stored as array instead of scalar values


  • Added purge upload queue action (sets all NEW submissions to CANCELLED)
  • Fixed smartlingLockId attribute being sent for translation


  • Fixed taxonomy page widget not downloading content


  • Fixed parent page not being sent for translation when sending content one or two levels deep


  • Added support for nested attributes via JSON path in fine-tuning


  • Fixed related content not being sent for translation from the post based content UI


  • Fixed issue where ACF blocks couldn’t be decoded and were missing in translated submissions


  • Fixed regression where media duplication occured and/or related item ids were not changed when cloning items. This release majorly changes the handling of related items while cloning, from this release onwards only the items directly sent for cloning (including cloning one or two levels deep) should be cloned, without any related submissions.


  • Cloned submissions are excluded from status check background job. This change fixes cloned submissions changing status from completed to failed after time passes


  • Fixed upload widget not uploading content


  • Fixed content not sent for translation when no related content is present


  • Fixed relations to second level content not changed in target blog when cloning two levels deep


  • Fixed media library attachments duplication when cloning


  • Added test run. Test run submits posts and pages to a new blog for “pseudo” translation. This should help quickly check compatibility between your content and the plugin.


  • Changed media attachment rules to Gutenberg block rules. It is now possible to copy a block attribute value instead of translating it, or exclude it entirely. This is set up in the Fine-Tuning section.


  • Added retries for communication with external locking service


  • Fixed submissions not being deleted on media attachments deletion. It is now easier to resubmit missing media attachments when translating related content.
  • Added display of status messages when running cron jobs manually


  • Fixed reference to image in core/image Gutenberg block’s inner HTML class on translation to prevent WordPress notice at translated post edit page
  • Changed serialization to prevent php built-in serialize function vulnerabilities


  • Added escaping for job names in Translation Progress screen
  • Submissions get deleted when content they reference is deleted. For example, this will allow easy resubmission of related content that was deleted on the target site


  • Added new action in Translation Progress screen to check status and fail submissions for which no corresponding Smartling locale exists
  • Fixed nested Gutenberg blocks losing their attributes after translation
  • Disabled loading of external entities in libxml


  • Scoped dependencies to prevent conflicts with other installed versions of GuzzleHttp and Symfony libraries
  • Fixed content not being added to upload from post widget


  • Fixed relations not changed in target blog when cloning


  • Switched from database to external service locking for cron jobs. It avoids the issue when hosting doesn’t allow SQL SELECT ... FOR UPDATE


  • Added two levels deep cloning/translation to post widget
  • Fixed menu items not being submitted for translation when using bulk submit to upload menus


  • Fixed downloads failing if translated content has html anchors


  • Fixed block locking UI not visible when a blog is both a source and a target for translation
  • Fixed overly strict language mappings validation in profile configuration


  • Fixed WordPress fatal error on plugin activation


  • Added support for MultilingualPress3. On creating submissions Smartling connector will also add content relations for MLP3.


  • Visual changes in the locking sidebar


  • Fixed misconfiguration


  • Gutenberg block level locking ids now created on every visual editor operation instead of on saving content
  • Added replacing of relative links in A tags to other post based content


  • Fixed Gutenberg block level locking frontend not working with WordPress 5.7 and above


  • Added validation to language mappings in profile configuration to prevent undefined behaviour when a single Smartling locale was mapped to multiple target blogs


  • Added expert setting to disable automatic generation of Gutenberg blocks locking ids (defaults to OFF)
  • Fixed critical wordpress error when cloning from Bulk Submit page


  • Add locking for Gutenberg blocks in the Gutenberg visual editor based on block ids. Block ids will be generated randomly for all Gutenberg blocks on saving content. After new content is sent for translation and downloaded, a new sidebar block “Smartling lock” will become available for blocks with generated ids. Previous location based method for locking is now obsolete, please re-lock the required blocks in the visual editor, as the support for location-based locking will be disabled in a future release.


  • Added job name search to search field in Translation Progress


  • Fixed delivery of Gutenberg blocks where attributes have nested objects. Before appropriate escaping was done only for attributes on the top level only


  • Improve job link in translations progress


  • Added escaping to HTML output to prevent xss injections


  • Fixed an issue when job links were not displayed on Translation Progress after submitting content for translation for the first time


  • Fixed an issue where image attachments in ACF blocks do not get uploaded


  • Fixed an issue with downloads when the post has links to images that are not attachments


  • Added ability to lock inner Gutenberg blocks


  • Fixed menu translation when menu item is a link to related content


  • Added ability to use all registered post types for references in Gutenberg blocks
  • Fixed menu translation when menu items consisted of post types or taxonomies


  • Fixed critical wordpress error on new profile creation


  • Added more publish options for delivering translated posts. Now you can choose what post status to set after delivering: don’t change existing status; set to draft; set to published


  • Minimum required PHP version is now 7.4!
  • Added a link to the most recent job for submissions on Translation Progress screen


  • Fixed extra slashes being added when using fine tuning forms


  • Minimum required PHP version is now 7.2! The next plugin release will require PHP 7.4.
  • Added ability to lock translation for some of the Gutenberg blocks in post content. The lock will preserve translated blocks, unless there are changes to the parents’ post structure of blocks, such as blocks reordering, or adding new blocks.

Old entries moved to changelog.txt