Files
2026-11-04 08:55:53 +01:00

35 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python3
"""Build src/web/i18n/pl.json from scripts/i18n/pl_messages.py and report
UI strings that have no Polish translation."""
import json, re, sys
from pathlib import Path
root = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(Path(__file__).parent))
import pl_messages as pl # noqa: E402
src = "".join((root / "src/web/js" / f).read_text() for f in ("00-core.js", "10-pages.js"))
keys = set(m.group(1).replace("\\'", "'") for m in re.finditer(r"\bte?\(\s*'((?:[^'\\]|\\.)*)'", src))
for m in re.finditer(r"\['\w+', '([^']+)', '(Management|Services|Account|Mailbox)'", src):
keys.update(m.groups())
for m in re.finditer(r"(?:STATUS_LABELS|STATUS_HINTS|INTERVAL_LABELS) = \{([^}]*)\}", src):
keys.update(re.findall(r":\s*'([^']+)'", m.group(1)))
for m in re.finditer(r"(?:showToast\(|message: )'((?:[^'\\]|\\.)*)'", src):
keys.add(m.group(1))
messages = {**pl.SERVER, **pl.UI}
missing = sorted(k for k in keys if k not in messages)
catalog = {
"language": "pl",
"messages": dict(sorted(messages.items())),
"patterns": [{"match": m, "replace": r} for m, r in pl.PATTERNS],
}
(root / "src/web/i18n/pl.json").write_text(json.dumps(catalog, ensure_ascii=False, indent=1) + "\n")
(root / "src/web/i18n/en.json").write_text(json.dumps({"language": "en", "messages": {}, "patterns": []}, indent=1) + "\n")
print(f"pl.json: {len(messages)} messages, {len(pl.PATTERNS)} patterns")
if missing:
print("MISSING translations:")
for k in missing:
print(" ", k)
sys.exit(1)