BookTranslator
BookTranslator

Cách dịch tệp RTF: Những gì được giữ lại và những gì bị mất

Điều gì xảy ra với đoạn văn, bảng, chú thích cuối trang, liên kết và định dạng khi dịch tệp RTF, tại sao tệp TextEdit cần thêm một bước, và một công cụ kiểm tra miễn phí.

BookTranslator

BookTranslator Team

17 phút đọc

Để dịch tệp RTF, hãy tải toàn bộ tệp .rtf lên một trình dịch đọc được RTF, sau đó kiểm tra kết quả. BookTranslator chấp nhận RTF. Nó đọc văn bản từng đoạn một, dịch, rồi trả cho bạn một tệp RTF mới và một tệp RTF song ngữ. Dán văn bản vào cửa sổ trò chuyện hoặc trình dịch web cũng hiệu quả với một hai trang, nhưng bạn sẽ mất tệp và phải dựng lại.

Có một điều cần biết trước khi tải lên. Tệp đã dịch giữ nguyên từ ngữ và đoạn văn của bạn, nhưng không giữ định dạng. Chữ đậm, tiêu đề, phông chữ, bảng, liên kết và hình ảnh sẽ không được khôi phục. Vì vậy, cách làm đúng phụ thuộc vào nội dung tệp và ứng dụng đã lưu nó. Một bản thảo thuần văn bản được lưu từ Word là trường hợp dễ. Một tệp được lưu bởi TextEdit trên máy Mac cần thêm một bước trước, nếu không mọi đoạn văn sẽ dính liền nhau.

Chúng tôi đã tạo ba tệp kiểm tra và viết một công cụ kiểm tra miễn phí hiển thị nội dung của tệp RTF trước khi bạn tải lên và những gì đã thay đổi sau đó. Chúng tôi đã chạy các tệp kiểm tra qua một bản sao cục bộ của mã đọc và ghi RTF mà BookTranslator sử dụng, với một dấu đánh dấu thay cho mô hình, để bạn có thể thấy chính xác văn bản nào mỗi tệp kiểm tra gửi đi dịch và tệp quay về như thế nào.

Trả lời nhanh: Điều gì xảy ra với từng phần của tệp

Phần của tệpKết quả trong thử nghiệm của chúng tôiCần làm gì
Các đoạn văn kết thúc bằng \par (Word và hầu hết ứng dụng Windows)Mỗi đoạn được dịch thành một đoạnKhông cần làm gì
Các đoạn văn kết thúc bằng dấu gạch chéo ngược và một dấu xuống dòng (TextEdit, các ứng dụng Mac khác)Toàn bộ tệp được gửi dưới dạng một đoạn, không có khoảng trắng ở mỗi chỗ ngắtChuyển đổi tệp trước (xem Bước 2)
Chữ đậm, chữ nghiêng, tiêu đề, phông chữ, màu sắc, căn lềBị loại bỏ. Mọi đoạn văn đều là Times New Roman cỡ 12Định dạng lại trong Word, hoặc dịch tệp DOCX thay thế
BảngVăn bản trong ô bị nối liền không có khoảng trắng: StopTimeNorth pier7:05Dịch tệp DOCX thay thế
Chú thích cuối trangVăn bản chú thích được thêm vào cuối đoạn văn của nó; số chú thích bị mấtChuyển chú thích về chỗ cũ bằng tay, hoặc dịch tệp DOCX
Tiêu đề trangTrở thành một đoạn văn thông thường ở vị trí của nó trong tệp (ở đầu, trong thử nghiệm của chúng tôi)Xóa nó đi, hoặc giữ tiêu đề gốc
Liên kếtVăn bản liên kết được giữ lại và dịch, địa chỉ web bị loại bỏThêm lại các liên kết
Hình ảnhĐã bị xóaGiữ tệp gốc cho phần hình ảnh
Ký tự có dấu và không phải chữ Latinh (café, 日本)Đọc và ghi chính xácKhông có gì
Bất kỳ chuỗi 20 ký tự trở lên từ 0–9 và a–f (số tham chiếu dài, mã băm)Bị xóa trước khi dịchKiểm tra chúng sau khi dịch (công cụ kiểm tra thực hiện việc này)

Phần còn lại của hướng dẫn này sẽ chỉ ra nguồn gốc của từng hàng và cách xử lý.

Bước 1: Kiểm tra loại RTF bạn có

