Export translations from SimpleLocalize translation editor into any format, including an Excel and JSON format. The export feature allows you to save translations locally or send them to translators without giving access to the translation editor. The user can choose to export the content in a wide variety of formats.
To export translations, open your project and switch tab to the 'Data'. Select a file format by clicking the icon and start export by clicking 'Start export' button. After that, you will be able to download translations by clicking 'Download the file'.
Resources:
- Learn how to export translations using CLI
- Learn how to export translations using API
Translation keys order
By default, exported translation keys are sorted alphabetically. We recommend keeping the alphabetical order: it is stable and predictable, so exports always produce the same file, and it is easy to find keys or review changes in pull requests.
If you need the exported files to follow the order of your source file, you need to:
- Upload the source file with the
UPDATE_ORDERimport option, so SimpleLocalize saves the position of every key from the file. - Download translations with the
IMPORT_ORDERsort option (--downloadSort IMPORT_ORDERin the CLI,sort: "IMPORT_ORDER"in the GitHub App configuration, orsort=IMPORT_ORDERin the API).
IMPORT_ORDER alone doesn't change anything when the key positions were never saved. In that case, all keys have the same position, and they are exported alphabetically.
The key order is saved automatically only on the first import into an empty project, so keys added later, or keys created in the translation editor, will be sorted alphabetically
unless you upload the source file with UPDATE_ORDER every time.
Example GitHub App configuration:
upload:
files:
- path: "locales/en.yml"
format: "yaml"
language-key: "en"
options:
- UPDATE_ORDER
download:
files:
- path: "locales/{lang}.yml"
format: "yaml"
sort: "IMPORT_ORDER"
Read more about keeping translation keys in order.
Conflicting nested keys
When exporting translations to a JSON file with the WRITE_NESTED option, you may encounter conflicting nested keys.
This happens when a translation key is both a value holder and a parent of other keys at the same time. JSON does not allow a key to be both a string and an object simultaneously.
For example, if you have the following translation keys:
home.login = "Log in"
home.login.text = "Please log in to continue"
home.login.title = "Welcome back"
home.login.validation = "Invalid credentials"
The export would try to produce this invalid JSON:
{
"home": {
"login": "Log in",
"login": {
"text": "Please log in to continue",
"title": "Welcome back",
"validation": "Invalid credentials"
}
}
}
This is invalid because home.login cannot be both a string ("Log in") and an object at the same time.

To resolve this, rename the conflicting key home.login to something more specific, e.g. home.login.button:
home.login.button = "Log in"
home.login.text = "Please log in to continue"
home.login.title = "Welcome back"
home.login.validation = "Invalid credentials"
Now the export produces valid nested JSON:
{
"home": {
"login": {
"button": "Log in",
"text": "Please log in to continue",
"title": "Welcome back",
"validation": "Invalid credentials"
}
}
}

After renaming the conflicting keys, you can export translations with WRITE_NESTED option enabled.
How to find conflicting keys?
The easiest way to get a list of conflicting keys is to export the translations to a JSON file with the WRITE_NESTED option enabled.
The export will fail, and the error message will contain a list of the problematic keys. From there, you can resolve the conflicts by renaming or deleting the conflicting keys.
