Skip to content

Translation memory

The translation memory is the workspace’s record of everything it has already translated. It fills itself, it is shared by every project, and it is what makes the second product cheaper to localise than the first.

Every time a translation is approved, the pair — source text, target text, language pair — is written to the memory. Nothing else is needed: no export, no import, no separate step for the translator.

You can also curate it by hand from Workspace → Translation memory:

  • Add an entry for a phrase that was decided outside Ownlate.
  • Search the memory by text.
  • Delete an entry that is wrong, so it stops being suggested.

Each entry counts how often it has been reused, which is a decent proxy for how much it is worth keeping tidy.

A match is scored from 0 to 100 as a similarity between the source text you are translating and the source text stored in the memory. The comparison is case-insensitive and based on edit distance, so a string that differs by a full stop scores high while a string that differs by a clause scores low.

  • 100 — the source texts are identical.
  • Below 100 — a fuzzy match. How far below is your judgement call; anything under roughly 70 is usually a different sentence that happens to share words.

In the editor, matches appear in the Translation memory tab of the assist panel, best first, with their score. One click puts the text into the field, where it is an ordinary draft you can edit.

Rather than translating from empty, run Pre-translate on a target language. It walks every segment of the project that is untranslated and marked translatable, and tries your chosen sources in the order you list them, stopping at the first that produces something.

Two kinds of source can be combined:

SourceSettingWhat it does
Translation memoryMinimum score, 0–100Applies a memory match
Machine translationWhich integration, or the built-in engineAsks a provider to translate the source text

The status the result lands in depends on how much Ownlate trusts it:

  • An exact memory match (100) is applied and approved — the workspace already signed off on this exact string once.
  • A fuzzy memory match above your threshold is saved as a draft, so somebody has to look at it.
  • A machine translation is submitted as needs_review, so it enters the ordinary review queue.

A typical setup lists the memory first with a threshold around 90, and machine translation second — reuse what you have paid for, machine-translate the rest.

Pre-translation runs in the background. Start it and close the tab; the progress bar on the project reflects it as it goes.

The CLI runs the same thing for a language:

Terminal window
ownlate translate --lang de --score 80

--score is the memory threshold. Without --lang it covers every target language of the project. See the CLI reference.

OperationWhere
Find matches for a textGET /v1/workspaces/{workspaceId}/segments/translation-memory
Run pre-translationPOST /v1/workspaces/{workspaceId}/segments/pre-translate
List, add, delete entriesGraphQL tmEntries, addTmEntry, deleteTmEntry

See the REST API for the full request shapes.