CoolFace
Apppublic

moebiusT7/book-ocr-studio

sourceHugging Faceagpl-3.0updated 2d agoView on Hugging Face
0likes
display_language.py36 linesDownload Raw Back to root
1"""Display legacy app messages in English without rewriting stored job records.2 3Only known application messages are translated. Book text and model responses4are not passed through this module.5"""6import json,re7from pathlib import Path8_MESSAGES=json.loads(Path(__file__).with_name('legacy_messages.json').read_text())9_TEMPLATES=[]10for old,new in _MESSAGES.items():11    fields=list(re.finditer(r'\{[^{}]+\}',old))12    if not fields:continue13    chunks=[];end=014    for field in fields:15        chunks.append(re.escape(old[end:field.start()]));chunks.append('(.+?)');end=field.end()16    chunks.append(re.escape(old[end:]))17    _TEMPLATES.append((re.compile(''.join(chunks)),[f.group() for f in fields],new))18 19def english_message(value):20    if not isinstance(value,str):return value21    for pattern,fields,replacement in _TEMPLATES:22        def replace(match):23            result=replacement24            for field,content in zip(fields,match.groups()):result=result.replace(field,content)25            return result26        value=pattern.sub(replace,value)27    for old,new in sorted(_MESSAGES.items(),key=lambda p:-len(p[0])):28        if '{' not in old:value=value.replace(old,new)29    return value30 31def diagnostic_display(value):32    if isinstance(value,dict):33        return {k:english_message(v) if k in {'reason','message','error'} else diagnostic_display(v) for k,v in value.items()}34    if isinstance(value,list):return [diagnostic_display(v) for v in value]35    return value36