Data format

QTS converter

A Qt Linguist translation source — catalogued here as .qts — is the XML file a Qt application is translated in: a <TS> document holding <context> groups, each containing <message> elements that pair a <source> string with its <translation>. Qt names these files .ts, which collides with TypeScript, so Novus Convert recognises them by the .qt.ts suffix and files them under .qts to keep the two apart.

Private for supported formats — processed in your browser

Convert supported files

Runs on your device

Drop QTS files here

Batch files can each use a different output. Nothing uploads for local conversions.

Working inputs include camera RAW, browser-local audio/video, PDF, CBZ/CBR comics, office documents, ebooks, markup, 3D models, structured text, images, and archives.

Where QTS comes from

Qt Linguist and its .ts format have shipped with Qt since the 1990s, built around a three-tool cycle: lupdate scans source for tr() calls, Linguist provides the translator interface, and lrelease compiles the result into a compact binary .qm the application loads at runtime. Grouping messages by C++ class name — the context — was a pragmatic choice that gives translators more situational information than a flat catalog does.

How QTS works

  • The root <TS> element carries a version and the target language; <context> groups messages under a <name>, conventionally the class that contains them.
  • Each <message> pairs <source> with <translation>; the source text is the key, so identical strings in different contexts stay distinct.
  • A translation element carries a type attribute — unfinished or vanished — which is how review state and obsolete strings are tracked.
  • <location filename= line=> elements record where each string came from, which lupdate refreshes on every scan.
  • Plurals use numerus messages with multiple numerusform children, selected by the target language's rules.
  • The .ts file is the editable source; .qm is the compiled runtime artefact.

When to use QTS

  • Translating a Qt or KDE desktop application
  • Reviewing translation state, since unfinished entries are explicitly marked
  • Moving Qt translations into XLIFF for a vendor that does not support Linguist
  • Recovering strings from a Qt project into a cross-platform catalog

Strengths and limitations

Strengths

  • Context grouping gives translators genuine information about where a string appears
  • Review state and obsolete strings are typed attributes, not conventions
  • Source locations make any string traceable back to its line of code

Limitations

  • The .ts extension collides with TypeScript, which breaks naive tooling constantly
  • Effectively confined to the Qt ecosystem
  • Keying on source text carries the same fragility as gettext

Compatibility

Qt Linguist, Qt Creator and KDE's Lokalize read .ts natively, and the larger translation platforms support it. Elsewhere it is rarely recognised — and the extension collision means generic tools frequently mistake it for TypeScript. Novus Convert keys entries on the source text, rejects documents with a doctype or custom entities, and converts to and from the other localization formats.

Source strings and translations are preserved, keyed on the source text. Context grouping, source locations, the unfinished/vanished state attribute and numerus plural forms are not represented in flat catalog targets.