BookTranslator
BookTranslator

페이지 순서를 엉망으로 만들지 않고 CBZ 또는 CBR 만화 아카이브를 번역하는 방법

CBZ 또는 CBR 만화를 번역하기 전에 페이지 순서, 표지, 불필요한 파일 및 오른쪽에서 왼쪽 설정을 수정하세요. 무료 아카이브 검사기와 샘플 파일이 포함되어 있습니다.

BookTranslator

BookTranslator Team

20분 읽기

CBZ 파일은 페이지 이미지의 ZIP 아카이브이고, CBR 파일은 같은 개념을 RAR로 압축한 것입니다. 아카이브 내부에는 "이것이 2페이지입니다"라고 알려주는 정보가 없습니다. 만화 리더와 번역 도구는 파일 이름을 정렬하여 페이지 순서를 결정합니다. 따라서 번역된 만화의 대부분의 문제는 번역 전에 시작됩니다. 표지가 맨 뒤에 오거나, 10페이지가 1페이지 뒤에 나타나거나, 오른쪽에서 왼쪽으로 읽어야 하는 만화가 왼쪽에서 오른쪽으로 열리는 경우가 그렇습니다.

업로드하기 전에 세 가지를 확인하세요. 페이지 이름이 올바른 순서로 정렬되는지 확인하고, 페이지가 아닌 항목을 제거하고, 아카이브에 ComicInfo.xml 파일이 있으면 유지하세요. 그런 다음 아카이브를 CBZ로 업로드하세요. 세 가지 확인을 1초 만에 실행하고 안전한 페이지 이름으로 파일을 다시 패키징할 수 있는 무료 만화 아카이브 검사기를 작성했습니다.

빠른 답변: 아카이브로 무엇을 해야 할까요

현재 상태업로드 전에 할 일
페이지 이름이 001.jpg, 002.jpg … 인 .cbz그대로 업로드하세요
페이지 이름이 1.jpg … 10.jpg이거나 번호가 없는 cover.jpg가 있는 .cbz0으로 채워진 이름으로 다시 패키징하세요 (2단계)
.cbr, .cb7 또는 .cbt 파일압축을 풀고 폴더를 .cbz로 다시 패키징하세요 (3단계)
페이지가 AVIF, JPEG XL 또는 HEIC로 저장됨해당 페이지를 먼저 PNG, JPEG 또는 WebP로 변환하세요
오른쪽에서 왼쪽으로 읽어야 하는 만화ComicInfo.xml을 유지하고 번역 후 언어 필드를 업데이트하세요
스토어 앱에서 구매한 만화사용 권한이 있는 DRM 없는 파일을 실제로 보유하고 있는지 확인하세요

아래 섹션에서 각 행을 설명합니다.

페이지 순서가 깨지는 이유: 리더가 파일 이름을 정렬함

파일 이름을 정렬하는 두 가지 일반적인 방법이 있으며, 페이지 번호의 길이가 다르면 서로 일치하지 않습니다:

  • 일반 문자 정렬은 이름을 한 문자씩 비교합니다. 10.jpg는 1로 시작하므로 2.jpg보다 앞에 옵니다. 순서는 1, 10, 11, 12, 2, 3 … 이 됩니다.
  • 자연 정렬은 연속된 숫자를 하나의 숫자로 읽으므로 2가 10보다 앞에 옵니다. 순서는 1, 2, 3 … 10, 11, 12가 됩니다.

많은 만화 뷰어가 자연스럽게 정렬하지만, 그것을 믿을 수는 없고, 번역된 파일이 어떤 뷰어에서 열릴지도 제어할 수 없습니다. 어디서나 통하는 해결책은 숫자를 0으로 채우는 것입니다: 001.jpg … 010.jpg는 두 방식 모두에서 동일하게 정렬됩니다.

놓치기 쉬운 두 가지 다른 이름 지정 문제가 있습니다:

  • 번호 없는 표지는 마지막에 정렬됩니다. 두 정렬 방식 모두 숫자를 문자보다 앞에 둡니다. cover.jpg와 001.jpg … 024.jpg가 있는 아카이브에서 표지는 마지막 페이지가 됩니다.
  • 챕터 폴더는 이름의 일부로 정렬됩니다. Chapter 10/01.jpg와 Chapter 2/01.jpg는 폴더 이름을 먼저 비교하므로, 폴더 번호도 페이지 번호와 같은 주의가 필요합니다.

BookTranslator는 .cbz 페이지를 자연스럽고 대소문자를 구분하지 않는 정렬로 정렬하며, __MACOSX 폴더, .DS_Store 같은 숨김 파일, Thumbs.db 같은 불필요한 항목을 건너뜁니다. 즉, 번역 중에는 2페이지가 10페이지보다 앞에 옵니다. 하지만 번역된 페이지는 원래 이름을 유지합니다. 1.jpg … 12.jpg를 업로드하면 1.png … 12.png를 돌려받게 되고, 단순 정렬을 사용하는 뷰어에서는 여전히 순서가 뒤섞입니다. 업로드 전에 이름을 바꾸면 모든 뷰어에서 순서가 고정됩니다.

1단계: 아카이브 확인

