Перевод не возобновляем: --all переводит все главы заново, механизм progress не работает

This commit is contained in:
chesirecatt
2026-08-21 17:36:10 +03:00
parent a21a4d713b
commit 7ed6e500ca
3 changed files with 54 additions and 7 deletions
+16 -5
View File
@@ -148,9 +148,15 @@ def run_translator(repo, workdir, extracted, workers):
sys.exit("book_translator завершился с кодом %d" % r.returncode)
# Доля от длины оригинала, ниже которой перевод считается мусором. Совпадение
# числа абзацев ничего не гарантирует: модель иногда возвращает на длинный абзац
# огрызок вида «, v», и прежние ворота такое пропускали.
MIN_LEN_SHARE = 0.25
def rebuild(src, chapters, workdir, out):
lines = src.read_text(encoding="utf-8").splitlines()
broken = missing = translated = 0
broken = missing = translated = junk = 0
for n, ch in enumerate(chapters):
f = workdir / "translations" / ("chapter_%03d_translated.json" % n)
if not f.exists():
@@ -162,15 +168,20 @@ def rebuild(src, chapters, workdir, out):
% (n, len(paragraphs), len(ch)))
missing += len(ch)
continue
for (idx, tag, attrs, _), text in zip(ch, paragraphs):
for (idx, tag, attrs, original), text in zip(ch, paragraphs):
plain_src = re.sub("<[^>]+>", "", original)
if len(plain_src) > 120 and len(text) < max(20, len(plain_src) * MIN_LEN_SHARE):
junk += 1
lines[idx] = "<%s%s>%s</%s>" % (tag, attrs, original, tag)
continue # оставляем оригинал: английский абзац лучше огрызка
body, ok = from_marks(text)
broken += not ok
translated += 1
lines[idx] = "<%s%s>%s</%s>" % (tag, attrs, body, tag)
out.write_text("\n".join(lines) + "\n", encoding="utf-8")
print("переведено блоков: %d, без перевода: %d, разметка потеряна в %d"
% (translated, missing, broken))
return missing == 0
print("переведено блоков: %d, без перевода: %d, разметка потеряна в %d, "
"огрызков заменено оригиналом: %d" % (translated, missing, broken, junk))
return missing == 0 and junk * 200 <= translated
def verify_output(out, target):