RTF là một định dạng văn bản có chứa các mã định dạng. Mở tệp bằng trình soạn thảo văn bản thuần túy, hoặc chạy head -c 120 yourfile.rtf trong terminal, và xem dòng đầu tiên.

  • Nếu có \cocoartf trong đó, tệp được lưu bởi hệ thống văn bản của Apple: TextEdit, hoặc một ứng dụng Mac khác sử dụng nó.
  • Nếu có \rtf1\ansi và không có \cocoartf, rất có thể tệp đến từ Word, LibreOffice, WordPad, hoặc từ xuất của một ứng dụng viết.

Sự khác biệt này quan trọng vì hai loại kết thúc đoạn văn theo cách khác nhau. Word và hầu hết các trình xử lý văn bản khác ghi mã \par ở cuối mỗi đoạn. Hệ thống văn bản của Apple thay vào đó ghi một dấu gạch chéo ngược duy nhất ở cuối dòng. Cả hai đều là RTF hợp lệ: đặc tả RTF gốc năm 1989 của Microsoft (bản sao) nói rằng một dấu gạch chéo ngược theo sau bởi ngắt dòng được xử lý giống như \par, và trình đọc của chính Apple hiển thị tệp thử nghiệm TextEdit của chúng tôi thành các đoạn riêng biệt. Trình đọc RTF của BookTranslator chỉ tách đoạn văn trên \par. Chúng tôi đã kiểm tra điều này trong mã của nó vào ngày 3 tháng 11 năm 2026 và trong thử nghiệm bên dưới.

Công cụ kiểm tra cho bạn biết bạn có loại nào và còn gì khác trong tệp. Nó cần Python 3 và không cần gì khác:

python3 check_rtf.py sample-word-style.rtf

Trên tệp thử nghiệm kiểu Word của chúng tôi, nó in ra:

== sample-word-style.rtf
  par_breaks: 7
  table_cells: 4
  table_rows: 2
  hyperlinks: 1
  fields: 1
  bold_on: 2
  italic_on: 1
  page_breaks: 1
  fonts: 2
  footnotes: 1
  headers: 1
  images: 1
  visible_paragraphs: 7
  WARN 4 table cells: check that cell boundaries survive.
  WARN 1 footnotes: check where this text ends up in the output.
  WARN 1 headers: check where this text ends up in the output.
  WARN 1 hyperlinks: the link text may survive without the URL.
  WARN 1 images: keep the original for the artwork.

Trên tệp TextEdit, cảnh báo đầu tiên là cảnh báo này:

  WARN Paragraphs end with a backslash + line break (TextEdit/Cocoa style), not \par. Tools that only split on \par will see one long paragraph.

Nếu công cụ kiểm tra không in ra cảnh báo nào, các đoạn văn, số và văn bản của bạn sẽ được giữ nguyên. Chữ đậm, tiêu đề và danh sách không kích hoạt cảnh báo, nhưng chúng vẫn bị loại bỏ trên tuyến RTF, vì vậy hãy xem Bước 2 nếu bạn cần chúng.

Những gì thu được từ các tệp thử nghiệm của chúng tôi

Chúng tôi đã tạo ba tệp nhỏ. Tất cả chúng, và mọi thứ thu được, đều nằm trong thư mục tệp thử nghiệm.

  • sample-word-style.rtf được viết thủ công theo phong cách Word dùng cho RTF: ngắt bằng \par, tiêu đề trang, chú thích cuối trang, liên kết, bảng hai nhân hai, hình ảnh nhỏ, ngắt trang, café được viết dưới dạng ký tự bảng mã và 日本 được viết dưới dạng mã Unicode.
  • sample-textedit.rtf được tạo trên máy Mac bằng textutil -convert rtf, sử dụng cùng hệ thống văn bản như TextEdit. Tệp có tiêu đề, chữ đậm và chữ nghiêng, liên kết, danh sách có dấu đầu dòng, bảng và một dòng chứa {braces} và dấu gạch chéo ngược.
  • sample-long-numbers.rtf có một mã đơn hàng gồm 20 chữ số, một mã băm commit gồm 40 ký tự và một số điện thoại.

