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
-
Настройте
Translatorс путями к вашему фронтенду. -
Запустите воркер – он сам найдёт все строки в компонентах (включая JSX-тексты, атрибуты, вызовы
t()). -
Вставьте сгенерированный рантайм в
index.html:<script> // Результат t.build_frontend_runtime('ru') </script>
-
В компонентах используйте:
// Любой текст, обёрнутый в translateKey, будет автоматически переведён <h1>{window.autoI18n.translateKey('dashboard_welcome', 'Добро пожаловать')}</h1>
Или атрибут
data-i18n="dashboard_welcome"на любом элементе. -
Переключение языка:
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 |
Требования к доработке (ТЗ)
Чтобы библиотека работала полностью автоматически, необходимо:
- Улучшенный JSX-парсер – должен находить все текстовые узлы в JSX, атрибуты (
label,placeholder,title,aria-label), вызовыt()иtranslateKey()в любом синтаксисе (включая шаблонные строки и переменные). - Автоматическое обновление переводов – воркер должен пересканивать файлы при их изменении (watch mode) и переводить только новые/изменённые строки.
- Клиентский рантайм – должен уметь подгружать переводы по требованию (lazy loading) и работать с React без дополнительных обёрток.
- Поддержка динамических атрибутов –
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auto_i18n_lib-1.0.6.tar.gz.
File metadata
- Download URL: auto_i18n_lib-1.0.6.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f40baacee8a4058cc99b67281e3ed5845ab3859042ae6dbc33a502087c09017d
|
|
| MD5 |
998537b3cd36102ad3d7ce9f5096b3b5
|
|
| BLAKE2b-256 |
91caf4f72385ac42fb758c285600ea577064a7da976dbeb3cacced4f1c6277ea
|
File details
Details for the file auto_i18n_lib-1.0.6-py3-none-any.whl.
File metadata
- Download URL: auto_i18n_lib-1.0.6-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
356996c66c5637bd99ec9d05dc129b27b093a1248fe600915461a7fecc8011c4
|
|
| MD5 |
824d60305bdb404920385fc5306f8f4d
|
|
| BLAKE2b-256 |
4b427a2aa50c7c48c72e9cece65ca68a5d5c2cc8f9ae154190197c879c6a059a
|