I'M TranslAID PTI
Pre-Translation Interface
Copyright (c) 2026 Viktor M. Takacs


========================================================================
REQUIREMENTS
========================================================================

No installation required. Python is bundled with the app.

You need an API key from a supported LLM provider (OpenAI, Anthropic,
or Google).


========================================================================
SECURITY
========================================================================

PTI runs entirely on your own computer. It does not connect to any
external server except the LLM provider you choose and a licence
validation server when you activate your licence key or export a
translated file. There is no cloud component, no
background data collection of any kind, and no data leaves your machine
unless you explicitly trigger a translation.

Because PTI runs locally, the only realistic way another party could
interact with it is through software already running on your computer.
If your machine were infected with malware, that malware could in theory
send requests to PTI and trigger translation jobs using your API key —
running up charges with your LLM provider, up to the total balance or
credit limit on your API account — or access files you have loaded into
the app: your bilingual source file, termbase, style guide, or
completed translation.

To put this in perspective: if malware is already running on your
machine, PTI is unlikely to be your biggest concern. A compromised
machine exposes everything on it — your emails, documents, passwords,
and banking details. The risk specific to PTI is financial: unexpected
charges from your LLM provider, capped at the balance or credit limit
on your API account.

This is an inherent characteristic of tools that run a local web server
to serve their interface, not a flaw specific to PTI. The practical risk
is low: basic data protection practices effectively stave off malware,
and frankly, writing malware specifically to target a niche translation
tool would be an extraordinary waste of a hacker's time.

When you check "Remember my settings" and save, PTI stores your API
key, base URL, model selection, language pair, chunk size, theme, and
any loaded termbase or style guide in a `.settings.json` file in the
app directory. The API key is stored in plaintext. Anyone with access to the
app folder can read it. If you are on a shared computer, leave the
"Remember my settings" option unchecked — PTI will then strip the API
key, base URL, and model from the file on save.

The best protection is the same one that protects everything else on
your computer: keep your operating system and antivirus software up to
date, and do not install software from untrusted sources.


========================================================================
RUNNING THE APP
========================================================================

1. Unzip the folder anywhere on your computer.
2. Double-click start.bat to launch the app.
3. The app will open automatically in your browser.

Use only one browser tab at a time. The app runs locally on your
machine — opening multiple tabs does not create multiple sessions, and
may cause unexpected behaviour.

On first run, go to Settings and enter your API key. If you check
"Remember my settings" and save, the key is stored in a .settings.json
file in the app folder. To enable file export, go to the Licence tab in
Settings and enter your licence key, then click Activate.

   If you are on a shared computer, leave "Remember my settings"
   unchecked. When unchecked, PTI does not write your API key to disk.
   See the SECURITY section above for details.


========================================================================
WORKFLOW
========================================================================

1. (Optional) Select a domain from the DOMAIN / SUBJECT MATTER
   dropdown at the top of the interface. This tells the LLM what field
   the text belongs to, improving terminology choices and register. If
   your document spans multiple domains or does not fit any listed
   option, leave it at "-- Any / Not specified --" or select
   "General / Mixed". To specify a domain not in the list, select
   "Other (please specify)" and type your domain in the field that
   appears to the right.

2. Drop your bilingual file into the drop zone, or click to browse.
   Supported formats: SDLXLIFF, MQXLIFF, XLIFF 1.2, XLIFF 2.0.

3. (Optional) Load a termbase for terminology consistency.
   Supported formats: XLSX, XLS, CSV, TBX, MultiTerm XML.

   If your termbase exceeds the cap, the shortest terms are excluded
   first. Longer multi-word terms are prioritised because they are more
   likely to match unambiguously in the source text. You can raise the
   cap in the interface if your termbase is large, but be aware that
   every term injected into the prompt costs tokens on every single
   chunk translation. A large termbase increases API cost and pushes
   the system prompt closer to the model's context limit. At very high
   term counts the model may truncate or ignore parts of the prompt,
   including style guide rules. Set the cap to the minimum that covers
   your document's terminology.

4. (Optional) Load a style guide to steer tone, register, and
   conventions.

5. Check the source and target languages in the controls bar — these
   are auto-detected from the file where possible, but can be changed
   if needed.

