A brief introduction to TMX: What is a TMX file and what is it used for?
File Extensions | .tmx |
API Extension | tmx |
Import | Yes |
Export | Yes |
Pluralization supported? | No |
Descriptions supported? | Yes |
TMX is short for Translation Memory Exchange. It is an XML-based file used by CAT-tools for the storage, update, and exchange of translated paired strings. Although different CAT-tools may vary in their default file formats for Translation Memory, generally they all support TMX files. You may convert your CAT-tool specific Translation Memory Files to a TMX, or import external TMXs to expand your TM database. In this sense, TMX is the industry-standard file format for Translation Memory Management.
Code Sample
<?xml version="1.0" encoding="UTF-8"?>
<tmx version="1.4">
<header creationtool="phraseapp.com" datatype="PlainText" segtype="paragraph" adminlang="en-US" srclang="de-DE" creationdate="2018-06-11 05:09:06 UTC" o-encoding="utf8"/>
<body>
<tu tuid="boolean_key" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>--- true
</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>--- true
</seg>
</tuv>
</tu>
<tu tuid="empty_string_translation" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg/>
</tuv>
<tuv xml:lang="en-GB">
<seg/>
</tuv>
</tu>
<tu tuid="key_with_description" datatype="Text">
<note>This is the proper description for that key!</note>
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Dieser Key hat eine Beschreibung!</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>This key has a description!</seg>
</tuv>
</tu>
<tu tuid="key_with_line-break" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Diese Übersetzung hat
einen Zeilenumbruch.</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>This translations contains
a line-break.</seg>
</tuv>
</tu>
<tu tuid="nested.deeply.key" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Ich bin ein tief verschachtelter Key</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>I'm a deeply nested key.</seg>
</tuv>
</tu>
<tu tuid="nested.key" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Dieser Key ist innerhalb eines Namensraumes verschachtelt.</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>This key is nested inside a namespace.</seg>
</tuv>
</tu>
<tu tuid="null_translation" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg/>
</tuv>
<tuv xml:lang="en-GB">
<seg/>
</tuv>
</tu>
<tu tuid="pluralized_key_one" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Es wurde nur ein Hund gefunden.</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>Only one dog was found.</seg>
</tuv>
</tu>
<tu tuid="pluralized_key_other" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Hey, du hast %s Hunde!</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>Hey, you have %s dogs!</seg>
</tuv>
</tu>
<tu tuid="pluralized_key_zero" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Du hast keine Hunde.</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>You have no dogs.</seg>
</tuv>
</tu>
<tu tuid="sample_collection" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>---
- erstes Item
- zweites Item
</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>---
- first item
- second item
- third item
</seg>
</tuv>
</tu>
<tu tuid="simple_key" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Einfacher Key, einfache Nachricht./seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>Simple key, simple message.</seg>
</tuv>
</tu>
<tu tuid="unverified_key" datatype="Text">
<prop type="x-Project">Project</prop>
<tuv xml:lang="de-DE">
<seg>Diese Übersetzung ist noch nicht bestätigt aber wartet drauf!</seg>
</tuv>
<tuv xml:lang="en-GB">
<seg>This translation is not yet verified but is waiting for it. (At least in some formats we also export this status)</seg>
</tuv>
</tu>
</body>
</tmx>
More information