Ditto is a powerful tool that helps teams manage and streamline product text from design to production. By maintaining a single source of truth, Ditto ensures that designers, developers, and translators work with consistent and up-to-date copy, eliminating confusion and reducing manual updates.
With the Ditto app for Lokalise, you can sync and localize your product text in Lokalise, making translations seamless alongside your product’s development.
Supported content
The Ditto integration supports Components only. In Ditto, Components are reusable text items that sync across projects, helping teams maintain consistency and standardize content.
Ditto projects are not supported in this integration.
Installation
Creating connection on Ditto
To connect Ditto with Lokalise, open Ditto and go to Account Settings > Connections. Find Lokalise and click Open.
In the popup, click Add connection and copy the API key.
This key will be used to authorize Lokalise.
Create Lokalise project
If you haven’t already, create a Marketing and support project in Lokalise.
Enter a project name, select the base and target languages, and choose Ditto from the Content integration dropdown.
Click Create project to finalize the setup.
Installing the app
Once the Marketing and support project is created, you should be redirected to the Content management tab to install the app. If this doesn’t happen, open your Lokalise project, go to Content management, and click Install.
Paste the API key obtained from Ditto, and click Authorize to finish the installation.
Importing content from Ditto to Lokalise
After installing the Ditto app in Lokalise, a list of available components from Ditto will appear. Content synchronization should start automatically, but you can manually refresh it by clicking Refresh.
In the Ready for import view, select the items you want to import and click Import from Ditto.
A dialog will appear where you can:
Choose languages to include in the import.
Overwrite existing keys if you want to update previously imported translation keys with the latest content from Ditto. Updated keys will revert to Unverified status.
Automations – if enabled in your Lokalise project, it's recommended to import only the default language with Overwrite existing keys enabled. Alternatively, you can import all required languages while keeping Overwrite existing keys disabled.
The import will run in the background, and once completed, you will receive a notification.
Reimporting updated content from Ditto to Lokalise
To import the latest updates from Ditto components, go to the Content management tab in Lokalise and click Refresh to check the most recent update date.
Select the items you want to reimport and click Reimport from Ditto to bring in the updated content.
Performing translations
Go to the project editor in Lokalise and translate your content as usual. Imported keys will have automatically assigned tags for better organization.
Tags automatically added:
ditto – identifies content imported from Ditto.
Test group – represents the item's title from Ditto.
Key names are generated using the group and component names, separated by a dot (.) delimiter.
If you plan to export translations back to Ditto, do not remove the ditto key tag. This tag is automatically assigned during import, and removing it will prevent the corresponding key from being exported back to Ditto.
Exporting content from Lokalise to Ditto
Once translations have been reviewed, go to the Content management tab in Lokalise and switch to the Imported view.
Select the items you want to export and click Export to Ditto.
A dialog will appear where you can choose one or more languages for export.
Click Export to Ditto to begin the process.
The export will run in the background, and you’ll receive a notification once it's completed.
Known issues and technical limitations
Variant names
The variant name in Ditto must exactly match the language code used in Lokalise. If they don’t match, the export process will fail.
For example, if Arabic is listed as ar
in Lokalise, the variant in Ditto should also be named ar
for proper integration.
When using the API, focus on the apiID instead of the name, as the apiID is fixed and cannot be modified in Ditto’s UI, while the name can be changed.
Base vs. Variant texts
In Ditto, source language values are typically assigned to base text, which does not correspond to any specific variant.
While the Ditto API allows reading base text, it does not support writing to it because their API requires a variant parameter for any updates.
Since the Lokalise Ditto app relies on variants, keep in mind that base text is not the same as the base variant. This means updating base text in Ditto through Lokalise is not possible.