6. Choose how to handle LOCKED segments (segments locked in your CAT
   tool project, shown in the file info panel if present): skip them
   and leave them untouched, or include them in the translation run.

   Choose how to handle FUZZIES (segments with partial TM matches):
   translate them, or skip them and leave them for manual review.

   Choose how to handle REPEATS (identical repeated segments): translate
   all of them, or propagate the first translation to all identical
   segments (faster and cheaper for repetitive content). REPEATS is only
   shown for files that contain repeated segments.

7. (Optional) Set the chunk size — this controls how many segments the
   app translates per API call. Choose based on your content:

      10 segments — safest. Best for long or complex segments. If a
      batch fails, little work is lost. Also good for unstable
      connections.

      20 segments — recommended. A reliable middle ground for typical
      mixed content.

      50 segments — fastest. Best for short segments. If a batch fails,
      more segments need redoing at once.

   The default is 20. Leave it unless you have a reason to change it.

8. (Optional) Set your output filename and format — TMX, SDLXLIFF,
   MQXLIFF, XLIFF 1.2, or XLIFF 2.0. You can also change these at any
   point before downloading. SDLXLIFF output is only available when the
   input file is an SDLXLIFF; MQXLIFF output is only available when the
   input file is an MQXLIFF. All other formats are always available.

9. Click Translate. Without an active licence key, translation is
   limited to the first 30 segments of your file — enough to evaluate
   quality on real content. A trial indicator will be shown during the
   run, and a prompt to activate your licence will appear when the
   trial completes.

10. Click Download and import the file into your CAT tool. A valid
    activated licence key is required to download output. If you do not
    have one yet, you can buy it at imtranslaid.com and enter it in
    Settings → Licence.


========================================================================
IMPORTING INTO YOUR CAT TOOL
========================================================================

Trados Studio
------------------------------------------------------------------------

The recommended output format is SDLXLIFF.

1. Close Trados Studio completely.
2. Download the translated SDLXLIFF from I'M TranslAID.
3. Replace the original SDLXLIFF in your project's target language
   folder with the downloaded file.
4. Reopen Trados Studio. Target segments will be populated with the
   pre-translation output and their status set to Draft, ready for
   post-editing. Segment metadata not touched by PTI (TM match origin,
   formatting tags, comments) is preserved.

If you want to preserve the original SDLXLIFF untouched (for example,
if it contains comments, tracked changes, or other metadata you do not
want overwritten), use the TMX fallback instead:

1. Export TMX from I'M TranslAID instead of SDLXLIFF.
2. Import the TMX into a new TM (.sdltm) in Trados Studio.
3. Attach that TM to your project.
4. Either run Batch Tasks > Pre-translate Files to insert the pre-translation output
   into target segments, or use the pre-translation output as TM hits as you work
   through the file.

memoQ
------------------------------------------------------------------------

The recommended output format is MQXLIFF or TMX.

To populate target segments directly: Go to the Documents tab, click
Import, and select the MQXLIFF file downloaded from I'M TranslAID. The
filename must match the original MQXLIFF exported from your memoQ
project — memoQ uses the filename to match the bilingual file to the
existing document and update it in place. Target segments will be filled
with the corresponding pre-translation output.

If you want to preserve the original MQXLIFF untouched (for example, if
it contains comments, version history, or other metadata you do not want
overwritten), use the TMX fallback instead: import the TMX into your
project's TM and pre-translate from there.


========================================================================
SHUTTING DOWN
========================================================================

Recommended: click the Close App button (x) in the top right corner of
the browser. This shuts down the app cleanly and closes the terminal
window automatically.

Alternative: close the browser tab first, then close the terminal
window running the app.


========================================================================
FILES
========================================================================

python/         bundled Python runtime (do not modify)
static/         frontend (index.html)
app.py          application logic
generators.py   XML output generators
start.bat       launches the app
README.txt      this file
LICENSE         I'M TranslAID PTI End User Licence Agreement


========================================================================
LICENCE
========================================================================

This software is sold under a commercial End User Licence Agreement
(EULA).

In plain terms: your purchase entitles you to use this software on one
machine at a time, for your own work only. You may not share, copy,
redistribute, or resell it. The licence is tied to the original
purchaser. To move it to a new machine, deactivate it in Settings on
the old machine first, then activate it on the new one.

Full licence: https://imtranslaid.com/eula
Copyright (c) 2026 Viktor M. Takacs. All rights reserved.
