Cum să traduci un fișier TXT mare: codificare, capitole și întreruperi de rând
Remediază codificarea, marchează capitolele și desfă întreruperile de rând forțate înainte de a traduce un fișier .txt lung. Cu fișiere exemplu, un verificator gratuit și un test cu 9 rulări.

Pentru a traduce un fișier TXT mare, pregătește trei lucruri înainte de a-l încărca oriunde. În primul rând, asigură-te că textul este decodificat corect și salvează-l ca UTF-8. În al doilea rând, pune fiecare titlu de capitol pe propria linie, cu o linie goală înainte și după. În al treilea rând, dacă fișierul rupe rândurile la o lățime fixă, unește acele rânduri astfel încât fiecare paragraf să fie o singură linie, cu o linie goală între paragrafe. Apoi traduce întregul fișier și, după aceea, compară numărul de paragrafe și de capitole dintre sursă și traducere.
Un fișier text simplu nu are stiluri, titluri sau metadate. Tot ce știe un instrument de traducere despre structura sa provine din octeți și din întreruperile de rând. De aceea aceleași trei probleme revin mereu: octeții sunt citiți cu o codificare greșită, capitolele nu pot fi distinse de liniile obișnuite sau întreruperile de rând nu spun nimic despre locul unde se termină o propoziție.
Am creat fișiere exemplu în patru codificări, am scris un verificator gratuit și am tradus o povestire cu întreruperi de rând forțate în chineză simplificată de nouă ori cu un model local. Modelul s-a descurcat bine cu întreruperile forțate când a văzut întregul fișier. A rupt propoziții și a atribuit acțiunea unui personaj altuia în toate cele trei rulări în care fișierul a fost tăiat în bucăți după numărul de linii.
Listă de verificare rapidă
| Verificare | Cum arată bine | Cum se remediază |
|---|---|---|
| Codificare | Primele linii se citesc corect; fișierul este UTF-8 | Redeschide cu codificarea corectă, apoi salvează ca UTF-8 |
| Marcaj de ordine a octeților | Niciunul sau unul cunoscut | Salvează ca „UTF-8” în loc de „UTF-8 cu BOM” dacă un instrument se plânge |
| Titluri de capitole | Fiecare singur pe o linie, cu o linie goală înainte și după | Corectează puținele titluri care se contopesc cu textul |
| Paragrafe | O linie goală între paragrafe | Adaugă linii goale acolo unde paragrafele încep doar cu o indentare |
| Întreruperi de rând forțate | Fiecare paragraf este o singură linie lungă | Unește liniile din interiorul paragrafelor, dar lasă versurile, scrisorile și listele neatinse |
| Terminatoare de rând | Un singur stil peste tot | Convertiți vechile terminații Mac CR; LF și CRLF sunt ambele acceptabile |
| Text deteriorat | Fără caractere � | Obțineți o copie mai bună. Conversia nu poate recupera caracterele pierdute |
Verificatorul raportează fiecare rând și corectează codificarea, marcajul de ordine a octeților, terminatoarele de rând și împărțirea forțată a rândurilor. Titlurile capitolelor și liniile goale lipsă trebuie corectate manual. Rulați python3 check_txt.py inspect yourfile.txt pentru a vedea raportul și python3 check_txt.py convert yourfile.txt clean.txt --unwrap pentru a scrie o copie UTF-8 cu paragrafele unite. Necesită doar Python 3 și nu modifică niciodată fișierul original.
Pasul 1: Obțineți codificarea corectă
Un fișier TXT este o secvență de octeți. Codificarea este regula care transformă acești octeți în caractere, iar fișierul nu specifică ce regulă a fost folosită. Dacă un program ghicește greșit, obțineți mojibake: text distorsionat sau, mai rău, text care pare în regulă, dar nu este ceea ce a fost scris.
Iată aceeași expresie chinezească, 最后一班渡轮 („ultimul feribot”), citită cu regula greșită. Le-am generat cu codecurile încorporate din Python și le puteți reproduce cu fișierele exemplu.
| Salvat ca | Citit ca | Ce vedeți |
|---|---|---|
| GB18030 | Windows-1252 | ×îºóÒ»°à¶ÉÂÖ |
| GB18030 | UTF-8 | ���һ����� |
| UTF-8 | GBK | 鏈�鍚庝竴鐝�娓¤疆 |
| Shift_JIS (japoneză 最後のフェリー) | GBK | 嵟屻偺僼僃儕乕 |
Ultimul rând este cel periculos. Octeții japonezi citiți ca chineză produc caractere chinezești reale, fără eroare și fără �. Un instrument de traducere le va traduce bucuros, iar rezultatul va fi un nonsens cu gramatică corectă.
Verificatorul nostru arată de ce nu vă puteți baza pe „s-a deschis fără erori”. Când l-am rulat pe exemplul Shift_JIS, două codificări au decodat întregul fișier fără nicio eroare:
encoding: unknown (not UTF-8)
these legacy encodings decode without errors; read the previews,
because a wrong one can still produce real-looking characters:
gb18030 戞堦榖丂嵟屻偺僼僃儕乕
cp932 第一話 最後のフェリー
Doar al doilea rând este japoneză. Primul este un șir de caractere chinezești rare pe care nimeni nu le-a scris. Pe exemplul chinezesc GB18030, cinci codificări au decodat fără erori și doar una dintre ele, GB18030, a afișat titlul capitolului 第一章 最后一班渡轮. Deci regula este simplă: decideți codificarea citind primele rânduri, nu după dacă un program s-a plâns.
Unde apar de obicei greșelile de estimare:
- Textul chinezesc din sistemele Windows mai vechi sau de pe site-urile chinezești este adesea în GBK sau GB18030. GB18030 acoperă tot ce acoperă GBK, iar Standardul de codare WHATWG, pe care îl urmează browserele, merge mai departe: spune că „decodorul GBK este decodorul gb18030”. Dacă un fișier este în GBK, deschiderea lui ca GB18030 funcționează.
- Chineza tradițională din Taiwan sau Hong Kong este adesea în Big5.
- Japoneza este adesea în Shift_JIS, sau în versiunea extinsă a acestuia de la Microsoft, pe care Windows și Python o numesc cp932.
- Coreeana este adesea în EUC-KR.
- Un fișier plin de octeți NUL, sau unul în care fiecare al doilea caracter pare gol, este de obicei UTF-16 fără marcaj de ordine a octeților.
Un marcaj de ordine a octeților (BOM) este un scurt cod invizibil la începutul unui fișier care anunță UTF-8, UTF-16 sau UTF-32. Când există unul, ai încredere în el. Același standard spune că „marcajul de ordine a octeților este mai autoritar decât orice altceva”. Verificatorul nostru citește mai întâi BOM-ul și face estimări doar când nu există niciunul.
Salvează fișierul ca UTF-8
Odată ce textul se citește corect, salvează-l ca UTF-8. Standardul WHATWG numește UTF-8 „cea mai potrivită codare pentru schimbul de Unicode”, iar aceasta este cea mai sigură alegere pentru orice instrument de traducere.
Există un al doilea motiv care contează în special pentru traducere. Codările vechi acoperă doar caracterele din propria regiune. Shift_JIS nu are cod pentru 这, primul caracter din 这是最后一班渡轮, iar Big5 nu are nici el cod pentru acesta, deoarece este un caracter chinezesc simplificat. Windows-1252 nu poate stoca chirilice. Dacă fișierul tradus trebuie scris înapoi în codarea veche originală, limba țintă s-ar putea să nu încapă. Traducătorul TXT al BookTranslator spune că detectează automat codările comune și returnează fișierul tradus „cu aceeași codare ca intrarea”, așa că pornind de la UTF-8 elimini complet întrebarea.
Poți converti într-un editor de text (deschide cu codarea corectă, apoi „Salvează ca” UTF-8), cu iconv -f GB18030 -t UTF-8 in.txt > out.txt pe macOS sau Linux, sau cu verificatorul:
python3 check_txt.py convert book.txt book-utf8.txt --encoding gb18030
Dacă fișierul conține deja caractere �, daunele s-au produs înainte de a-l primi. Convertirea din nou nu va restabili caracterele lipsă. Caută o copie mai bună a sursei.
Pasul 2: Fă capitolele ușor de găsit
Capitolele contează din trei motive. Un fișier lung este tradus în bucăți, iar pauzele dintre capitole sunt cele mai curate locuri de tăiere. Vei dori să verifici fiecare capitol după traducere. Și dacă mai târziu transformi textul într-o carte electronică, titlurile capitolelor devin cuprinsul.
Pune fiecare titlu pe propria linie, cu o linie goală înainte și după, și folosește același model pe tot parcursul cărții. Acestea sunt modelele pe care le numără verificatorul nostru:
Chapter 1,Chapter One: The Last Ferry,Part Two,Prologue,Epilogue第一章,第12回,第三話,第二卷- un număr sau un numeral roman singur pe o linie, cum ar fi
12sauXII.
Rulează inspect și citește lista de titluri găsite. Dacă cartea are 40 de capitole și verificatorul găsește 37, trei titluri se ascund: unul se contopește cu prima propoziție, unul folosește un alt cuvânt precum „Cap. 7”, sau unul are text pe aceeași linie. Corectează-le manual pe cele trei. Durează mai puțin decât să găsești problema într-un fișier tradus.
Pasul 3: Desfă cu atenție întreruperile de rând forțate
Unele fișiere TXT rup fiecare rând la o lățime fixă, astfel încât textul să încapă într-un terminal simplu sau într-o fereastră îngustă. Textul copiat din PDF-uri și rezultatul OCR fac același lucru la lățimea paginii tipărite. În aceste fișiere, o întrerupere de rând înseamnă „rândul era plin”, nu „propoziția sau paragraful s-a terminat”.
Împărțirea forțată a rândurilor este ușor de observat. În eșantionul nostru cu rânduri forțate, verificatorul a raportat:
non-empty lines: 43; longest line: 66 chars; 25 lines within 12 chars of the longest
line breaks inside paragraphs that do not end a sentence: 23
looks hard-wrapped: consider convert --unwrap
Soluția este să unești rândurile din interiorul fiecărui paragraf și să păstrezi liniile goale dintre paragrafe. Capcana este textul cu întreruperi de rând reale: versuri, texte de cântece, scrisori, adrese, rețete și liste. Eșantionul nostru include o scrisoare de cinci rânduri:
My dear Mara,
The key is under the blue pot.
Do not let your uncle sell the boat.
With love, always,
Nonna
O înlocuire brutală „înlocuiește fiecare întrerupere de rând cu un spațiu” transformă aceasta într-o singură linie continuă. Opțiunea --unwrap a verificatorului unește un paragraf doar când majoritatea rândurilor sale se apropie de lățimea completă, astfel încât blocurile cu rânduri scurte precum această scrisoare sunt lăsate neatinse. Pe eșantionul nostru, a reconstruit fișierul original nedespărțit exact, octet cu octet, inclusiv scrisoarea. Pe propriul fișier, verifică câteva paragrafe unite și fiecare bloc de versuri înainte de a avea încredere.
Încă două detalii. Când unești rânduri de text chinezesc sau japonez, nu adăuga un spațiu între ele; verificatorul unește rândurile CJK, inclusiv pe cele care se termină cu punctuație CJK, fără spațiu. Și dacă textul provine din OCR, cuvintele pot fi despărțite cu cratime la sfârșitul rândurilor, ceea ce necesită decizii separate. Ghidul nostru pentru corectarea întreruperilor de rând și a cratimelor din OCR acoperă acest aspect.
Ce am testat: text cu rânduri forțate, întreg vs. tăiat
Am vrut să aflăm dacă împărțirea forțată a rândurilor afectează de fapt traducerea sau doar arată neîngrijit. Am scris o povestire scurtă de 396 de cuvinte pentru test: trei capitole, cincisprezece paragrafe, dialog, scrisoarea de mai sus și o pauză de scenă * * *. Am salvat-o de două ori cu aceleași cuvinte: fără împărțire, cu un paragraf pe linie, și împărțită forțat la 66 de caractere, care are 43 de linii ne-goale în loc de 19.
Apoi am rugat un model local să o traducă în chineză simplificată în trei moduri, câte trei rulări fiecare:
- Împărțită, fișier întreg. Fișierul împărțit forțat într-o singură cerere.
- Neîmpărțită, fișier întreg. Fișierul neîmpărțit într-o singură cerere.
- Împărțită, tăiată la fiecare 12 linii. Fișierul împărțit forțat, secționat la fiecare 12 linii, o cerere pentru fiecare bucată, răspunsurile recombinate. Acesta este ce se întâmplă când un script sau un instrument împarte un fișier lung după numărul de linii în loc de paragrafe.
Modelul a fost Qwen 3.6 27B (Q4_K_M) în LM Studio, cu gândirea dezactivată și temperatura 0.3, pe un Apple M4 Max cu 64 GB de memorie. Fiecare cerere a folosit același prompt de o propoziție. Am rulat pe 28 octombrie 2026. Scriptul este run_llm_txt_test.py, toate cele nouă rezultate sunt publicate needitate, iar results.csv are un rând per rulare.
| Împărțită, fișier întreg | Neîmpărțită, fișier întreg | Împărțită, tăiată la fiecare 12 linii | |
|---|---|---|---|
| Paragrafe păstrate (15) | 3 din 3 rulări | 3 din 3 rulări | 0 din 3 (14 de fiecare dată) |
| Titluri de capitole păstrate (3) | 3 din 3 | 3 din 3 | 3 din 3 |
| Scrisoarea păstrată ca cinci linii | 3 din 3 | 3 din 3 | 3 din 3 |
| Propoziții tăiate la un punct de împărțire | 0 | 0 | 3 în fiecare rulare |
| Acțiune atribuită personajului greșit | 0 | 0 | 3 din 3 rulări |
Prima constatare ne-a surprins. Când modelul a văzut întregul fișier cu linii rupte forțat, a unit singur rândurile. Toate cele trei rezultate aveau un paragraf pe linie, aceleași 19 linii ca rulările fără rupere forțată, și se citeau la fel de bine. Deci ruperea forțată a liniilor, singură, nu a afectat acest model pe acest fișier scurt.
Tăierea fișierului după numărul de linii a afectat, în aceleași locuri de fiecare dată. Trei dintre cele 12 fragmente de linii se terminau la mijlocul unei propoziții. Primul se termină la „He pointed with his” și următorul fragment începe cu „pen at a three-storey building on the corner.” Tradusă separat, a doua jumătate și-a pierdut subiectul. În două rulări a revenit ca 她瞥了一眼街角那栋三层楼的建筑, „ea a aruncat o privire la clădirea cu trei etaje de la colț.” În a treia, s-a terminat cu 随后她重新回到填字游戏上, „apoi s-a întors la cuvintele încrucișate.” În poveste, bărbatul din cabina de bilete arată și se întoarce la cuvintele încrucișate. În toate cele trei rulări, un cititor al textului chinez ar crede că Mara a făcut asta.
A doua tăietură, între „the careful, slightly old-fashioned hand she had learned at a” și „convent school,” a lăsat propoziția chineză în suspensie la 那是她在, „acolo era ea,” în toate cele trei rulări (o rulare a adăugat un 一 rătăcit), iar cuvântul „learned” a dispărut. A treia tăietură a împărțit propoziția despre obloane pe două linii, iar a doua jumătate a transformat „painted, not well, but not long ago” în vopsea care se cojește: 油漆虽已斑驳 în două rulări și 油漆剥落 în a treia. Și pentru că fragmentele au fost unite cu o singură trecere la rând nou, linia goală dinaintea rupturii de scenă a dispărut, motiv pentru care fiecare rulare a avut 14 paragrafe în loc de 15. Verificatorul nostru a prins numărul de paragrafe. Nu a putut prinde caracterul greșit; l-am găsit citind.
Ce înseamnă asta pentru fișierul tău:
- Anularea ruperii forțate te protejează de divizorii pe care nu îi controlezi. Fiecare fișier lung este împărțit undeva, fie de propriul tău script, fie de limita unei ferestre de chat, fie de instrumentul în care încarci. Dacă paragrafele sunt linii separate prin linii goale, orice divizor rezonabil poate tăia între paragrafe în loc de în interiorul unei propoziții.
- Cele mai grave erori erau fluente. „Ea a aruncat o privire la clădire” este chineză bună. Un cititor ar observa trecerile neobișnuite la rând nou la fiecare tăietură și 那是她在 rămas în suspensie, dar nimic nu marchează caracterul greșit sau vopseaua care se cojește ca fiind greșeli. Erorile la punctele de împărțire sunt erori de sens mai întâi, erori de formatare în al doilea rând.
- A fost un singur model și o singură povestire scurtă. Un fișier atât de scurt încape într-o singură cerere, așa că rulările pe fișier întreg nu au trebuit niciodată să împartă nimic. Un roman complet trebuie împărțit, și exact atunci pregătirea din Pașii 1–3 își arată valoarea. Aceste fișiere testează pregătirea și împărțirea, nu pipeline-ul propriu al BookTranslator.
O observație mai mică: în cele șase rulări pe fișier întreg, modelul a scris numele Marei ca 玛拉 în cinci și 马拉 într-una. Fiecare rezultat era consecvent cu el însuși, dar cererile separate nu au fost de acord între ele. Pentru o carte lungă tradusă în multe fragmente, o listă de nume și grafii convenite ține fiecare capitol în rând. Ghidul nostru de glosar arată cum să construiești una.
Pasul 4: Tradu, apoi verifică numărătorile
Când fișierul este curat, traducerea lui este partea ușoară. Îl poți încărca în traducătorul TXT al BookTranslator, care acceptă fișiere .txt, .md și .mdx, spune că gestionează fișiere TXT de până la 300 MB și afișează prețul înainte de plată. Nu există traducere completă gratuită, dar încărcarea în sine îți spune costul. Dacă preferi să lucrezi cu un model de chat sau cu un LLM local, împarte fișierul la granițe de capitol sau paragraf și păstrează un glosar pentru nume. Dacă textul tău este Markdown și nu proză simplă, vezi ghidul nostru de traducere Markdown, pentru că sintaxa Markdown are propriile reguli.
După traducere, compară cele două fișiere:
python3 check_txt.py compare book-utf8.txt book-translated.txt
Dacă niciunul dintre fișiere nu este UTF-8, adaugă --source-encoding sau --translated-encoding. Verificarea capitolelor cunoaște modelele de titluri în engleză și chineză/japoneză; pentru alte limbi țintă, adaugă cuvântul local pentru „capitol” la modelul din partea de sus a scriptului.
Acesta este raportul pentru una dintre rulările noastre cu fișierul tăiat:
source translated
paragraphs 15 14 <- differs
chapter headings 3 3
non-empty lines 43 24 <- differs
scene breaks (* * *) 1 1
replacement chars 0 0
source script LATIN characters left in translation: 0
Citește-l astfel:
- Paragrafele și titlurile de capitol ar trebui să corespundă. Un paragraf lipsă înseamnă adesea că două au fost contopite sau unul a fost eliminat.
- Liniile ne-goale pot diferi dintr-un motiv bun. Rulările noastre pe fișier întreg cu rupere forțată au trecut de la 43 de linii la 19 pentru că modelul a unit liniile rupte forțat, ceea ce a fost o îmbunătățire. Compară liniile doar când sursa era deja fără rupere forțată.
- Caracterele din scriptul sursă rămase indică pasaje care nu au fost traduse deloc. Câteva sunt normale pentru nume, termeni de produs sau citate; o serie de ele este o secțiune omisă.
- Caracterele de înlocuire din traducere înseamnă o problemă de codificare la ieșire.
Numărătorile nu îți pot spune dacă traducerea este corectă. Citește primul și ultimul paragraf al fiecărui capitol și paragrafele de o parte și de alta a fiecărui loc unde fișierul a fost împărțit. Acolo a găsit testul nostru fiecare eroare gravă.
Întrebări frecvente
De ce fișierul meu TXT arată bine într-un program și ilizibil în altul?
Cele două programe au ghicit codificări diferite. Unul a ghicit corect. Găsește codificarea care afișează textul corect, apoi salvează fișierul ca UTF-8 pentru ca fiecare program să îl citească la fel.
Ar trebui să convertesc un fișier TXT în EPUB sau DOCX înainte de a-l traduce?
Doar dacă vrei ceea ce adaugă acele formate. Un fișier TXT curat, cu capitole clare, se traduce bine ca atare. Dacă vrei un cuprins, navigare între capitole și un ebook pe care să-l poți citi pe un dispozitiv, ghidul nostru despre transformarea unui roman web într-un EPUB pregătit pentru traducere explică pas cu pas.
Pot traduce un fișier TXT cu limbi amestecate?
Da, dar spune-i traducătorului ce să lase nemodificat. Citările sau termenii într-o a treia limbă și numele care trebuie păstrate în grafia originală sunt mai ușor de protejat cu ajutorul unui glosar sau al unei instrucțiuni scurte decât de corectat ulterior.
Ce se întâmplă cu un fișier TXT descărcat de pe un site web?
Verifică dacă ai dreptul să îl folosești. Pentru cărțile din domeniul public sau fișierele pe care le-ai scris tu, pașii de mai sus se aplică. Codificarea sau formatul unui fișier nu îți spune nimic despre drepturile de autor.
Articole asociate





