Non ho mai usato Microsoft Translate, quindi sei avanti a me su questo punto, anche se sospetto che in teoria i metodi sarebbero gli stessi.
Mi piace la tua idea di analizzare i salti di paragrafo, anche se non sono sicuro che ogni documento abbia una fine riga CR/LF. Unix usa solo il carattere LF, Mac usa solo il carattere CR e Windows usa entrambi. Altri documenti potrebbero usare un byte nullo come carattere di fine riga.
Unicode presenta i suoi problemi, dato che ogni carattere è lungo due byte.
Possibile soluzione: Analizzare la fine riga nelle prime una o due frasi, memorizzarla come valore e poi convertire tutte le fine riga in “\n” prima di analizzare il documento. Una volta completato il documento, si potrebbe ripristinare automaticamente la fine riga corretta.
Un metodo consisterebbe nell’analizzare in avanti fino a raggiungere 10.000 parole e poi analizzare all’indietro alla ricerca di un salto di paragrafo. Posizionare un puntatore di testa all’inizio del blocco corrente, analizzare in avanti e, quando si trova l’ultimo salto di paragrafo prima delle 10.000 parole, posizionare un puntatore di coda. Ritagliare quel blocco, tradurlo, spostarlo nel documento di risultato, spostare il puntatore di testa alla posizione del puntatore di coda e continuare.
==============================
A margine, il software di traduzione può essere terribile perché spesso la traduzione è fortemente sensibile al contesto, contiene slang o utilizza gergo. Allo stesso modo, i termini tecnici o le parole specifiche di un determinato mestiere o abilità che non dovrebbero essere tradotte in molti casi vengono distorti in modo orribile. Documenti legali, medici e ingegneristici/tecnici sono classici esempi.
Ho inviato un documento medico complesso (il referto operatorio per un intervento chirurgico al cervello di qualcuno) attraverso due traduttori diversi: Google e Yandex, tentando di tradurlo in russo. Il risultato di entrambe le traduzioni era più simile a una lasagna cattiva che a un documento leggibile!