Консольная утилита на 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