Initialer Import des AssetManagers
This commit is contained in:
Executable
+31
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Check template/Python translation keys against BASE_TRANSLATIONS."""
|
||||
from pathlib import Path
|
||||
import ast, re, sys
|
||||
root=Path(__file__).resolve().parents[1]
|
||||
source=(root/'app'/'i18n.py').read_text(encoding='utf-8')
|
||||
tree=ast.parse(source)
|
||||
keys=set()
|
||||
for node in ast.walk(tree):
|
||||
if isinstance(node, ast.Dict):
|
||||
for key in node.keys:
|
||||
if isinstance(key, ast.Constant) and isinstance(key.value,str): keys.add(key.value)
|
||||
used=set()
|
||||
patterns=[re.compile(r"\bt\(\s*['\"]([^'\"]+)"),re.compile(r"_translate_request\([^,]+,\s*['\"]([^'\"]+)")]
|
||||
for path in list((root/'app').rglob('*.py'))+list((root/'app'/'templates').rglob('*.html')):
|
||||
text=path.read_text(encoding='utf-8',errors='replace')
|
||||
for pattern in patterns: used.update(pattern.findall(text))
|
||||
dynamic_prefixes=('field.','jobdefs.interpreter.','jobdefs.platform.','jobdefs.source.','jobs.action.','jobs.event.','jobs.type.','presence.','software.platform.','software.status.','backup.reason_')
|
||||
missing=sorted(k for k in used if k not in keys and '~' not in k and not k.startswith(dynamic_prefixes))
|
||||
jobdef_used=sorted(k for k in used if k.startswith('jobdefs.') and not k.endswith('.'))
|
||||
jobdef_missing=sorted(k for k in jobdef_used if k not in keys and not k.startswith(('jobdefs.interpreter.','jobdefs.platform.','jobdefs.source.')))
|
||||
if jobdef_missing:
|
||||
print('Missing jobdefs keys:')
|
||||
for key in jobdef_missing: print(' -',key)
|
||||
sys.exit(1)
|
||||
print(f'Defined translation keys: {len(keys)}')
|
||||
print(f'Statically referenced keys: {len(used)}')
|
||||
if missing:
|
||||
print('Legacy/static keys without BASE_TRANSLATIONS entry (warning):')
|
||||
for key in missing: print(' -',key)
|
||||
print('Job definition translation check passed.')
|
||||
Reference in New Issue
Block a user