check_comic_archive.py를 다운로드하여 만화 파일에 실행하세요. Python 3.8 이상만 필요하고 다른 것은 필요 없으며, 아무것도 업로드하지 않습니다:

python3 check_comic_archive.py "My Comic.cbz"

발견한 문제를 보여주기 위해 만화 파일에서 자주 보는 문제가 있는 작은 샘플 아카이브를 만들었습니다. 0으로 채우지 않은 번호가 붙은 12페이지, 번호 없는 cover.png, 한 개의 양면 스프레드, AVIF 파일, macOS 불필요 항목, 그리고 오른쪽에서 왼쪽 만화로 표시된 ComicInfo.xml이 있습니다. README에서 make_test_comic.py로 다시 만드는 방법을 설명합니다. 보고서의 끝부분은 다음과 같습니다:

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.

그 위에 보고서는 읽기 순서대로 각 페이지와 크기를 나열합니다. 높이보다 넓은 페이지는 양면 스프레드로, 너비보다 세 배 이상 높은 페이지는 웹툰 챕터처럼 세로로 긴 스트립으로 표시합니다. 번역 결과가 돌아왔을 때 가장 먼저 확인해야 할 페이지들입니다.

일반 ASCII 파일 이름의 경우 검사기의 자연 정렬은 BookTranslator가 .cbz 페이지에 사용하는 것과 동일한 비교를 따르며, 챕터 폴더, 대소문자 혼용, 공백, 하이픈, 밑줄을 포함합니다. 악센트 문자가 있거나 일본어 가나가 포함된 이름은 도구마다 다르게 정렬될 수 있으며, 이는 페이지 이름을 0으로 채운 일반 숫자로 바꿔야 하는 또 하나의 이유입니다.

2단계: 안전한 페이지 이름으로 다시 패키징

보고서에 순서 문제가 나열되면 먼저 인쇄된 순서를 확인한 다음 다시 패키징하세요:

python3 check_comic_archive.py "My Comic.cbz" --first cover.png --repack "My Comic fixed.cbz"

--repack은 새 CBZ를 작성합니다. 페이지는 표시된 순서대로 0001, 0002 …로 이름이 바뀌고, 불필요한 항목은 제거되며, ComicInfo.xml을 포함한 다른 모든 파일은 변경 없이 복사됩니다. --first는 페이지를 맨 앞으로 이동시키며, 번호 없는 표지를 원래 있어야 할 위치에 되돌리는 방법입니다. 제목 페이지 같은 두 번째 페이지에도 반복할 수 있습니다. 이름 바꾸기는 순서를 고정하므로 다시 패키징하기 전에 수정해야 하며, 후에 해서는 안 됩니다. 아카이브에 ComicInfo.xml 페이지 테이블이 있으면 페이지를 이동할 때 위치가 바뀌므로, 검사기가 나중에 앞표지 표시 같은 항목을 확인하라고 알려줍니다.

샘플 아카이브에서 다시 패키징한 파일은 표지가 맨 앞에 있고 불필요한 항목이 없는 0001.png … 0013.png 페이지를 가집니다. 남은 경고는 AVIF 파일뿐입니다. 검사기는 이미지를 변환할 수 없으므로 해당 페이지를 이미지 편집기에서 열어 PNG, JPEG 또는 WebP로 내보내세요. AVIF, JPEG XL, HEIC 같은 형식은 페이지로 처리되지 않습니다. 번역되지 않은 채 그대로 결과에 복사됩니다.

3단계: CBR, CB7 또는 CBT 파일을 CBZ로 변환

.cbr 파일은 RAR 아카이브, .cb7은 7z, .cbt는 tar입니다. .cbr의 이름을 .cbz로 바꾼다고 변환되지는 않습니다. 검사기는 파일의 첫 바이트를 읽습니다. RAR, 7z 또는 tar 아카이브이면 중단하고 어떤 형식인지 알려줍니다. 대신 일반 페이지 보고서를 인쇄하면 파일은 이미 다른 이름의 ZIP 아카이브이므로 .cbz로 이름을 바꾸고 1단계로 돌아가세요.

실제 RAR, 7z 또는 tar 아카이브를 변환하려면 7-Zip이나 The Unarchiver로 폴더에 압축을 푸세요. 그런 다음 검사기가 해당 폴더를 가리키게 하세요:

7z x "My Comic.cbr" -o"My Comic"
python3 check_comic_archive.py "My Comic" --repack "My Comic.cbz"

다시 패키징하면 추출된 파일이 하위 폴더에 있었더라도 페이지와 ComicInfo.xml이 새 아카이브의 최상위에 놓입니다.

BookTranslator는 CBR, CB7, CBT 업로드도 허용하지만, 이들은 정액 가격의 다른 파이프라인을 거치며, 다음 섹션에서 설명하는 페이지별 과정은 .cbz 파일에 적용됩니다. 먼저 변환하는 것은 몇 초면 되는 작업이며 2단계에서 만든 깔끔한 페이지 이름도 얻을 수 있습니다.

4단계: ComicInfo.xml 유지한 다음 업데이트