Chúng tôi đã sao chép các hàm đọc và ghi RTF từ mã backend của BookTranslator vào ngày 3 tháng 11 năm 2026 và chạy chúng trên từng tệp. Không có mô hình nào được sử dụng. Mỗi đoạn văn sẽ được gửi để dịch đều được thay bằng [ZH] cộng với văn bản gốc. Điều đó cho thấy chính xác những gì một mô hình sẽ nhận được và cách tệp được tái tạo, mà không có nhiễu từ một bản dịch thực sự.

Tệp kiểu Word: sáu đoạn văn sạch, với ba điều bất ngờ

Tệp trả về dưới dạng sáu đoạn văn đã dịch, theo thứ tự sau:

[ZH] Harbor Notes - Draft 2
[ZH] Chapter 3: The Harbor
[ZH] The ferry left at 6:40, an hour before the café opened. Timetable from the 1998 edition.
[ZH] Read the harbor map before you go.
[ZH] StopTimeNorth pier7:05
[ZH] Chapter 4: 日本 (Nihon)

Phần lớn những gì bạn muốn đều có ở đây. Mỗi đoạn văn được gửi một lần, theo thứ tự, và café và 日本 vẫn tồn tại qua quá trình chuyển từ mã RTF sang văn bản và ngược lại. Ba điều bất ngờ:

  1. Tiêu đề trang trở thành đoạn văn đầu tiên. "Harbor Notes - Draft 2" là tiêu đề in ở đầu mỗi trang. Trong tệp đã dịch, nó là văn bản thân bài.
  2. Chú thích cuối trang chuyển vào trong câu. "Timetable from the 1998 edition." là chú thích cuối trang cho từ "opened". Bây giờ nó theo sau câu như thể là một phần của câu, và số chú thích cuối trang đã biến mất. Một mô hình dịch đoạn văn đó sẽ thấy một văn bản liền mạch, và bạn phải tự tìm và di chuyển chú thích cuối trang trở lại bằng tay.
  3. Các ô trong bảng chạy vào nhau. Bốn ô "Stop", "Time", "North pier" và "7:05" trở thành một chuỗi duy nhất StopTimeNorth pier7:05. Một mô hình có thể tách nó sai chỗ, hoặc dịch "StopTime" như một từ.

Tệp đã dịch không có tiêu đề trang, không có chú thích cuối trang, không có bảng, không có địa chỉ liên kết, không có hình ảnh và không có chữ đậm. Chế độ so sánh của công cụ kiểm tra trong Bước 4 liệt kê tất cả những điều đó.

Tệp TextEdit: một đoạn văn

Tệp TextEdit có tám đoạn văn hiển thị. Tất cả chúng được gửi để dịch như một đoạn văn duy nhất:

Chapter 3: The HarborThe ferry left at 6:40, an hour before the market opened.Read the harbor map before you go.	•	Bring cash	•	Keep your ticketStopTimeNorth pier7:05Ana said: "We'll wait {here}" and C:\Users\ana\notes stayed open.

Không có khoảng trắng ở nơi mỗi đoạn văn kết thúc: "HarborThe", "opened.Read". Tệp đã dịch cũng là một đoạn văn. Tệp thử nghiệm của chúng tôi ngắn. Trong một cuốn sách thực sự được lưu bằng TextEdit, toàn bộ tệp trở thành một đoạn văn. Trước khi dịch, BookTranslator cắt các đoạn văn rất dài thành các phần khoảng 6.000 ký tự (khoảng 2.000 đối với tiếng Trung, tiếng Nhật hoặc tiếng Hàn), tại các cuối câu nếu có thể tìm thấy. Những chỗ cắt đó vẫn rơi vào cuối câu bên trong đoạn văn, nhưng không bao giờ tại các chỗ ngắt đoạn bị thiếu, vì "opened.Read" trông không giống cuối câu. Khi mỗi đoạn văn là một câu duy nhất, chẳng hạn như các dòng đối thoại hoặc mục danh sách, chỗ cắt có thể rơi vào dấu phẩy hoặc khoảng trắng. Mô hình không bao giờ thấy các đoạn văn ở đâu, và bạn nhận lại một bức tường văn bản.

Các dấu ngoặc nhọn và dấu gạch chéo ngược trong câu cuối cùng vẫn tồn tại. Chúng đã được thoát đúng cách trên đường ra, vì vậy tệp vẫn mở được.

Các số dài: bị xóa trước khi dịch

Tệp thứ ba trả về như sau:

[ZH] Your order reference is  and must be quoted in full.
[ZH] The fix landed in commit  last week.
[ZH] Call +44 20 7946 0958 before 5 pm.

