Консольная утилита на Node.js для Angular-приложений на нескольких языках. Переводит файлы локализации XLF через Google Translate одной командой: npx translate-xlf --from=ru. Задача: каждая новая строка интерфейса должна попасть во все файлы перевода — messages.en.xlf, messages.tr.xlf, messages.kk.xlf и дальше по списку. Вручную это долгое копирование, а платная платформа локализации ради черновых переводов — лишняя подписка и интеграция. Сложность в формате: внутри строк Angular оставляет теги , и обычный переводчик их теряет или портит. Что умеет утилита: - берёт язык из имени файла: messages.tr.xlf переводится на турецкий; - прячет теги перед переводом и возвращает их на место после; - правит файл построчно: отступы сохраняются, в диффе видны только новые переводы; - не трогает готовые переводы со статусом translated и final; - шлёт запросы пачками и повторяет неудачные, а непереведённую строку помечает и переводит при следующем запуске; - один файл без внешних зависимостей, ключ Google Cloud не нужен. Когда Google начал отвечать на запросы утилиты ошибкой 429, я нашёл причину в TLS-рукопожатии: Node не отправлял расширение ALPN. Исправил это в версии 1.0.3. Результат: утилита опубликована в npm и на GitHub. Новый язык в приложении — это новый файл и один запуск. Машинный перевод остаётся черновиком для вычитки, но ручное копирование строк уходит.
https://github.com/yardim/translate-xlf