Cách dịch truyện tranh CBZ hoặc CBR mà không làm xáo trộn thứ tự trang
Sửa thứ tự trang, bìa, tệp rác và cài đặt đọc từ phải sang trái trước khi dịch truyện tranh CBZ hoặc CBR. Bao gồm công cụ kiểm tra kho lưu trữ miễn phí và tệp mẫu.

Tệp CBZ là một kho lưu trữ ZIP chứa các hình ảnh trang, và tệp CBR cũng tương tự nhưng được đóng gói bằng RAR. Không có gì bên trong kho lưu trữ nói rằng "đây là trang 2". Các trình đọc truyện tranh và công cụ dịch đều xác định thứ tự trang bằng cách sắp xếp tên tệp. Vì vậy, hầu hết các vấn đề với truyện tranh đã dịch bắt đầu từ trước khi dịch. Một trang bìa bị đưa xuống cuối, trang 10 xuất hiện sau trang 1, hoặc một truyện manga đọc từ phải sang trái lại mở từ trái sang phải.
Hãy thực hiện ba bước kiểm tra trước khi tải lên. Đảm bảo tên các trang được sắp xếp đúng thứ tự, loại bỏ mọi thứ không phải là trang, và giữ lại tệp ComicInfo.xml nếu kho lưu trữ có tệp này. Sau đó tải kho lưu trữ lên dưới dạng CBZ. Chúng tôi đã viết một công cụ kiểm tra kho lưu trữ truyện tranh miễn phí, chạy cả ba bước kiểm tra trong một giây và có thể đóng gói lại tệp với tên trang an toàn.
Trả lời nhanh: Nên làm gì với kho lưu trữ của bạn
| Những gì bạn có | Những gì cần làm trước khi tải lên |
|---|---|
Tệp .cbz có các trang được đặt tên 001.jpg, 002.jpg … | Tải lên nguyên trạng |
Tệp .cbz có các trang được đặt tên 1.jpg … 10.jpg, hoặc tệp cover.jpg không được đánh số | Đóng gói lại với tên được đệm số 0 (Bước 2) |
Tệp .cbr, .cb7 hoặc .cbt | Giải nén, sau đó đóng gói lại thư mục thành tệp .cbz (Bước 3) |
| Các trang được lưu dưới dạng AVIF, JPEG XL hoặc HEIC | Chuyển đổi các trang đó sang PNG, JPEG hoặc WebP trước |
| Truyện manga cần đọc từ phải sang trái | Giữ tệp ComicInfo.xml của nó, và cập nhật trường ngôn ngữ sau khi dịch |
| Truyện tranh mua từ ứng dụng cửa hàng | Kiểm tra xem bạn thực sự có tệp không bị DRM và được phép sử dụng |
Các phần dưới đây giải thích từng hàng.
Tại sao thứ tự trang bị phá vỡ: Trình đọc sắp xếp tên tệp
Có hai cách phổ biến để sắp xếp tên tệp, và chúng không đồng nhất ngay khi số trang có độ dài khác nhau:
- Sắp xếp ký tự thuần túy so sánh tên từng ký tự một.
10.jpgbắt đầu bằng1, nên nó đứng trước2.jpg. Bạn nhận được thứ tự 1, 10, 11, 12, 2, 3 … - Sắp xếp tự nhiên đọc một chuỗi chữ số như một số, nên
2đứng trước10. Bạn nhận được 1, 2, 3 … 10, 11, 12.
Nhiều trình đọc truyện tranh sắp xếp theo cách tự nhiên, nhưng bạn không thể trông cậy vào điều đó, và bạn cũng không thể kiểm soát được tệp đã dịch sẽ được mở bằng trình đọc nào. Cách khắc phục hiệu quả ở mọi nơi là thêm số 0 vào trước các con số: 001.jpg … 010.jpg sẽ được sắp xếp giống nhau theo cả hai cách.
Hai vấn đề đặt tên khác rất dễ bị bỏ qua:
- Bìa không đánh số sẽ bị xếp cuối. Cả hai phương pháp sắp xếp đều đặt chữ số trước chữ cái. Trong một tệp lưu trữ có
cover.jpgvà001.jpg…024.jpg, trang bìa sẽ trở thành trang cuối cùng. - Thư mục chương được sắp xếp như một phần của tên.
Chapter 10/01.jpgvàChapter 2/01.jpgso sánh tên thư mục trước, vì vậy số thư mục cũng cần được xử lý cẩn thận như số trang.
BookTranslator sắp xếp các trang .cbz theo thứ tự tự nhiên, không phân biệt chữ hoa chữ thường và bỏ qua các mục rác như thư mục __MACOSX, các tệp ẩn như .DS_Store và Thumbs.db. Điều này có nghĩa là trang 2 đứng trước trang 10 trong quá trình dịch. Tuy nhiên, các trang đã dịch vẫn giữ nguyên tên gốc. Nếu bạn tải lên 1.jpg … 12.jpg, bạn sẽ nhận lại 1.png … 12.png, và một trình đọc sử dụng sắp xếp thông thường vẫn sẽ trộn lẫn chúng. Đổi tên trước khi tải lên sẽ khắc phục thứ tự cho mọi trình đọc.
Bước 1: Kiểm tra tệp lưu trữ
Tải xuống check_comic_archive.py và chạy nó trên truyện tranh của bạn. Nó cần Python 3.8 trở lên và không cần gì khác, và nó không tải lên bất cứ thứ gì:
python3 check_comic_archive.py "My Comic.cbz"
Để minh họa những gì nó phát hiện, chúng tôi đã tạo một tệp lưu trữ mẫu nhỏ với các vấn đề thường gặp trong các tệp truyện tranh. Nó có mười hai trang được đánh số không có số 0 ở đầu, một tệp cover.png không đánh số, một trang trải rộng hai trang, một tệp AVIF, các mục rác của macOS và một tệp ComicInfo.xml được đánh dấu là manga đọc từ phải sang trái. README giải thích cách tạo lại nó bằng make_test_comic.py. Dưới đây là phần cuối của báo cáo:
Junk entries (skipped): .DS_Store, __MACOSX/._1.png
Other files (carried over unchanged): ComicInfo.xml
ComicInfo.xml:
Manga (reading direction): YesAndRightToLeft
Right-to-left is stored here, not in the images. Keep this file in the archive so readers that honor it still see it.
LanguageISO: ja. Update it after translation; a copied ComicInfo.xml still names the source language.
Page table: 13 entries for 13 page images.
13 entries record ImageSize/ImageWidth. These describe the original files and no longer match once pages are replaced.
Check before uploading:
- A plain character sort puts '10.png' at position 2, where natural sort has '2.png'. A reader without natural sorting will show pages out of order.
- Pages without a number in the file name: 'cover.png' at 13. Digits sort before letters, so an unnumbered cover usually ends up last.
- Page numbers use [1, 2] digits. Zero-pad them (001, 002, ... 010) so every reader agrees on the order.
- Images in a format that is not treated as a page here: 13.avif. Convert them to PNG, JPEG or WebP, or they stay untranslated.
Ở phía trên, báo cáo liệt kê từng trang theo thứ tự đọc kèm kích thước. Nó đánh dấu một trang rộng hơn cao là trang trải rộng hai trang, và một trang cao hơn chiều rộng hơn ba lần là dải dài, giống như một chương webtoon. Đó là những trang cần xem xét đầu tiên khi bản dịch được trả về.
Đối với tên tệp ASCII thuần túy, cách sắp xếp tự nhiên của trình kiểm tra tuân theo cùng phép so sánh mà BookTranslator sử dụng cho các trang .cbz, bao gồm thư mục chương, chữ hoa chữ thường lẫn lộn, dấu cách, dấu gạch nối và dấu gạch dưới. Tên có chữ cái có dấu hoặc kana Nhật Bản có thể sắp xếp khác nhau giữa các công cụ, đó là một lý do nữa để đổi tên các trang thành số thuần túy có số 0 ở đầu.
Bước 2: Đóng gói lại với tên trang an toàn
Nếu báo cáo liệt kê các vấn đề về thứ tự, hãy xem thứ tự được in trước, sau đó đóng gói lại:
python3 check_comic_archive.py "My Comic.cbz" --first cover.png --repack "My Comic fixed.cbz"
--repack ghi một tệp CBZ mới. Các trang được đổi tên thành 0001, 0002 … theo thứ tự hiển thị, các mục rác bị loại bỏ và mọi tệp khác, bao gồm ComicInfo.xml, được sao chép không thay đổi. --first di chuyển một trang lên đầu, đây là cách bạn đưa một trang bìa không đánh số trở lại đúng vị trí. Bạn có thể lặp lại nó cho trang thứ hai, chẳng hạn như trang tiêu đề. Việc đổi tên khóa thứ tự lại, vì vậy hãy sửa nó trước khi đóng gói lại, không phải sau đó. Nếu tệp lưu trữ có bảng trang ComicInfo.xml, việc di chuyển các trang sẽ thay đổi vị trí của chúng; trình kiểm tra nhắc bạn kiểm tra các mục như dấu trang bìa trước sau đó.
Trên tệp lưu trữ mẫu, tệp được đóng gói lại có các trang 0001.png … 0013.png với trang bìa ở đầu và không có mục rác. Cảnh báo duy nhất còn lại là tệp AVIF. Trình kiểm tra không thể chuyển đổi hình ảnh; hãy mở trang đó trong trình chỉnh sửa ảnh và xuất nó dưới dạng PNG, JPEG hoặc WebP. Các định dạng như AVIF, JPEG XL và HEIC không được coi là trang. Chúng được sao chép vào kết quả nguyên trạng, không được dịch.
Bước 3: Chuyển đổi tệp CBR, CB7 hoặc CBT thành CBZ
Tệp .cbr là một tệp lưu trữ RAR, .cb7 là 7z và .cbt là tar. Đổi tên .cbr thành .cbz không chuyển đổi nó. Trình kiểm tra đọc các byte đầu tiên của tệp. Đối với tệp lưu trữ RAR, 7z hoặc tar, nó dừng lại và cho bạn biết bạn đang có loại nào. Nếu nó in một báo cáo trang bình thường thay vào đó, tệp đã là một tệp lưu trữ ZIP dưới một tên khác: hãy đổi tên nó thành .cbz và quay lại Bước 1.
Để chuyển đổi một tệp lưu trữ RAR, 7z hoặc tar thực sự, hãy giải nén nó vào một thư mục bằng 7-Zip hoặc The Unarchiver. Sau đó trỏ trình kiểm tra vào thư mục đó:
7z x "My Comic.cbr" -o"My Comic"
python3 check_comic_archive.py "My Comic" --repack "My Comic.cbz"
Việc đóng gói lại đặt các trang và ComicInfo.xml ở cấp cao nhất của tệp lưu trữ mới, ngay cả khi các tệp đã giải nén nằm trong một thư mục con.
BookTranslator cũng chấp nhận tải lên CBR, CB7 và CBT, nhưng chúng đi qua một quy trình khác với mức giá cố định, và quy trình từng trang được mô tả trong phần tiếp theo chỉ áp dụng cho các tệp .cbz. Chuyển đổi trước chỉ mất vài giây và cũng mang lại cho bạn tên trang sạch từ Bước 2.
Bước 4: Giữ ComicInfo.xml, sau đó cập nhật nó
Nhiều tệp lưu trữ bao gồm một tệp ComicInfo.xml chứa tiêu đề, bộ truyện, ngôn ngữ và hướng đọc. Định dạng của nó được duy trì bởi Dự án Anansi. Hai trường của nó quan trọng ở đây:
Manga. Lược đồ cho phépUnknown,No,YesvàYesAndRightToLeft. Trường cuối cùng là cách một tệp lưu trữ báo cho trình đọc biết phải lật trang từ phải sang trái. Các hình ảnh trang không thể mang cài đặt đó, vì vậy nếu tệp bị mất, các trình đọc sử dụng nó cũng mất hướng đọc.LanguageISO. Trường này chứa mã ngôn ngữ của truyện tranh. Sau khi dịch, nó vẫn ghi ngôn ngữ nguồn, ví dụja, cho đến khi bạn thay đổi nó.
BookTranslator sao chép ComicInfo.xml vào tệp lưu trữ đã dịch mà không thay đổi, vì vậy manga đọc từ phải sang trái vẫn giữ hướng đó trong các trình đọc hỗ trợ cờ này. Hãy mở tệp bằng trình soạn thảo văn bản sau đó và thay đổi LanguageISO thành ngôn ngữ đích. Nếu tệp có bảng <Pages>, các mục của nó trỏ đến các trang theo vị trí, vì vậy chúng vẫn khớp miễn là bạn không sắp xếp lại các trang. Các giá trị kích thước như ImageSize mô tả hình ảnh gốc và sẽ không còn khớp với các trang PNG đã dịch. Một công cụ thư viện dựa vào chúng có thể cần quét lại tệp.
BookTranslator làm gì với một tệp CBZ
Khi bạn tải lên một truyện tranh .cbz, BookTranslator sẽ:
- liệt kê các ảnh trang (PNG, JPEG, WebP, GIF, BMP hoặc TIFF) theo thứ tự tự nhiên và bỏ qua các mục rác;
- xử lý từng trang qua cùng một quy trình dùng cho ảnh đơn lẻ. Nó tìm văn bản, xóa chữ gốc và vẽ bản dịch vào đúng vị trí, làm việc trên một vài trang mỗi lần;
- tạo một tệp
.cbzmới với mỗi trang đã dịch được lưu dưới dạng PNG ở cùng vị trí, cùng với mọi tệp khác từ kho lưu trữ gốc.
Một số chi tiết đáng biết trước khi bạn thanh toán:
- Giá phụ thuộc vào số trang. Mỗi trang là một lần chạy dịch ảnh đầy đủ, vì vậy CBZ được tính giá theo trang chứ không theo từ. Báo giá xuất hiện sau khi tải lên, trước khi thanh toán. Việc loại bỏ các mục rác và ảnh không phải trang không làm thay đổi giá, vì chúng không được tính là trang.
- Trang bị lỗi giữ nguyên ảnh gốc. Nếu một trang đơn lẻ bị lỗi, nó vẫn giữ nguyên ngôn ngữ gốc và đúng vị trí, nhờ đó truyện tranh vẫn hoàn chỉnh. Nếu hơn 30% số trang bị lỗi, tác vụ sẽ thất bại thay vì giao một cuốn sách gần như chưa được dịch.
- Bạn chỉ nhận được truyện tranh đã dịch. Kho lưu trữ truyện tranh không có phiên bản song ngữ đối chiếu.
- Các trang được trả về dưới dạng PNG. Kho lưu trữ đã dịch có thể lớn hơn đáng kể so với bản gốc JPEG.
Nếu bạn cũng cần chính văn bản tiếng Nhật, ví dụ từ các tập manga quét với cột dọc và furigana, hướng dẫn của chúng tôi về OCR văn bản dọc tiếng Nhật sẽ đề cập đến những vấn đề thứ tự đọc đó cho các trang văn bản.
Trước khi tải lên: Quyền truy cập tệp
Hướng dẫn này giả định truyện tranh là tệp bạn sở hữu và có thể mở tự do, chẳng hạn như bản mua không có DRM, bản quét của chính bạn hoặc tác phẩm của chính bạn. Các ứng dụng cửa hàng thường cung cấp truyện tranh ở định dạng được bảo vệ chỉ mở được trong trình đọc của riêng chúng. Đổi tên hoặc đóng gói lại những tệp đó không thay đổi điều này. Nếu bạn không chắc, hãy đọc trước cách kiểm tra ebook có DRM trước khi dịch. Việc tải xuống một tệp cũng không cho bạn quyền chia sẻ hoặc xuất bản bản dịch của tệp đó.
Dịch truyện tranh
Khi công cụ kiểm tra báo không có vấn đề về thứ tự và mọi trang đều là PNG, JPEG hoặc WebP, hãy tải CBZ lên trình dịch manga và kiểm tra giá theo số trang trước khi thanh toán. Khi bản dịch sẵn sàng, hãy mở nó trong trình đọc bạn định dùng. Xem trang bìa, trang đôi đầu tiên và trang cuối, sau đó sửa LanguageISO trong ComicInfo.xml. Đối với các dự án dài hơn, chẳng hạn như một bộ truyện bạn định xuất bản, hướng dẫn đầy đủ về dịch sách của chúng tôi đề cập đến việc đánh giá, thuật ngữ và tính nhất quán giữa các tập.
Bài viết liên quan





