Manual
CLI
API
Log in Get started free

Import and export files

Upload translation files into a project and download translations in the format your code uses.

Open Project settings → Import & export (also in the menu of a project on the Projects page) to move translations in and out of a project as files. See File formats for the supported formats.

Export #

Choose what you want in the file:

OptionNotes
FormatOne of the supported formats.
BranchDefaults to the protected main branch.
LanguagesTick the languages to include. The source language is marked “(source)”. All target languages are ticked at first.
Only approved translationsOn by default. Turn it off to include drafts and translations in review.

Then choose Download. What you get depends on the format:

  • Formats with a file per language give one file for one selected language (named after the language code, for example de.json), or a translations.zip with one file per language.
  • Spreadsheet-style formats (CSV, TSV, Excel, Apple String Catalog) give a single translations file with a column for every language plus the source texts.

The source language always contains every key that has a source text.

Import #

Importing needs the manager role. Everyone else sees “Only project managers can import files.”

  1. Choose a File. The format is recognized from the file extension.

  2. Check the languages found in the file. For each one, choose what to Import as:

    • Skip,
    • Source strings in the source language of the project, or
    • Translations into one of the project’s languages.

    Languages that match a language of the project are filled in for you, the rest start as Skip.

  3. If the file also carries source texts (XLIFF, Gettext and Apple String Catalog do), tick Also use the source texts in this file.

  4. Pick the branch under Import into branch.

  5. Optional: tick Remove keys that are not in the file. This needs source strings, and it deletes the keys that are missing from the file, with their translations, from the branch.

  6. Choose Preview. The page lists what will happen: how many keys are added, changed, removed and unchanged, and how many translations will be saved, with a note for everything that is left out.

  7. Choose Import.

Spreadsheets (CSV, TSV, Excel) need a header row with a key column and one column per language code. Entries in a file that are not text, such as numbers and lists, are left out and listed.

What the import does with texts #

  • Changed source texts replace the old ones, and the translations of those keys go back to draft.
  • New keys are added only when Create missing keys on import is on (see below).
  • Existing translations are kept unless Overwrite existing translations is on.
  • Translations are skipped when the key does not exist in the branch, the language is not active in the project, or the text is empty.
  • Imported translations are marked In review when Mark imported strings as needing review is on, and approved straight away otherwise. Approved ones are added to the translation memory.

Adding keys to the protected main branch counts towards the key limit of your plan.

Import settings #

At the bottom of the section, Import settings control the behavior above. Choose Save to apply.

SettingDefaultEffect
Create missing keys on importOnAdds keys from the file that the project does not have. The CLI and CI pipelines always create the keys they push.
Overwrite existing translationsOffReplaces existing translations with the values from the file.
Mark imported strings as needing reviewOnImported translations need review before they count as translated.

Create missing keys on import only applies to files imported in the web app. The other two settings also apply to translations uploaded with ct push --translations.

Repository file names #

File names and layout for a repository are not set here, but in ct.yml. See CI and CLI.