import zipfile
import json
import re
import os
input_zip = "archive.zip" # ИМЯ ВАШЕГО ZIP ФАЙЛА
output_zip = "to_translate.zip"
# Регулярное выражение для поиска текста внутри команды MESSAGE
# Ищет блоки текста внутри кавычек в MESSAGE (...)
message_re = re.compile(r'MESSAGE\s*\([^,]+,\s*"([^"]*)",\s*"([^"]*)"')
with zipfile.ZipFile(input_zip, 'r') as z_in, zipfile.ZipFile(output_zip, 'w') as z_out:
for file_info in z_in.infolist():
if file_info.filename.endswith('.txt'):
with z_in.open(file_info) as f:
content = f.read().decode('utf-8', errors='ignore')
matches = message_re.findall(content)
if not matches:
continue
data_dict = {}
for idx, (jp_text, en_text) in enumerate(matches, start=1):
# Берем английский текст как основу для перевода, если он есть
source_text = en_text if en_text.strip() else jp_text
if source_text.strip():
# Сохраняем под уникальным ключом строки
data_dict[f"msg_{idx}"] = source_text
if data_dict:
json_name = os.path.splitext(file_info.filename)[0] + '.json'
json_bytes = json.dumps(data_dict, ensure_ascii=False, indent=4).encode('utf-8')
z_out.writestr(json_name, json_bytes)
print("Готово! Скачайте архив to_translate.zip. Внутри чистый текст для перевода.")