많은 아카이브에는 제목, 시리즈, 언어, 읽기 방향이 담긴 ComicInfo.xml 파일이 포함되어 있습니다. 형식은 Anansi Project에서 관리합니다. 여기서 중요한 두 필드는 다음과 같습니다:

  • Manga. 스키마는 Unknown, No, Yes, YesAndRightToLeft를 허용합니다. 마지막 값은 아카이브가 뷰어에게 오른쪽에서 왼쪽으로 페이지를 넘기라고 알리는 방법입니다. 페이지 이미지는 그 설정을 담을 수 없으므로 파일이 손실되면 해당 설정을 사용하는 뷰어도 읽기 방향을 잃게 됩니다.
  • LanguageISO. 만화의 언어 코드를 담습니다. 번역 후에도 변경하기 전까지는 원본 언어(예: ja)를 나타냅니다.

BookTranslator는 ComicInfo.xml을 번역된 아카이브에 변경 없이 복사하므로, 오른쪽에서 왼쪽 만화는 해당 플래그를 지원하는 뷰어에서 오른쪽에서 왼쪽으로 유지됩니다. 나중에 텍스트 편집기에서 파일을 열어 LanguageISO를 대상 언어로 변경하세요. 파일에 <Pages> 테이블이 있으면 해당 항목은 위치로 페이지를 가리키므로 페이지 순서를 바꾸지 않았다면 여전히 일치합니다. ImageSize 같은 크기 값은 원본 이미지를 설명하며 번역된 PNG 페이지와 더 이상 일치하지 않습니다. 이에 의존하는 라이브러리 도구는 파일을 다시 스캔해야 할 수 있습니다.

BookTranslator가 CBZ 파일을 처리하는 방식

.cbz 만화를 업로드하면 BookTranslator는 다음과 같이 작동합니다:

  1. 페이지 이미지(PNG, JPEG, WebP, GIF, BMP 또는 TIFF)를 자연스러운 순서로 나열하고 불필요한 항목은 건너뜁니다.
  2. 각 페이지를 단일 이미지와 동일한 파이프라인으로 처리합니다. 텍스트를 찾아 원본 글자를 제거하고 그 자리에 번역문을 그려 넣으며, 한 번에 몇 페이지씩 작업합니다.
  3. 번역된 각 페이지를 동일한 위치에 PNG로 저장하고 원본 아카이브의 다른 모든 파일도 함께 포함하여 새로운 .cbz 파일을 만듭니다.

결제 전에 알아두면 좋은 몇 가지 세부 사항이 있습니다:

  • 가격은 페이지 수에 따라 결정됩니다. 모든 페이지가 전체 이미지 번역 작업을 거치므로 CBZ는 단어당이 아니라 페이지당 가격이 책정됩니다. 견적은 업로드 후 결제 전에 표시됩니다. 불필요한 항목과 페이지가 아닌 이미지를 제거해도 페이지로 집계되지 않으므로 가격은 변하지 않습니다.
  • 실패한 페이지는 원본 이미지를 유지합니다. 개별 페이지가 실패하면 원본 언어 그대로 올바른 위치에 남아 만화가 여전히 완전하게 유지됩니다. 페이지의 30% 이상이 실패하면 대부분 번역되지 않은 책을 제공하는 대신 작업 자체가 실패합니다.
  • 번역된 만화만 제공됩니다. 만화 아카이브에는 이중 언어 대조 버전이 없습니다.
  • 페이지는 PNG로 반환됩니다. 번역된 아카이브는 JPEG 원본보다 눈에 띄게 커질 수 있습니다.

세로 열과 후리가나가 있는 스캔 만화책처럼 일본어 텍스트 자체도 필요한 경우, 일본어 세로쓰기 OCR 가이드에서 텍스트 페이지의 읽기 순서 문제를 다룹니다.

업로드 전: 파일 접근 권한

이 가이드는 만화가 본인이 소유하고 자유롭게 열 수 있는 파일이라고 가정합니다. 예를 들어 DRM이 없는 구매 파일, 본인이 스캔한 파일 또는 본인 작품 등입니다. 스토어 앱은 종종 자체 리더기에서만 열리는 보호된 형식으로 만화를 제공합니다. 해당 파일의 이름을 바꾸거나 다시 패키징해도 이는 달라지지 않습니다. 확실하지 않다면 먼저 번역 전 전자책 DRM 확인 방법을 읽어보세요. 파일을 다운로드했다고 해서 해당 파일의 번역본을 공유하거나 게시할 권한이 생기는 것은 아닙니다.

만화 번역하기

검사기에서 순서 문제가 없다고 보고하고 모든 페이지가 PNG, JPEG 또는 WebP라면 CBZ를 만화 번역기에 업로드하고 결제 전에 페이지 수 기준 가격을 확인하세요. 번역이 준비되면 사용할 리더기에서 열어보세요. 표지, 첫 번째 양면 페이지, 마지막 페이지를 확인한 다음 ComicInfo.xml의 LanguageISO를 수정하세요. 출판할 시리즈처럼 더 긴 프로젝트의 경우 책 번역 완전 가이드에서 검토, 용어 및 권별 일관성에 대해 다룹니다.

관련 글