Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
7be2cd8
docs: add translation memory management page
dkrizan Apr 28, 2026
29f79c6
docs: fix broken anchor link in managing_translation_memories
dkrizan Apr 28, 2026
db0f718
docs: nest TM pages under a Translation Memory category
dkrizan Apr 28, 2026
bf62051
docs: drop redundant Translation Memory child in sidebar
dkrizan May 6, 2026
6e96747
docs: rework Translation Memory pages for the management feature
dkrizan May 15, 2026
09e9bfe
docs: refine TM management page and fix broken anchors
dkrizan May 15, 2026
64e5d01
docs: add TM management screenshots and refresh editor TM panel
dkrizan May 15, 2026
621b06f
docs: address review feedback and restructure Manage TM page
Barush May 20, 2026
b334a9c
docs: split Translation Memory parent into Use + Manage child pages
Barush May 20, 2026
c6b1ff1
docs: tighten TM page prose and add Use TM FAQ
Barush May 22, 2026
9475289
docs: lead Manage TM page intro with the definition
Barush May 22, 2026
5214b7d
docs: fix typo in TMX format anchor
Barush May 22, 2026
f3d7ea0
docs: sidebar Title Case update
Barush May 22, 2026
e3e1160
Merge branch 'main' into dkrizan/translation-memory-management
dkrizan May 25, 2026
7f372e1
docs: TM pages — penalty section, fixes from review, expanded TMX ref…
dkrizan May 26, 2026
4aa4e41
docs: fix TM review-pass nits (numbering, threshold framing, periods)
dkrizan May 26, 2026
4f6a63e
docs: drop duplicate auto-translate mention from penalty step
dkrizan May 26, 2026
aba3ecd
Merge branch 'main' into dkrizan/translation-memory-management
dkrizan May 27, 2026
3dfe188
docs: TM match meta shows last-updated time, not added time
dkrizan May 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ convenient way.
## How to Edit Translation Strings: The Translations View
The translations view enables you to access translation keys, the translation text in the target languages. It allows you to
add comments or see the history. When translating, you can also get the results from [machine translation](../translation_process/machine_translation.mdx) providers and
[translation memory](../translation_process/translation_memory.mdx).
[translation memory](../translation_process/using_translation_memory.mdx).

import { ScreenshotWrapper } from "../shared/_ScreenshotWrapper";

Expand Down
339 changes: 339 additions & 0 deletions platform/translation_process/managing_translation_memories.mdx

Large diffs are not rendered by default.

28 changes: 0 additions & 28 deletions platform/translation_process/translation_memory.mdx

This file was deleted.

84 changes: 84 additions & 0 deletions platform/translation_process/using_translation_memory.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
id: using_translation_memory
title: Translation Memory
sidebar_label: Use Translation Memory
image: /img/og-images/platform.png
description: Reuse previously translated phrases through translation memory matches in the editor.
---

import { ScreenshotWrapper } from '../shared/_ScreenshotWrapper';

Translators waste time re-translating the same phrase. A button label, an error message, a marketing line: the same source text appears across keys, projects, and products, but each translation is rewritten from scratch and worded slightly differently each time.

Translation memory (TM) searches for similar texts your team has translated before and suggests them in the editor. Matches come from the project's own translations and from any shared memory connected to the project, so a phrase translated once becomes available everywhere it appears again.

:::info
Translation memory only works on a project's **default branch**. Translations on other branches are not written to the memory, and matches from non-default-branch keys are not surfaced as suggestions or used by auto-translate. See [Branching](/platform/branching/overview) for the general rule on what branch-scoped data is and isn't shared across branches.
:::

To create shared memories, import them, and share them across projects at the organization level, see [Manage translation memories](/platform/translation_process/managing_translation_memories).

## Translation memory matches

Matches appear in the editor as a ranked list. Matches with less than 50% raw similarity (before any penalty is applied) are not shown — so the score pill, which displays the post-penalty score, can sometimes be below 50%.

For each TM match, the panel shows:

- The translation in the target language
- The source text it was translated from
- A match-score pill, coloured by tier (high / medium / low) so strong matches stand out
- The translation memory name, the source key, and how long ago the entry was last updated

To insert a match into the editor, click the suggestion.

<ScreenshotWrapper
src="/img/docs/platform/translation-memory.webp"
alt="Translation memory matches in the editor"
/>

## How matches are scored

