This feature is available starting from the Pro plan.
The Custom processor app enables you to utilize your own third-party service to process the uploaded and downloaded translation files. Basically, before the translations are imported to or exported from Lokalise, it will be sent to your service and you'll have a chance to modify them as you like.
Here are some use cases where the custom processor can come in really handy:
Clean up the imported translations by removing unneeded special characters.
Apply special formatting to the imported or exported translations.
Remove unwanted (banned) words from your texts.
Restructure the exported translation keys.
Using the app
To get started, open your Lokalise project and click Apps:
Find the Custom processor in the apps list, and click Install. You are going to see the following screen:
Import Custom Processor URL — enter the URL you would like to send the imported translations to.
Export Custom Processor URL — enter the URL you would like to send the exported translations to.
File format — choose one of the file formats to enable this custom processor for, or specify All supported formats.
Once you are ready, click the Enable app button.
Now you can perform file imports and exports as usual and your custom processor will be able to modify translation data in any way you need.
Technical details
You can find sample apps utilizing custom processors in our Developer Hub.
Both the import and export URLs must respond to HTTP POST requests. You can find sample data sent to the processor in this Gist.
Your processors can modify the received data in any way you want (specifically, by changing or parsing translations, adding custom attributes, descriptions, attaching screenshots, using third-party services to perform machine translation, etc). However, data returned by the processors must preserve the initial structure.
Known limitations
Offline translations support
This feature does not work with the Offline translations (in XLIFF format).
Specific file format support
When importing files, some formats are automatically grouped into more general categories. For example:
A JSON file and a Structured JSON file might be treated the same.
A PHP array and a PHP Laravel array might not be recognized as different formats.
This happens because the system infers the format on import instead of requiring you to select it (except when using paste-based import, where you manually pick the format).
Let’s say you choose PHP Laravel array as your format and import a .php
file. If custom processors don’t work as expected, it’s likely because the system treated the file as a regular PHP array, not a Laravel array. A similar issue can happen if you select Structured JSON but upload a normal .json
file—the system may not apply the expected format settings.
Therefore, if you need to work with specific formats like PHP Laravel array or Structured JSON, make sure to select All supported formats when configuring custom processors.