Mã đơn hàng và mã băm commit đã biến mất, với một khoảng trắng kép ở nơi mỗi mã từng nằm. Trình đọc loại bỏ bất kỳ chuỗi nào gồm 20 ký tự trở lên chỉ chứa các chữ số 0–9 và các chữ cái a–f, vì đó là cách dữ liệu hình ảnh nhúng trông như thế trong RTF. Một số dài trong văn bản của bạn cũng trông giống như vậy đối với nó. Số điện thoại vẫn tồn tại vì các nhóm chữ số của nó ngắn.

Điều này chủ yếu quan trọng đối với hợp đồng, hóa đơn, ghi chú kỹ thuật và hồ sơ có số tham chiếu dài. Công cụ kiểm tra liệt kê mọi chuỗi như vậy trong tệp nguồn của bạn và cho bạn biết nếu một chuỗi bị thiếu sau khi dịch.

Bước 2: Chọn tuyến phù hợp cho tệp của bạn

Sử dụng đầu ra của công cụ kiểm tra để chọn một:

Tệp của bạn có gìCách tốt nhấtLý do
Đoạn văn thuần, từ Word hoặc ứng dụng dùng \par khácTải tệp RTF lênCác đoạn văn được trả về nguyên vẹn từng đoạn một; bạn chỉ mất những định dạng không cần thiết
Đoạn văn thuần, từ TextEdit (\cocoartf)Chuyển sang DOCX hoặc TXT trước, rồi tải tệp đó lênTrình đọc RTF sẽ gửi toàn bộ tệp dưới dạng một đoạn văn duy nhất
Tiêu đề, bảng, chú thích cuối trang hoặc định dạng bạn cần giữLưu dưới dạng DOCX trong Word hoặc LibreOffice, rồi tải tệp DOCX lênCách xử lý RTF sẽ tạo lại một tệp thuần; DOCX sẽ đi qua quy trình xử lý Word thay thế
Số tham chiếu dài hoặc mã bămCách nào cũng được, sau đó kiểm traXác nhận mọi con số đều được trả về

Để chuyển đổi tệp TextEdit trên máy Mac, hãy mở Terminal và chạy một trong các lệnh sau:

textutil -convert docx notes.rtf
textutil -convert txt notes.rtf

Lệnh đầu tiên ghi tệp notes.docx bên cạnh tệp gốc. Khi chúng tôi chuyển đổi tệp thử nghiệm TextEdit theo cách này, tệp DOCX có một đoạn văn riêng cho mỗi dòng và giữ nguyên các từ in đậm và in nghiêng. Tệp không giữ bảng, vốn trở thành các đoạn văn riêng biệt, hoặc liên kết. Nếu bạn cần những thứ đó, hãy mở tệp trong Word hoặc LibreOffice và lưu dưới dạng DOCX từ đó, sau đó kiểm tra bảng trước khi tải lên. Lệnh thứ hai ghi một tệp văn bản thuần. Hãy dùng lệnh này khi bạn chỉ cần phần chữ; hướng dẫn dịch văn bản thuần của chúng tôi đề cập những gì cần kiểm tra trong tệp TXT.

Đối với tài liệu Word mà bảng, kiểu dáng và tiêu đề quan trọng, hãy xem hướng dẫn của chúng tôi về dịch tài liệu Word trong khi giữ nguyên định dạng. Phần Câu hỏi thường gặp của BookTranslator trên trang dịch tài liệu đưa ra lời khuyên tương tự cho các tệp Word .doc cũ: ứng dụng dịch văn bản của chúng và trả về tệp RTF, đồng thời khuyên nên lưu chúng dưới dạng DOCX trước nếu hình ảnh, bảng hoặc bố cục cần được giữ nguyên.

Bước 3: Dịch toàn bộ tệp

Tải tệp lên, chọn ngôn ngữ đích và kiểm tra giá trước khi thanh toán. BookTranslator dịch các đoạn văn theo thứ tự. Đối với tệp dài có tên và thuật ngữ lặp lại, hãy bật tùy chọn Tự động tạo bảng thuật ngữ trước khi thanh toán để chúng được dịch nhất quán trong toàn bộ tài liệu.