Each match is scored by similarity between its source text and the text being translated. Scores can be lowered by a [penalty](/platform/translation_process/managing_translation_memories#penalty) an organization owner has configured on a shared memory. When two matches end up with the same final score, the memory's priority in the project's translation memory list breaks the tie. You can reorder memories from `Project settings` → `Advanced` → `Translation memory`.

## Where matches come from

Every project has a project-only memory that mirrors its own translations. Beyond that, an organization owner or maintainer can connect one or more shared memories to the project, each with its own read or write access and penalty. The editor merges results from every connected memory and shows the strongest matches first.

See [Manage translation memories](/platform/translation_process/managing_translation_memories) for how to create shared memories, import TMX files, and assign memories to projects.

## Auto-translate from memory

The same memories that drive the suggestion panel can also fill empty translations automatically, either as you save (with auto-translate enabled in the project) or in bulk via the pre-translate batch job. The two features look at the same memories but follow different rules.

| Feature | Triggered by | What it looks at | Threshold |
|---|---|---|---|
| Editor suggestion panel | Opening or focusing a translation cell | Trigram similarity with penalty subtracted | Raw similarity ≥ 50% (penalty does not affect inclusion, only the displayed score) |
| Auto-translate / pre-translate by TM | Saving with auto-translate on, or running the pre-translate batch job | Exact source-text match | Exact equality **and** the memory carries no penalty for the receiving project |

A memory marked with any [penalty](/platform/translation_process/managing_translation_memories#penalty) (its default or a per-project override) still shows up as suggestions, but auto-translate is skipped.

One other case the panel can show but auto-translate skips: a draft target while the memory is in `Only accept reviewed translations` mode. Auto-translate also follows the reviewed-only rule.

## FAQ

### What's the difference between translation memory and machine translation?

Translation memory stores **human translations your team has already done**, so every match is a real translation of a real source string written by a real translator. Machine translation generates a fresh translation from a model (DeepL, Google, OpenAI, Tolgee's own AI providers, and others) every time it's called. The editor shows both, with TM matches ranked first because they reflect your team's wording. See [Machine translation](/platform/translation_process/machine_translation) for how to configure MT providers.

### Why aren't I seeing matches from a memory in the editor?

A memory match only appears when several conditions line up. Check, in order:

- The project has **read access** to the memory in `Project settings` → `Advanced` → `Translation memory`.
- The memory's **base language** matches the project's base language.
- The source text of the key being translated has **above 50% similarity** with at least one entry in the memory. Matches below 50% are not shown.
- The key is on the project's **default branch**. Translation memory does not work on other branches.
- For shared memories, the memory actually has entries. Sync from a project only happens when the project has write access AND a translator has saved a translation there.

### Why does the suggestion panel show a match that auto-translate didn't use?

Auto-translate is stricter than the suggestion panel. It only fires when the source text is an **exact** match (100% similarity) and the memory carries **no penalty** for the receiving project. The suggestion panel shows everything down to 50% similarity, with penalties applied to the score. See [Auto-translate from memory](#auto-translate-from-memory) for the full rule.

### Does the translation memory update in real time as my team translates?

Yes. As soon as a translator saves a translation in a project with **write access** to a memory, that entry becomes a candidate match for every other project that has read access to the same memory. There is no indexing delay or rebuild step.
6 changes: 5 additions & 1 deletion redirects.js
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,11 @@ module.exports.redirects = {
},
{
from: '/platform/translation_tools',
to: '/platform/translation_process/translation_memory',
to: '/platform/translation_process/using_translation_memory',
},
{
from: '/platform/translation_process/translation_memory',
to: '/platform/translation_process/using_translation_memory',
},
{
from: '/platform/api-keys-and-pat-tokens',
Expand Down
17 changes: 16 additions & 1 deletion sidebarPlatform.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,22 @@ module.exports = {
label: 'Translation Process',
type: 'category',
items: [
'translation_process/translation_memory',
{
label: 'Translation Memory',
type: 'category',
items: [
{
type: 'doc',
id: 'translation_process/using_translation_memory',
label: 'Use Translation Memory',
},
{
type: 'doc',
id: 'translation_process/managing_translation_memories',
label: 'Manage Translation Memories',
},
],
},
'translation_process/machine_translation',
'translation_process/ai_translator',
'translation_process/ai-playground',
Expand Down
Binary file modified static/img/docs/platform/translation-memory.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading