BookTranslator
BookTranslator

Hoe je een CBZ- of CBR-striparchief vertaalt zonder de paginavolgorde door elkaar te halen

Los de paginavolgorde, covers, rommelbestanden en rechts-naar-links-instellingen op voordat je een CBZ- of CBR-strip vertaalt. Inclusief een gratis archiefcontrole en een voorbeeldbestand.

BookTranslator

BookTranslator Team

11 min lezen

Een CBZ-bestand is een ZIP-archief met pagina-afbeeldingen, en een CBR-bestand is hetzelfde idee maar dan verpakt met RAR. Niets in het archief zegt "dit is pagina 2". Stripreaders en vertaaltools bepalen de paginavolgorde door de bestandsnamen te sorteren. De meeste problemen met een vertaalde strip beginnen dus vóór de vertaling. Een cover belandt achteraan, pagina 10 verschijnt na pagina 1, of een manga die van rechts naar links gelezen moet worden, opent van links naar rechts.

Voer drie controles uit voordat je uploadt. Zorg dat de paginanamen in de juiste volgorde sorteren, verwijder alles wat geen pagina is, en bewaar het bestand ComicInfo.xml als het archief er een bevat. Upload het archief daarna als CBZ. We hebben een gratis striparchiefcontrole geschreven die alle drie de controles in een seconde uitvoert en het bestand opnieuw kan verpakken met veilige paginanamen.

Snel antwoord: wat je met je archief moet doen

Wat je hebtWat je moet doen voordat je uploadt
Een .cbz waarvan de pagina's 001.jpg, 002.jpg … hetenUpload het zoals het is
Een .cbz met pagina's die 1.jpg … 10.jpg heten, of een ongenummerde cover.jpgVerpak het opnieuw met namen met voorloopnullen (stap 2)
Een .cbr-, .cb7- of .cbt-bestandPak het uit en verpak de map daarna opnieuw als een .cbz (stap 3)
Pagina's opgeslagen als AVIF, JPEG XL of HEICConverteer die pagina's eerst naar PNG, JPEG of WebP
Een manga die van rechts naar links gelezen moet wordenBewaar de ComicInfo.xml en werk het taalveld bij na de vertaling
Een strip gekocht via een winkelappControleer of je echt een DRM-vrij bestand hebt dat je mag gebruiken

De onderstaande secties leggen elke rij uit.

Waarom de paginavolgorde stukgaat: readers sorteren bestandsnamen

Er zijn twee veelvoorkomende manieren om bestandsnamen te sorteren, en ze verschillen van mening zodra paginanummers verschillende lengtes hebben:

  • Een gewone tekensortering vergelijkt namen teken voor teken. 10.jpg begint met 1, dus komt het vóór 2.jpg. Je krijgt de volgorde 1, 10, 11, 12, 2, 3 …
  • Een natuurlijke sortering leest een reeks cijfers als een getal, dus 2 komt vóór 10. Je krijgt 1, 2, 3 … 10, 11, 12.

Veel stripboeklezers sorteren op een natuurlijke manier, maar daar kun je niet op rekenen, en je hebt geen controle over in welke lezer het vertaalde bestand wordt geopend. De oplossing die overal werkt, is de nummers met voorloopnullen aan te vullen: 001.jpg … 010.jpg sorteren op beide manieren hetzelfde.

Twee andere naamgevingsproblemen worden gemakkelijk over het hoofd gezien:

  • Een omslag zonder nummer sorteert als laatste. Beide sorteermethoden plaatsen cijfers vóór letters. In een archief met cover.jpg en 001.jpg … 024.jpg wordt de omslag de laatste pagina.
  • Hoofdstukmappen sorteren als onderdeel van de naam. Chapter 10/01.jpg en Chapter 2/01.jpg vergelijken eerst de mapnamen, dus de mapnummers hebben dezelfde zorg nodig als de paginanummers.

BookTranslator ordent .cbz-pagina's met een natuurlijke, hoofdletterongevoelige sortering en slaat rommelitems over zoals __MACOSX-mappen, verborgen bestanden zoals .DS_Store en Thumbs.db. Dit betekent dat pagina 2 vóór pagina 10 komt terwijl het bestand wordt vertaald. De vertaalde pagina's behouden echter hun oorspronkelijke namen. Als je 1.jpg … 12.jpg uploadt, krijg je 1.png … 12.png terug, en een lezer die een gewone sortering gebruikt, haalt ze nog steeds door elkaar. Hernoemen vóór het uploaden lost de volgorde op voor elke lezer.

