npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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 → язык en
  • messages.tg.xlf → язык tg
  • messages.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>

Обработка ошибок

При ошибке перевода элемента:

  • Скрипт записывает [ОШИБКА ПЕРЕВОДА] перед исходным текстом
  • Продолжает обработку остальных элементов
  • В конце выводит статистику успешно переведенных элементов

Лицензия

Скрипт предоставляется "как есть" без каких-либо гарантий.