Что такое TMX?
TMX (Translation Memory eXchange) — это открытый XML-стандарт, разработанный для обмена данными памяти переводов (TM) между различными CAT-системами и системами локализации. Разработанный LISA (Localization Industry Standards Association), TMX позволяет организациям обмениваться и переносить переводческие активы независимо от используемого программного обеспечения.
TMX стал фактическим стандартом для обмена TM и поддерживается практически всеми CAT-системами в индустрии.
Версии TMX
TMX 1.1 (1998)
Оригинальная спецификация, устанавливающая базовую структуру.
TMX 1.4 (2004)
Наиболее широко поддерживаемая версия:
- Улучшенная обработка метаданных
- Лучшая поддержка кодировок символов
- Расширенные свойства на уровне сегментов
- До сих пор наиболее распространённая версия в использовании
TMX 2.0 (черновик)
Предложенные обновления, которые не были завершены из-за роспуска LISA.
Структура TMX
Базовая структура
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header
creationtool="KTTC"
creationtoolversion="1.0"
datatype="plaintext"
segtype="sentence"
adminlang="en"
srclang="en"
o-tmf="KTTC"/>
<body>
<tu>
<tuv xml:lang="en">
<seg>Hello, world!</seg>
</tuv>
<tuv xml:lang="ru">
<seg>Привет, мир!</seg>
</tuv>
</tu>
</body>
</tmx>
Ключевые элементы
| Элемент | Описание |
|---|---|
<tmx> | Корневой элемент с атрибутом версии |
<header> | Метаданные о TM |
<body> | Контейнер для единиц перевода |
<tu> | Единица перевода (исходник + переводы) |
<tuv> | Вариант единицы перевода (один язык) |
<seg> | Фактический текст сегмента |
<prop> | Пользовательские свойства |
<note> | Комментарии и заметки |
Атрибуты заголовка
<header
creationtool="Название CAT-системы"
creationtoolversion="3.0"
datatype="plaintext"
segtype="sentence"
adminlang="en"
srclang="en-US"
o-tmf="native-format">
</header>
| Атрибут | Описание |
|---|---|
creationtool | Название создающего приложения |
creationtoolversion | Версия создающего приложения |
datatype | Тип данных (plaintext, html, xml и т.д.) |
segtype | Тип сегментации (sentence, paragraph, phrase) |
adminlang | Административный язык |
srclang | Код исходного языка |
o-tmf | Оригинальный формат TM |
Детали единицы перевода (TU)
Базовая TU
<tu tuid="001" creationdate="20241220T120000Z">
<tuv xml:lang="en">
<seg>Welcome to our platform.</seg>
</tuv>
<tuv xml:lang="ru">
<seg>Добро пожаловать на нашу платформу.</seg>
</tuv>
</tu>
TU с метаданными
<tu
tuid="002"
creationdate="20241220T120000Z"
creationid="translator1"
changedate="20241221T150000Z"
changeid="reviewer1"
lastusagedate="20241222T100000Z"
usagecount="5">
<prop type="domain">legal</prop>
<prop type="project">Перевод договора</prop>
<prop type="client">ООО Компания</prop>
<note>Одобрено юридическим отделом</note>
<tuv xml:lang="en">
<seg>This agreement shall be governed by...</seg>
</tuv>
<tuv xml:lang="ru">
<seg>Настоящее соглашение регулируется...</seg>
</tuv>
</tu>
Многоязычная TU
<tu tuid="003">
<tuv xml:lang="en">
<seg>Save</seg>
</tuv>
<tuv xml:lang="ru">
<seg>Сохранить</seg>
</tuv>
<tuv xml:lang="de">
<seg>Speichern</seg>
</tuv>
<tuv xml:lang="zh">
<seg>保存</seg>
</tuv>
</tu>
Встроенные элементы
TMX поддерживает встроенные элементы для сохранения форматирования:
Распространённые встроенные теги
| Тег | Назначение | Пример |
|---|---|---|
<bpt> | Начало парного тега | <bpt i="1"><b></bpt> |
<ept> | Конец парного тега | <ept i="1"></b></ept> |
<ph> | Плейсхолдер | <ph>{0}</ph> |
<it> | Изолированный тег | <it><br/></it> |
<hi> | Выделение | <hi>термин</hi> |
<ut> | Неизвестный тег | Для нераспознанной разметки |
Пример с форматированием
<tu>
<tuv xml:lang="en">
<seg>Click the <bpt i="1"><b></bpt>Save<ept i="1"></b></ept> button.</seg>
</tuv>
<tuv xml:lang="ru">
<seg>Нажмите кнопку <bpt i="1"><b></bpt>Сохранить<ept i="1"></b></ept>.</seg>
</tuv>
</tu>
Коды языков
TMX использует коды языков BCP 47 / ISO:
| Код | Язык |
|---|---|
| en | Английский (общий) |
| en-US | Английский (США) |
| en-GB | Английский (Великобритания) |
| ru | Русский |
| de | Немецкий (общий) |
| de-DE | Немецкий (Германия) |
| fr | Французский (общий) |
| zh-CN | Китайский (упрощённый) |
| zh-TW | Китайский (традиционный) |
| ja | Японский |
| ko | Корейский |
Лучшие практики
Создание файлов TMX
Используйте кодировку UTF-8
- Всегда указывайте
encoding="UTF-8" - Избегайте устаревших кодировок
- Всегда указывайте
Включайте метаданные
- Устанавливайте дату создания
- Включайте информацию о создателе
- Добавляйте свойства домена/проекта
Согласованные коды языков
- Используйте стандартные коды BCP 47
- Будьте последовательны с региональными вариантами
Валидируйте перед экспортом
- Проверяйте корректность XML
- Валидируйте по TMX DTD
Импорт TMX
Проверяйте кодировку
- Убедитесь, что кодировка файла соответствует объявлению
- Обрабатывайте BOM при наличии
Обрабатывайте дубликаты
- Определите стратегию разрешения дубликатов
- Учитывайте исходный текст + контекст
Сопоставляйте коды языков
- Обрабатывайте сопоставление вариантов (en vs en-US)
- Документируйте любые преобразования
Качество TMX
| Проблема | Решение |
|---|---|
| Ошибки кодировки | Конвертируйте в UTF-8 |
| Отсутствующие коды языков | Добавьте атрибуты xml:lang |
| Невалидный XML | Валидируйте и исправьте структуру |
| Дублирующиеся TU | Объединяйте или дедуплицируйте |
| Отсутствующие метаданные | Добавьте информацию в заголовок |
TMX vs другие форматы
TMX vs XLIFF
| Аспект | TMX | XLIFF |
|---|---|---|
| Назначение | Обмен TM | Локализация документов |
| Фокус | Пары сегментов | Полный рабочий процесс |
| Содержимое | Завершённые переводы | Работа в процессе |
| Метаданные | Специфичные для TM | Специфичные для процесса |
TMX vs TBX
| Аспект | TMX | TBX |
|---|---|---|
| Содержимое | Пары сегментов | Терминологические записи |
| Структура | Исходник + Перевод | Термины + определения |
| Применение | Повторное использование переводов | Согласованность терминологии |
Распространённые проблемы и решения
Кодировка символов
Проблема: Специальные символы отображаются некорректно. Решение: Обеспечьте кодировку UTF-8 и правильное экранирование XML.
<!-- Правильное экранирование -->
<seg>Цена: <100₽ & бесплатная доставка</seg>
Обработка больших файлов
Проблема: Файлы TMX слишком большие для обработки. Решения:
- Разделите по языковым парам
- Разделите по проектам/доменам
- Используйте потоковые XML-парсеры
Совместимость версий
Проблема: Разные инструменты поддерживают разные версии TMX. Решение: Экспортируйте как TMX 1.4b для максимальной совместимости.
FAQ
В чём разница между TMX и TM?
TM (Translation Memory) — это база данных переводов, тогда как TMX — это формат файла, используемый для экспорта и обмена этими данными между различными системами.
Может ли TMX хранить несколько языковых пар?
Да, один файл TMX может содержать переводы на нескольких языках. Каждая TU может иметь несколько элементов TUV для разных целевых языков.
Каков максимальный размер файла TMX?
Технического ограничения нет, но очень большие файлы (миллионы TU) могут вызвать проблемы с производительностью. Рекомендуется разбивать файлы больше 100 МБ.
Как конвертировать между версиями TMX?
Большинство CAT-систем автоматически обрабатывают конвертацию версий при импорте/экспорте. Для ручной конвертации убедитесь, что все необходимые элементы присутствуют для целевой версии.
TMX всё ещё отраслевой стандарт?
Да, TMX 1.4b остаётся наиболее широко поддерживаемым форматом для обмена TM. Хотя XLIFF используется для проектных файлов, TMX является стандартом для обмена данными TM.
Может ли TMX сохранять форматирование?
Да, с использованием встроенных элементов (bpt, ept, ph, it) для представления тегов форматирования. Однако конкретная обработка варьируется между CAT-системами.
