No he usado Microsoft Translate, así que en ese aspecto estás por delante de mí, aunque sospecho que, en teoría, los métodos serían los mismos.
Me gusta tu idea de analizar los saltos de párrafo, aunque no estoy seguro de asumir que todos los documentos tengan un final de línea CR/LF. Unix utiliza solo el carácter LF, Mac solo el carácter CR y Windows utiliza ambos. Otros documentos podrían usar un byte nulo como carácter de fin de línea.
Unicode presenta sus propios problemas, ya que cada carácter tiene dos bytes de longitud.
Posible solución: Analizar el final de línea en la primera o dos primeras oraciones, almacenarlo como un valor y luego convertir todos los finales de línea a “\n” antes de analizar el documento. Una vez completado el documento, se podría restablecer automáticamente al final de línea correcto.
Un método sería escanear hacia adelante hasta llegar a 10.000 palabras y luego escanear hacia atrás en busca de un salto de párrafo. Colocar un puntero de inicio al comienzo del bloque actual, escanear hacia adelante y, al encontrar el último salto de párrafo antes de las 10.000 palabras, colocar un puntero de final. Extraer ese bloque, traducirlo, moverlo al documento de resultado, mover el puntero de inicio a la posición del puntero de final y continuar.
==============================
Por cierto, el software de traducción puede ser pésimo, ya que a menudo la traducción es extremadamente sensible al contexto, contiene jerga o utiliza terminología especializada. Del mismo modo, los términos técnicos o palabras específicas de un oficio o habilidad en particular, que en muchos casos no deberían traducirse, se deforman horriblemente. Los documentos legales, médicos y de ingeniería/técnicos son casos clásicos.
Envié un documento médico complejo (el informe quirúrgico de una cirugía cerebral de alguien) a través de dos traductores diferentes: Google y Yandex, intentando traducirlo al ruso. ¡El resultado de ambas traducciones se parecía más a una lasaña mala que a un documento legible!