Stap 1: Controleer het archief

Download check_comic_archive.py en voer het uit op je stripboek. Het vereist Python 3.8 of nieuwer en niets anders, en het uploadt niets:

python3 check_comic_archive.py "My Comic.cbz"

Om te laten zien wat het vindt, hebben we een klein voorbeeldarchief gemaakt met problemen die we vaak in stripboekbestanden zien. Het heeft twaalf pagina's genummerd zonder voorloopnullen, een cover.png zonder nummer, één dubbele pagina, een AVIF-bestand, macOS-rommelitems en een ComicInfo.xml gemarkeerd als manga van rechts naar links. De README legt uit hoe je het opnieuw opbouwt met make_test_comic.py. Hier is het einde van het rapport:

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.

Daarboven somt het rapport elke pagina in leesvolgorde op met de grootte. Het markeert een pagina die breder is dan hoog als een dubbele pagina, en een pagina die meer dan drie keer zo hoog is als breed als een lange strook, zoals een webtoon-hoofdstuk. Dat zijn de pagina's om eerst te bekijken wanneer de vertaling terugkomt.

Voor gewone ASCII-bestandsnamen volgt de natuurlijke sortering van de checker dezelfde vergelijking die BookTranslator gebruikt voor .cbz-pagina's, inclusief hoofdstukmappen, gemengde hoofdletters, spaties, koppeltekens en underscores. Namen met geaccentueerde letters of Japanse kana kunnen tussen hulpprogramma's anders sorteren, wat nog een reden is om pagina's te hernoemen naar gewone nummers met voorloopnullen.

Stap 2: Herpak met veilige paginanamen

Als het rapport volgordeproblemen vermeldt, bekijk dan eerst de afgedrukte volgorde en herpak dan:

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

--repack schrijft een nieuwe CBZ. De pagina's worden hernoemd naar 0001, 0002 … in de getoonde volgorde, rommelitems worden verwijderd en elk ander bestand, inclusief ComicInfo.xml, wordt ongewijzigd gekopieerd. --first verplaatst een pagina naar voren, wat de manier is om een omslag zonder nummer terug te zetten waar die hoort. Je kunt het herhalen voor een tweede pagina, zoals een titelpagina. Het hernoemen legt de volgorde vast, dus los het op vóór je herpakt, niet erna. Als het archief een ComicInfo.xml-paginatabel heeft, verschuiven verplaatste pagina's hun posities; de checker herinnert je eraan om daarna items zoals de vooromslagmarkering te controleren.

In het voorbeeldarchief heeft het herpakte bestand pagina's 0001.png … 0013.png met de omslag vooraan en geen rommelitems. De enige overgebleven waarschuwing is het AVIF-bestand. De checker kan afbeeldingen niet converteren; open die pagina in een afbeeldingseditor en exporteer deze als PNG, JPEG of WebP. Formaten zoals AVIF, JPEG XL en HEIC worden niet als pagina's behandeld. Ze worden ongewijzigd en onvertaald in het resultaat gekopieerd.

Stap 3: Zet een CBR-, CB7- of CBT-bestand om naar CBZ

Een .cbr-bestand is een RAR-archief, een .cb7 is 7z en een .cbt is tar. Een .cbr hernoemen naar .cbz converteert het niet. De checker leest de eerste bytes van het bestand. Voor een RAR-, 7z- of tar-archief stopt het en vertelt het je welke je hebt. Als het in plaats daarvan een normaal paginarapport afdrukt, is het bestand al een ZIP-archief onder een andere naam: hernoem het naar .cbz en ga terug naar Stap 1.

Om een echt RAR-, 7z- of tar-archief te converteren, pak je het uit naar een map met 7-Zip of The Unarchiver. Wijs de checker vervolgens naar die map:

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

Het herpakken plaatst de pagina's en ComicInfo.xml op het hoogste niveau van het nieuwe archief, zelfs als de uitgepakte bestanden in een submap stonden.

BookTranslator accepteert ook CBR-, CB7- en CBT-uploads, maar die gaan door een andere pijplijn tegen een vaste prijs, en het pagina-voor-pagina-proces dat in de volgende sectie wordt beschreven, geldt voor .cbz-bestanden. Eerst converteren is een paar seconden werk en levert je ook de schone paginanamen uit Stap 2 op.

Stap 4: Behoud ComicInfo.xml en werk het daarna bij

