translate-xlf
v1.0.1
Published
Автоматический переводчик файлов локализации в формате XLF (XML Localization Interchange File Format) с использованием Google Translate API.
Downloads
215
Readme
Переводчик XLF файлов
Автоматический переводчик файлов локализации в формате XLF (XML Localization Interchange File Format) с использованием Google Translate API.
Описание
Скрипт предназначен для автоматического перевода XLF файлов, используемых в Angular приложениях для интернационализации. Скрипт:
- Автоматически находит и обрабатывает все XLF файлы в текущей директории
- Определяет целевой язык из имени файла (например,
messages.en.xlf→ языкen) - Переводит тексты из
<source>в<target>элементы - Сохраняет XML теги (
<x>) в переведенном тексте - Поддерживает многострочные теги
<source>и<target> - Сохраняет форматирование и отступы исходного файла
- Не изменяет элементы со статусом
state="translated" - Использует батч-обработку для ускорения перевода
- Поддерживает исключение определенных языков из обработки
Требования
- Node.js (версия 12 или выше)
- Доступ к интернету (для запросов к Google Translate API)
Установка
Скрипт не требует установки дополнительных зависимостей, использует только встроенные модули Node.js (fs и https).
Использование
Базовый синтаксис
translate-xlf [опции]Скрипт автоматически находит все XLF файлы в текущей директории и переводит их. Язык назначения определяется из имени файла (сегмент перед расширением .xlf).
Опции
--from=XX- код исходного языка (по умолчанию:ru)--exclude=XX,YY- исключить языки из обработки (через запятую, без пробелов)--keep-state- сохраняет исходное значение атрибутаstateв<target>элементах (по умолчанию меняет наtranslated)--batch-size=N- размер батча для параллельной обработки (по умолчанию:5)--help,-h- показать справку
Переменные окружения
MAX_ELEMENTS- ограничение количества элементов для перевода (полезно для тестирования)
Как определяется язык
Скрипт извлекает язык из имени файла по шаблону *.XX.xlf, где XX - код языка:
messages.en.xlf→ языкenmessages.tg.xlf→ языкtgmessages.xlf→ файл без языка, будет пропущен
Примеры
Автоматический перевод всех файлов
translate-xlfПереведет все XLF файлы в текущей директории с русского (по умолчанию) на языки, указанные в именах файлов.
Исключение определенных языков
translate-xlf --exclude=en,hyПереведет все файлы, кроме английского и армянского.
Перевод с сохранением исходного state
translate-xlf --keep-stateПереведет все файлы с сохранением исходного значения state (например, new останется new).
Перевод с увеличенным размером батча
translate-xlf --batch-size=10Увеличит размер батча до 10 элементов для более быстрой обработки.
Комбинация параметров
translate-xlf --from=ru --exclude=en --keep-state --batch-size=10Переведет все файлы с русского, исключая английский, с сохранением state и размером батча 10.
Тестирование на ограниченном количестве элементов
MAX_ELEMENTS=50 translate-xlfПереведет только первые 50 элементов каждого файла для тестирования.
Коды языков
Используйте стандартные двухбуквенные коды ISO 639-1:
ru- русскийen- английскийtr- турецкийka- грузинскийhy- армянскийkk- казахскийky- киргизский- и другие...
Полный список кодов: ISO 639-1
Особенности работы
Обработка XML тегов
Скрипт автоматически извлекает XML теги вида <x id="..." ctype="..."/> из текста перед переводом и восстанавливает их после перевода. Это позволяет сохранять разметку в переведенном тексте.
Многострочные теги
Скрипт корректно обрабатывает многострочные теги <source> и <target>, сохраняя форматирование и отступы исходного файла.
Защита переведенных элементов
Элементы со статусом state="translated" не изменяются скриптом. Переводятся только:
- Элементы без
<target> - Элементы с
state="new" - Элементы, где
targetравенsource(не переведено)
Батч-обработка
Скрипт использует параллельную обработку элементов для ускорения перевода. По умолчанию обрабатывается 5 элементов одновременно. Размер батча можно настроить через параметр --batch-size.
Повторные попытки
При ошибке перевода скрипт автоматически повторяет попытку до 2 раз с задержкой в 1 секунду.
Ограничения
- Скрипт использует публичный API Google Translate, который может иметь ограничения по количеству запросов
- Рекомендуется использовать задержку между запросами (по умолчанию 100ms) для избежания блокировок
- При больших объемах перевода может потребоваться увеличение размера батча или уменьшение задержки
Структура XLF файла
Скрипт работает с файлами в формате XLF 1.2:
<?xml version="1.0" encoding="utf-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="ru" target-language="tr">
<body>
<trans-unit id="123">
<source>Исходный текст</source>
<target state="new">Переведенный текст</target>
</trans-unit>
</body>
</file>
</xliff>Обработка ошибок
При ошибке перевода элемента:
- Скрипт записывает
[ОШИБКА ПЕРЕВОДА]перед исходным текстом - Продолжает обработку остальных элементов
- В конце выводит статистику успешно переведенных элементов
Лицензия
Скрипт предоставляется "как есть" без каких-либо гарантий.
