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
Release files for auto-i18n-lib 1.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| auto_i18n_lib-1.1.5.tar.gz | 23.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_i18n_lib-1.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.1 kB
Release files / auto_i18n_lib-1.1.5.tar.gz
| Download URL | auto_i18n_lib-1.1.5.tar.gz |
|---|---|
| Size | 23.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
43ccd44560acb6fe31a6a5084a83306c5e015b704e766436ceb2e828df689f62
|
|
BLAKE2b-256 checksum How to use checksums |
19115585a387b04dba09b53a84b10274d97c4fb7eabf5855095c2fc3af674d43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|
Release files / auto_i18n_lib-1.1.5-py3-none-any.whl
| Download URL | auto_i18n_lib-1.1.5-py3-none-any.whl |
|---|---|
| Size | 27.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cff9cc6849f870deef29033ee04f94f00d3e57690102ce59891407ec1e159996
|
|
BLAKE2b-256 checksum How to use checksums |
ec333325a9e965cee0309e4027dcc97a4832e6fce1989e47c57407a8e1a535ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|