Veel archieven bevatten een ComicInfo.xml-bestand met de titel, serie, taal en leesrichting. Het formaat wordt onderhouden door het Anansi Project. Twee van de velden zijn hier van belang:

  • Manga. Het schema staat Unknown, No, Yes en YesAndRightToLeft toe. Het laatste is hoe een archief een lezer vertelt om pagina's van rechts naar links om te slaan. De pagina-afbeeldingen kunnen die instelling niet bevatten, dus als het bestand verloren gaat, verliezen lezers die het gebruiken ook de leesrichting.
  • LanguageISO. Dit bevat de taalcode van het stripboek. Na vertaling vermeldt het nog steeds de brontaal, bijvoorbeeld ja, totdat je het wijzigt.

BookTranslator kopieert ComicInfo.xml ongewijzigd naar het vertaalde archief, dus manga van rechts naar links blijft van rechts naar links in lezers die de vlag ondersteunen. Open het bestand daarna in een teksteditor en wijzig LanguageISO in de doeltaal. Als het bestand een <Pages>-tabel heeft, verwijzen de items naar pagina's op positie, dus ze komen nog steeds overeen zolang je de pagina's niet hebt herschikt. Groottewaarden zoals ImageSize beschrijven de originele afbeeldingen en komen niet meer overeen met de vertaalde PNG-pagina's. Een bibliotheekhulpprogramma dat daarop vertrouwt, moet het bestand mogelijk opnieuw scannen.

Wat BookTranslator doet met een CBZ

Wanneer je een .cbz-strip uploadt, doet BookTranslator het volgende:

  1. de pagina-afbeeldingen (PNG, JPEG, WebP, GIF, BMP of TIFF) worden in natuurlijke volgorde opgesomd en rommelbestanden worden overgeslagen;
  2. elke pagina doorloopt dezelfde pipeline als bij losse afbeeldingen. De tekst wordt gevonden, de originele lettering wordt verwijderd en de vertaling wordt op die plek getekend, een paar pagina's tegelijk;
  3. er wordt een nieuwe .cbz gemaakt waarin elke vertaalde pagina als PNG op dezelfde positie wordt opgeslagen, samen met alle andere bestanden uit het originele archief.

Een paar details zijn het weten waard voordat je betaalt:

  • De prijs hangt af van het aantal pagina's. Elke pagina is een volledige afbeeldingsvertaling, dus een CBZ wordt per pagina geprijsd in plaats van per woord. De prijsopgave verschijnt na het uploaden, vóór het afrekenen. Het verwijderen van rommelbestanden en losse niet-pagina-afbeeldingen verandert daar niets aan, omdat die niet als pagina's worden geteld.
  • Een mislukte pagina behoudt de originele afbeelding. Als één pagina mislukt, blijft die in de brontaal en op de juiste positie staan, zodat de strip nog steeds compleet is. Als meer dan 30% van de pagina's mislukt, mislukt de taak in plaats van een grotendeels onvertaald boek op te leveren.
  • Je krijgt alleen de vertaalde strip. Striparchieven hebben geen tweetalige naast-elkaar-versie.
  • Pagina's komen terug als PNG. Het vertaalde archief kan aanzienlijk groter zijn dan een origineel in JPEG.

Als je ook de Japanse tekst zelf nodig hebt, bijvoorbeeld uit gescande mangabundels met verticale kolommen en furigana, dan behandelt onze gids over Japanse verticale tekst-OCR die leesvolgordeproblemen voor tekstpagina's.

Voordat je uploadt: bestandstoegang

Deze gids gaat ervan uit dat de strip een bestand is dat je bezit en vrij kunt openen, zoals een DRM-vrije aankoop, je eigen scans of je eigen werk. Winkelapps leveren strips vaak in beveiligde formaten die alleen in hun eigen lezer openen. Het hernoemen of opnieuw inpakken van die bestanden verandert daar niets aan. Als je het niet zeker weet, lees dan eerst hoe je een e-book controleert op DRM vóór vertaling. Het downloaden van een bestand geeft je ook geen toestemming om een vertaling ervan te delen of publiceren.

De strip vertalen

Zodra de checker geen volgordeproblemen meldt en elke pagina PNG, JPEG of WebP is, upload je de CBZ naar de mangavetaler en controleer je de prijs op basis van het aantal pagina's voordat je betaalt. Wanneer de vertaling klaar is, open je die in de lezer die je wilt gebruiken. Bekijk de omslag, de eerste dubbele pagina en de laatste pagina, en pas dan LanguageISO aan in ComicInfo.xml. Voor langere projecten, zoals een serie die je wilt publiceren, behandelt onze complete gids voor boekvertaling beoordeling, terminologie en consistentie over delen heen.

Gerelateerde berichten