Files
ware_house/locale_text.py
2026-05-22 14:25:09 +02:00

42 lines
1.2 KiB
Python

"""Localized UI text loader for the warehouse desktop application."""
from __future__ import annotations
import json
from functools import lru_cache
from pathlib import Path
_LOCALE_FILE = Path(__file__).with_name("locale.json")
@lru_cache(maxsize=1)
def load_locale_catalog() -> dict:
"""Load the locale catalog from JSON, returning a safe default on errors."""
try:
return json.loads(_LOCALE_FILE.read_text(encoding="utf-8"))
except Exception:
return {"default_language": "IT", "IT": {}, "ENG": {}}
def reload_locale_catalog() -> dict:
"""Clear the locale cache and reload the catalog from disk."""
load_locale_catalog.cache_clear()
return load_locale_catalog()
def text(key: str, *, language: str | None = None, catalog: dict | None = None, default: str = "") -> str:
"""Return the localized UI text for ``key`` with Italian fallback."""
data = catalog or load_locale_catalog()
lang = str(language or data.get("default_language") or "IT").upper()
texts = data.get(lang, {}) or {}
if key in texts:
return str(texts[key])
fallback = data.get("IT", {}) or {}
if key in fallback:
return str(fallback[key])
return str(default)