You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.7 KiB

#!/usr/bin/env python3
"""
Script per tradurre una sezione alla volta dall'inglese all'italiano.
Questo approccio ottimizza l'uso dei token gestendo il contenuto in chunk più piccoli.
"""
import os
import sys
import json
from pathlib import Path
# Regole di traduzione e stile
TRANSLATION_INSTRUCTIONS = """
Traduci il seguente testo dall'inglese all'italiano seguendo queste linee guida:
1. STILE E TONO:
- Mantieni uno stile letterario elevato, adatto a un romanzo di fantascienza classico
- Usa un tono che rifletta l'epoca edoardiana dell'originale
- Preserva la solennità e il ritmo narrativo
2. TERMINI TECNICI E SCIENTIFICI:
- "atomic bombs""bombe atomiche"
- "aeroplanes""aeroplani"
- "Carolinum""Carolinio" (elemento immaginario)
- "inducive""induttivo"
- "degenerator""degeneratore"
3. NOMI E LUOGHI:
- Mantieni i nomi propri in inglese (Frederick Barnet, Holsten, etc.)
- I luoghi geografici vanno tradotti quando hanno una forma italiana standard
- Titoli militari: "Marshal""Maresciallo", "General""Generale"
4. FORMATTAZIONE:
- Mantieni tutti i marcatori markdown (##, ###, ecc.)
- Preserva i paragrafi e la struttura originale
- Non aggiungere note o commenti del traduttore
5. ADATTAMENTO CULTURALE:
- Adatta modi di dire e espressioni idiomatiche all'italiano
- Mantieni però il flavour britannico del testo originale
- Usa forme verbali appropriate al contesto narrativo
"""
def translate_section(section_file, output_file):
"""
Mostra le istruzioni per tradurre manualmente una sezione.
In futuro potrebbe essere integrato con un API di traduzione.
Args:
section_file: path del file della sezione da tradurre
output_file: path dove salvare la traduzione
"""
# Leggi il contenuto
with open(section_file, 'r', encoding='utf-8') as f:
content = f.read()
print(f"\n{'='*80}")
print(f"SEZIONE DA TRADURRE: {section_file}")
print(f"OUTPUT: {output_file}")
print(f"{'='*80}\n")
# Conta parole per stimare il lavoro
word_count = len(content.split())
print(f"Lunghezza: ~{word_count} parole\n")
print(TRANSLATION_INSTRUCTIONS)
print(f"\n{'='*80}\n")
print("CONTENUTO DA TRADURRE:")
print(f"\n{'-'*80}\n")
print(content)
print(f"\n{'-'*80}\n")
print("\nDopo aver tradotto il contenuto:")
print(f"1. Salva la traduzione in: {output_file}")
print("2. Verifica che la formattazione markdown sia preservata")
print("3. Rileggi per coerenza stilistica\n")
def batch_translate_directory(input_dir, output_dir):
"""
Prepara per la traduzione di tutte le sezioni in una directory.
Args:
input_dir: directory contenente le sezioni da tradurre
output_dir: directory dove salvare le traduzioni
"""
os.makedirs(output_dir, exist_ok=True)
# Trova tutti i file di sezione
section_files = sorted(Path(input_dir).glob("sezione_*.md"))
if not section_files:
print(f"Nessuna sezione trovata in {input_dir}")
return
print(f"\nTrovate {len(section_files)} sezioni da tradurre:")
for i, section_file in enumerate(section_files, 1):
output_file = Path(output_dir) / section_file.name
status = "✓ TRADOTTA" if output_file.exists() else "○ DA TRADURRE"
print(f"{i}. {section_file.name}{status}")
# Trova la prima sezione non ancora tradotta
for section_file in section_files:
output_file = Path(output_dir) / section_file.name
if not output_file.exists():
print(f"\n{'='*80}")
print("PROSSIMA SEZIONE DA TRADURRE:")
print(f"{'='*80}\n")
translate_section(str(section_file), str(output_file))
return
print("\n✓ Tutte le sezioni sono state tradotte!")
if __name__ == "__main__":
if len(sys.argv) == 3 and sys.argv[1] == "--batch":
# Modalità batch: mostra quale sezione tradurre
input_dir = sys.argv[2]
output_dir = input_dir.replace("_chapters/", "_tradotto/")
batch_translate_directory(input_dir, output_dir)
elif len(sys.argv) == 3:
# Modalità singola sezione
section_file = sys.argv[1]
output_file = sys.argv[2]
translate_section(section_file, output_file)
else:
print("Uso:")
print(" Singola sezione: python translate_section.py <input_file> <output_file>")
print(" Batch: python translate_section.py --batch <directory>")
print("\nEsempio:")
print(" python translate_section.py 'The World set Free_chapter02/sezione_01.md' 'tradotto/sezione_01.md'")
print(" python translate_section.py --batch 'The World set Free_chapter02'")
sys.exit(1)