Skip to content

Commit 6a5e0b3

Browse files
committed
refonte: consolider i18n engines et nettoyer le depot
- ajoute un mode de traduction simple pour engines via engine_translate - conserve la compatibilite apply_i18n et synchronisation automatique - met a jour la documentation engines sur les deux approches i18n - inclut le nettoyage global des fichiers retires
1 parent 6e7189e commit 6a5e0b3

54 files changed

Lines changed: 146 additions & 13646 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 0 additions & 81 deletions
This file was deleted.

.pre-commit-config.yaml

Lines changed: 0 additions & 57 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 0 additions & 27 deletions
This file was deleted.

CODEOWNERS

Lines changed: 0 additions & 6 deletions
This file was deleted.

CODE_OF_CONDUCT.md

Lines changed: 0 additions & 93 deletions
This file was deleted.

CONTRIBUTING.md

Lines changed: 0 additions & 36 deletions
This file was deleted.

EngineLoader/registry.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ def _debug_log(level: str, fr: str, en: str) -> None:
278278
engine = create(eid)
279279
# Keep instance for later interactions (i18n, etc.)
280280
_INSTANCES[eid] = engine
281+
try:
282+
_sync_engine_sdk_i18n(gui, eid, engine, getattr(gui, "_tr", None))
283+
except Exception:
284+
pass
281285
res = getattr(engine, "create_tab", None)
282286
if not callable(res):
283287
continue
@@ -307,6 +311,7 @@ def _debug_log(level: str, fr: str, en: str) -> None:
307311
# Apply engine i18n immediately if GUI already has active translations
308312
try:
309313
tr = getattr(gui, "_tr", None)
314+
_sync_engine_sdk_i18n(gui, eid, engine, tr)
310315
fn = getattr(engine, "apply_i18n", None)
311316
if callable(fn) and isinstance(tr, dict):
312317
fn(gui, tr)
@@ -362,6 +367,7 @@ def apply_translations(gui, tr: dict) -> None:
362367
try:
363368
for eid, inst in list(_INSTANCES.items()):
364369
try:
370+
_sync_engine_sdk_i18n(gui, eid, inst, tr)
365371
fn = getattr(inst, "apply_i18n", None)
366372
if callable(fn) and isinstance(tr, dict):
367373
fn(gui, tr)
@@ -446,6 +452,47 @@ def get_instance(eid: str) -> Optional[CompilerEngine]:
446452
return None
447453

448454

455+
def _engine_package_name(inst: CompilerEngine) -> str:
456+
try:
457+
mod = inst.__class__.__module__
458+
if isinstance(mod, str) and "." in mod:
459+
return mod.rsplit(".", 1)[0]
460+
return str(mod)
461+
except Exception:
462+
return ""
463+
464+
465+
def _sync_engine_sdk_i18n(gui, eid: str, inst: CompilerEngine, tr: Optional[dict]) -> None:
466+
"""Populate engine_sdk simple-translate registry for engine plugins."""
467+
try:
468+
from engine_sdk.i18n import (
469+
register_engine_translations,
470+
set_engine_i18n_context,
471+
)
472+
except Exception:
473+
return
474+
475+
try:
476+
set_engine_i18n_context(gui, tr if isinstance(tr, dict) else None)
477+
except Exception:
478+
pass
479+
480+
try:
481+
pkg = _engine_package_name(inst)
482+
if not pkg:
483+
return
484+
code = resolve_language_code(gui, tr if isinstance(tr, dict) else None)
485+
lang = load_engine_language_file(pkg, code)
486+
if isinstance(lang, dict) and lang:
487+
register_engine_translations(eid, lang)
488+
try:
489+
register_engine_translations(str(eid).lower(), lang)
490+
except Exception:
491+
pass
492+
except Exception:
493+
pass
494+
495+
449496
def create(eid: str) -> CompilerEngine:
450497
cls = get_engine(eid)
451498
if not cls:

0 commit comments

Comments
 (0)