Initial commit: 25 scripts Python sauvegardés
Date: 2026-08-28 11:43:34 EDT
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# i18n Audit Scripts
|
||||
|
||||
Helper Python scripts for auditing ObsiGate i18n coverage.
|
||||
|
||||
## audit_french_in_html.py
|
||||
|
||||
Scans index.html for French text without data-i18n:
|
||||
|
||||
```python
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
html = Path("frontend/index.html").read_text(encoding="utf-8")
|
||||
lines = html.split("\n")
|
||||
|
||||
for i, line in enumerate(lines, 1):
|
||||
if 'data-i18n' in line:
|
||||
continue
|
||||
# Find text between tags with French chars
|
||||
texts = re.findall(r'>([^<>{}\n]{4,80})<', line)
|
||||
for t in texts:
|
||||
if any(c in t for c in 'éèêëàâùûôîïçÉÈÊËÀ'):
|
||||
print(f"L{i}: {t.strip()[:120]}")
|
||||
```
|
||||
|
||||
## audit_en_fr_mismatch.py
|
||||
|
||||
Finds untranslated keys (EN == FR) and French chars in EN values:
|
||||
|
||||
```python
|
||||
import json
|
||||
|
||||
en = json.load(open("frontend/locales/en.json"))
|
||||
fr = json.load(open("frontend/locales/fr.json"))
|
||||
|
||||
identical = []
|
||||
french_in_en = []
|
||||
|
||||
for k in en:
|
||||
ev = en[k]; fv = fr.get(k, "")
|
||||
if isinstance(ev, str) and isinstance(fv, str):
|
||||
if ev == fv and len(ev) > 3 and not ev.startswith('<'):
|
||||
identical.append((k, ev))
|
||||
if any(c in ev for c in 'éèêëàâùûôîïçÉÈÊËÀ'):
|
||||
french_in_en.append((k, ev))
|
||||
|
||||
print(f"Identical EN=FR: {len(identical)}")
|
||||
print(f"French chars in EN: {len(french_in_en)}")
|
||||
```
|
||||
Reference in New Issue
Block a user