Skip to main content

auto-i18n-lib

Автоматическая библиотека для перевода интерфейсов без ручного сбора строк.


Что содержит библиотека

  • Класс Translator – публичное API для рендеринга и управления переводом.
  • Воркер – фоновый процесс, который:
    • сканирует указанные файлы и папки (HTML, JS/JSX/TSX, UI-словари),
    • извлекает все тексты интерфейса,
    • переводит их через OpenAI,
    • сохраняет в JSON-кэш,
    • обновляет переводы при изменении кода.
  • Парсеры для HTML, JSX/TSX, UI-словарей (рекурсивный обход).
  • Клиентский рантайм – готовый JavaScript с функциями translateKey() и setLanguage() для динамического перевода DOM.
  • Storage – атомарное управление кэшем и очередями.

Что выполняет библиотека

  • В фоне – автоматически находит все строки в проекте, переводит на целевые языки, поддерживает кэш актуальным.
  • При рендеринге – методы translate_html, translate_dict, translate_key мгновенно отдают готовые переводы из локального кэша (без синхронных вызовов OpenAI).
  • На клиенте – смена языка подгружает новый JSON и перерисовывает интерфейс без перезагрузки страницы.

Быстрый старт

from autoi18n import Translator

t = Translator(
    api_key="YOUR_OPENAI_API_KEY",
    source_lang="ru",
    target_langs=["en", "uk", "az", "tr"],
    # Пути для сканирования
    js_globs=["frontend/src/**/*.{js,jsx,tsx}"],
    html_globs=["templates/**/*.html"],
)

# Запустить воркер (один раз или в фоновом потоке)
t.run_translation_loop(interval=300)  # каждые 5 минут

Методы рендеринга

Метод Назначение
translate_html(html, target_lang, page_name) Переводит готовый HTML (текст и атрибуты).
translate_dict(page_name, dict_name, source_dict, target_lang) Переводит вложенный словарь (UI).
translate_key(key, lang, default, dict_name) Возвращает перевод бэкенд-фразы по ключу.
register_keys(items, dict_name) Регистрирует исходные бэкенд-фразы.
build_frontend_runtime(lang) Генерирует JS-рантайм для клиента.

Пример интеграции с React

  1. Настройте Translator с путями к вашему фронтенду.

  2. Запустите воркер – он сам найдёт все строки в компонентах (включая JSX-тексты, атрибуты, вызовы t()).

  3. Вставьте сгенерированный рантайм в index.html:

    <script>
    // Результат t.build_frontend_runtime('ru')
    </script>
    
  4. В компонентах используйте:

    // Любой текст, обёрнутый в translateKey, будет автоматически переведён
    <h1>{window.autoI18n.translateKey('dashboard_welcome', 'Добро пожаловать')}</h1>
    

    Или атрибут data-i18n="dashboard_welcome" на любом элементе.

  5. Переключение языка:

    window.autoI18n.setLanguage('en');
    

Переменные окружения

Переменная Описание
OPENAI_API_KEY Обязательный API‑ключ
SOURCE_LANG Исходный язык (по умолчанию ru)
AUTO_I18N_TARGET_LANGS Целевые языки через запятую
AUTO_I18N_JS_GLOBS Glob-паттерны для JS/JSX (JSON-массив)
AUTO_I18N_HTML_GLOBS Glob-паттерны для HTML
AUTO_I18N_CACHE_DIR Папка для кэша (по умолчанию ./cache)
AUTO_I18N_DYNAMIC_DOM_ENABLED Включить MutationObserver

Требования к доработке (ТЗ)

Чтобы библиотека работала полностью автоматически, необходимо:

  1. Улучшенный JSX-парсер – должен находить все текстовые узлы в JSX, атрибуты (label, placeholder, title, aria-label), вызовы t() и translateKey() в любом синтаксисе (включая шаблонные строки и переменные).
  2. Автоматическое обновление переводов – воркер должен пересканивать файлы при их изменении (watch mode) и переводить только новые/изменённые строки.
  3. Клиентский рантайм – должен уметь подгружать переводы по требованию (lazy loading) и работать с React без дополнительных обёрток.
  4. Поддержка динамических атрибутовdata-i18n должен работать для любых атрибутов, а не только для текста.

Лицензия

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auto_i18n_lib-1.0.2.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

auto_i18n_lib-1.0.2-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file auto_i18n_lib-1.0.2.tar.gz.

File metadata

  • Download URL: auto_i18n_lib-1.0.2.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for auto_i18n_lib-1.0.2.tar.gz
Algorithm Hash digest
SHA256 75b2493f904945c93e4a168b0776179e46e2b19e29fce72bdc7b2f416fc75d46
MD5 1337d65de213c4ce194d780eb60902c6
BLAKE2b-256 4deb8552bbf3d7d14e3a4c7c77fb2ac7474a1060c2ce70dba3b4dd2d70d1033f

See more details on using hashes here.

File details

Details for the file auto_i18n_lib-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: auto_i18n_lib-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for auto_i18n_lib-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9a1555606b93b92b1af8f1aeaedb3f1bebba3384cc9b00c3920bc76acf16d6e8
MD5 3f12ee1f841460f60c8794ad32310735
BLAKE2b-256 abd5a30884bfd13d7bf8408b20b9ed5f4e2765f466bfdc2632a69b6e1603576d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page