Transept
Browse the help center

Bring your existing translations

Maintained by Vitalii VlasiukCo-founder

If a document or a string table already carries translations, Transept takes them as the starting point instead of retranslating from scratch. You don’t restart, and you don’t pay again for work that’s already done.

Can I start from translations I already have?

Most teams don’t arrive empty-handed. There’s a shipped app with German and French strings, a manual that was translated last year, a game with four locales already in the box. Re-running all of that through a translator would cost words and, worse, throw away the wording you already approved. So Transept lets you bring it in: existing translations are received, not regenerated.

How seeding works

The mechanism lives in the string-table import (.tstrings.json) covered in Automate Transept with the API. Each string is a unit with a stable key, and a unit can carry the translations it already has — a targets map with one entry per language (or a single target when the file is pinned to one locale). On import, every one of those becomes the active translation for its language, written straight in. No model is called, and no words are billed — the work was already done, Transept is just taking delivery.

A unit arriving with its translations already attached.

What seeding buys you

The point of bringing translations in isn’t only to save the re-translation cost. Every seeded pair is indexed into translation memory the same way a freshly generated one is, so your memory is populated from day one — the next time similar text comes up, Transept reuses the phrasing you already chose, not a cold guess. Your glossaries and styleguides still apply to everything that does need translating, so new and changed strings come out consistent with the ones you seeded.

How do I keep my translations in sync?

Once the corpus is in, you maintain it by re-submitting the whole current file whenever it changes. Transept diffs it by key: unchanged strings keep their translations (and any review already done on them), and only genuinely new or changed units are translated — the same Run only what changed behaviour the editor uses, on the API side. Fixing one string in a file of hundreds costs one string, not hundreds.

What happens if a translation’s placeholders don’t match?

A seeded translation has to be a real translation of its source, not a stray value that would break on export. So each seed is checked against its source’s placeholders — the {name}-style slots that must survive intact. If a target’s placeholders don’t match its source’s, that one unit is skipped and reported rather than shipped silently; its siblings still seed normally. The import result tells you how many translations were seeded and how many were skipped, with a sample of the reasons, so a malformed export surfaces instead of hiding. (The check runs on ICU-format string tables, where braces are real placeholders; in plain tables braces are literal text and are left alone.)

Explore the features

Still stuck? Ask Literess in the app, or write to [email protected].