Bạn nhận được hai tệp:

  • Tệp đã dịch: mỗi đoạn văn bằng ngôn ngữ đích.
  • Tệp song ngữ: mỗi đoạn văn gốc theo sau là bản dịch của nó. Đây là tệp nhanh hơn để xem lại, vì bạn có thể đọc song song hai bên và phát hiện đoạn văn bị bỏ qua hoặc đọc sai. Trong tệp song ngữ cho thử nghiệm TextEdit của chúng tôi, toàn bộ tài liệu xuất hiện một lần bằng tiếng Anh và sau đó một lần với dấu đánh dấu, đây là một cách khác để thấy vấn đề một đoạn văn.

Cả hai tệp đều được ghi dưới dạng đoạn văn thuần 12 điểm Times New Roman. Các ngôn ngữ đích viết từ phải sang trái, như tiếng Ả Rập và tiếng Do Thái, được đánh dấu là đoạn văn từ phải sang trái. Mở tệp trong Word, LibreOffice hoặc TextEdit để đọc và định dạng chúng.

Bước 4: Kiểm tra tệp đã dịch

Chạy công cụ kiểm tra với tệp nguồn và bản dịch:

python3 check_rtf.py sample-word-style.rtf sample-word-style-translated.rtf

Với tệp kiểu Word của chúng tôi, phần so sánh in ra:

== compare
  CHANGED table_cells: 4 -> 0
  CHANGED footnotes: 1 -> 0
  CHANGED headers: 1 -> 0
  CHANGED hyperlinks: 1 -> 0
  CHANGED images: 1 -> 0
  CHANGED bold_on: 2 -> 0
  CHANGED italic_on: 1 -> 0
  CHANGED page_breaks: 1 -> 0
  CHANGED visible_paragraphs: 7 -> 6

Mỗi dòng là một việc bạn cần xem xét. Ở đây, số đoạn văn giảm từ bảy xuống sáu vì các hàng bảng đã trở thành một đoạn văn. Với tệp số dài, nó in ra hai dòng MISSING, mỗi dòng cho một số đã bị xóa. Với tệp TextEdit, visible_paragraphs: 8 -> 1 là dấu hiệu để quay lại Bước 2.

Công cụ kiểm tra đếm cấu trúc. Nó không thể cho bạn biết bản dịch có tốt hay không. Hãy đọc tệp song ngữ, ít nhất là những trang đầu và bất kỳ đoạn nào có tên, số hoặc lời thoại.

Các vấn đề thường gặp

Tệp RTF đã dịch của tôi là một đoạn văn dài. Tệp nguồn của bạn rất có thể đến từ TextEdit hoặc một ứng dụng Mac khác. Hãy chạy công cụ kiểm tra trên bản gốc. Nếu nó cảnh báo về ngắt dòng bằng dấu gạch chéo ngược, hãy chuyển tệp sang DOCX hoặc TXT và dịch tệp đó thay thế.

Một số từ bị dính vào nhau, như "StopTime". Đó là các ô trong bảng. Bảng RTF mất ranh giới ô trên con đường này. Hãy dịch một bản sao DOCX của tệp nếu bảng quan trọng.

Một câu kết thúc bằng văn bản không thuộc về nó. Đó có thể là chú thích cuối trang. Hãy tìm nó trong bản gốc, sau đó chuyển bản dịch của nó trở lại thành chú thích cuối trang trong Word.

Một con số bị thiếu trong bản dịch. Nếu đó là 20 ký tự trở lên gồm 0–9 và a–f, nó đã bị xóa trước khi dịch. Hãy sao chép nó trở lại từ bản gốc. Các dòng MISSING của công cụ kiểm tra liệt kê từng con số.

Định dạng đã biến mất. Điều đó là bình thường trên con đường RTF: tệp được xây dựng lại với các đoạn văn thuần túy. Nếu bạn cần định dạng, hãy dịch một bản sao DOCX, hoặc áp dụng lại các kiểu sau khi dịch. So sánh của chúng tôi về các công cụ dịch DOCX đề cập đến những công cụ nào giữ được định dạng Word và giữ tốt đến mức nào.

Tôi có thể nhận kết quả dưới dạng DOCX thay thế không? Không thể từ một tệp RTF tải lên; RTF vào, RTF ra. Hãy chuyển bản gốc sang DOCX trước khi tải lên, và kết quả sẽ trở lại dưới dạng DOCX.

Bài viết liên quan

Cách dịch tệp RTF: Những gì được giữ lại và những gì bị mất