BFBambooForge Labs

AI Translation Suite: Translation Memory & TMX

Every approved translation is remembered: exact and near matches are answered from memory before a token is spent, with TMX in and out.

Buy on the Odoo Apps StoreOpen the live demoWebsite€266Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_translation_memory.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0
Full walkthrough on a live Odoo 19.0 database, with subtitles. It ends with what this app deliberately does not do.

AI Translation Suite: Translation Memory & TMX

An add-on for BambooForge AI Translate (17.0). Every approved translation is remembered; exact and near matches are answered from memory before the engine is asked; TMX in and out; a counter of what was saved.

How the memory fills

Nothing to do. When a batch applies an item - after review, or straight away on an auto-approved batch - the pair source → value is written to AI Translate ▸ Translation Memory for that language pair, with where it came from (model, field, batch) and when. A later approval of the same source replaces the earlier one: the reviewer's newest decision is the memory. An item that was itself answered from memory and applied unchanged writes nothing new.

Pairs where the translation equals the source (OK → OK) are not stored: they would never help.

How a batch uses it

On the batch, Use translation memory (default on) and Near-match threshold (%) (default 90). When the batch is translated, before anything is sent to the engine and after the glossary:

  • an item whose source is already in memory for this language pair (compared ignoring case and extra spaces) is proposed from memory, note memory, Match % = 100, and is not sent;

  • otherwise the most similar remembered source is looked for; if it is at least threshold % similar (difflib ratio) the remembered translation is proposed with note memory, 96 % match - check and Match % in orange - the reviewer fixes three characters instead of reading a fresh sentence;

  • everything else goes to the engine as before.

The batch shows Answered from memory and Characters not sent. Set the threshold to 100 for exact matches only; the glossary always wins over the memory.

TMX

AI Translate ▸ Import TMX: pick the file and the language pair; every <tu> carrying both languages (by Odoo code de_DE or ISO de) is remembered with origin TMX import; duplicates update the existing entry. Translation Memory ▸ select rows ▸ Action ▸ Export TMX (or no selection = everything) downloads TMX 1.4 with xml:lang per segment.

Technical notes

  • Uses AI Translate 1.1.0's bf.translate.job._local_proposals(items, glossary) and bf.translate.item._after_applied() hooks; the engine code is untouched.

  • Exact lookup is an indexed equality on a normalised key; near-match is Python difflib over the pair's pool with a length pre-filter - fine for tens of thousands of entries, not a search engine.

  • Entries are per company; the unique key is (normalised source, from, to, company).

  • Community only. No Enterprise module, no external service.

Screens

Batch - bambooforge_translation_memory
Batch
Fuzzy - bambooforge_translation_memory
Fuzzy
Memory - bambooforge_translation_memory
Memory