BookTranslator
BookTranslator

איך לתרגם ארכיון קומיקס CBZ או CBR בלי לערבב את סדר העמודים

תקנו את סדר העמודים, הכריכות, קבצי הזבל והגדרות מימין-לשמאל לפני שתתרגמו קומיקס CBZ או CBR. כולל בודק ארכיונים חינמי וקובץ לדוגמה.

BookTranslator

BookTranslator Team

קריאה של 9 דקות

קובץ CBZ הוא ארכיון ZIP של תמונות עמודים, וקובץ CBR הוא אותו רעיון באריזה של RAR. שום דבר בתוך הארכיון לא אומר "זה עמוד 2". קוראי קומיקס, וכלי תרגום, קובעים את סדר העמודים על ידי מיון שמות הקבצים. לכן רוב הבעיות בקומיקס מתורגם מתחילות לפני התרגום. כריכה נוחתת בסוף, עמוד 10 מופיע אחרי עמוד 1, או מאנגה שאמורה להיקרא מימין לשמאל נפתחת משמאל לימין.

הריצו שלוש בדיקות לפני ההעלאה. ודאו ששמות העמודים מסתדרים בסדר הנכון, הסירו כל דבר שאינו עמוד, ושמרו את קובץ ה-ComicInfo.xml אם הארכיון מכיל אותו. לאחר מכן העלו את הארכיון כ-CBZ. כתבנו בודק ארכיוני קומיקס חינמי שמריץ את כל שלוש הבדיקות בשנייה ויכול לארוז מחדש את הקובץ עם שמות עמודים בטוחים.

תשובה מהירה: מה לעשות עם הארכיון שלכם

מה יש לכםמה לעשות לפני ההעלאה
קובץ .cbz ששמות העמודים בו הם 001.jpg, 002.jpg …העלו אותו כמו שהוא
קובץ .cbz עם עמודים בשמות 1.jpg … 10.jpg, או cover.jpg ללא מספרארזו אותו מחדש עם שמות מרופדים באפסים (שלב 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.

קוראי קומיקס רבים ממיינים באופן טבעי, אבל אסור לסמוך על זה, ואין לך שליטה באיזה קורא יפתח את הקובץ המתורגם. הפתרון שעובד בכל מקום הוא להוסיף אפסים לספרות: 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"

כדי להראות מה הוא מוצא, בנינו ארכיון דוגמה קטן עם בעיות שאנו רואים לעתים קרובות בקבצי קומיקס. יש בו שנים עשר עמודים שממוספרים ללא אפסים מובילים, 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, כולל תיקיות פרקים, רישיות מעורבת, רווחים, מקפים וקווים תחתונים. שמות עם אותיות מודגשות או קאנה יפנית עשויים להתמיין אחרת בין כלים, וזו סיבה נוספת לשנות שמות עמודים למספרים פשוטים עם אפסים מובילים.

שלב 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, הזזת עמודים משנה את מיקומם; הבודק מזכיר לך לבדוק רשומות כמו סמן הכריכה הקדמית afterwards.

בארכיון הדוגמה, לקובץ שנארז מחדש יש עמודים 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. ה-schema מאפשר Unknown, No, Yes ו-YesAndRightToLeft. האחרון הוא הדרך של ארכיון לומר לקורא להפוך עמודים מימין לשמאל. תמונות העמודים לא יכולות לשאת את ההגדרה הזו, כך שאם הקובץ הולך לאיבוד, קוראים שמשתמשים בו מאבדים גם את כיוון הקריאה.
  • LanguageISO. זה מכיל את קוד השפה של הקומיקס. לאחר תרגום הוא עדיין מציין את שפת המקור, למשל ja, עד שתשנה אותו.

BookTranslator מעתיק את ComicInfo.xml לארכיון המתורגם ללא שינוי, כך שמנגה מימין לשמאל נשארת מימין לשמאל בקוראים שתומכים בדגל. פתח את הקובץ בעורך טקסט afterwards ושנה את LanguageISO לשפת היעד. אם בקובץ יש טבלת <Pages>, הרשומות שלה מפנות לעמודים לפי מיקום, כך שהן עדיין תואמות כל עוד לא שינית את סדר העמודים. ערכי גודל כמו ImageSize מתארים את התמונות המקוריות ולא יתאימו יותר לעמודי ה-PNG המתורגמים. כלי ספרייה שמסתמך עליהם עשוי להזדקק לסרוק מחדש את הקובץ.

מה BookTranslator עושה עם קובץ CBZ

כאשר אתם מעלים קומיקס מסוג .cbz, ‏BookTranslator:

  1. מציג את תמונות העמודים (PNG, JPEG, WebP, GIF, BMP או TIFF) לפי הסדר הטבעי ומדלג על רשומות מיותרות;
  2. מעביר כל עמוד דרך אותו תהליך המשמש לתמונות בודדות. הוא מאתר את הטקסט, מסיר את הכיתוב המקורי ומצייר את התרגום במקומו, תוך עבודה על מספר עמודים בכל פעם;
  3. בונה קובץ .cbz חדש שבו כל עמוד מתורגם נשמר כ‑PNG באותו מיקום, יחד עם כל שאר הקבצים מהארכיון המקורי.

כמה פרטים שכדאי לדעת לפני שאתם משלמים:

  • המחיר תלוי במספר העמודים. כל עמוד הוא הרצת תרגום תמונה מלאה, ולכן קובץ CBZ מתומחר לפי עמוד ולא לפי מילה. ההצעה מופיעה לאחר ההעלאה, לפני התשלום. הסרת רשומות מיותרות ותמונות שאינן עמודים אינה משנה את המחיר, מכיוון שהן אינן נספרות כעמודים.
  • עמוד שנכשל שומר על התמונה המקורית. אם עמוד בודד נכשל, הוא נשאר בשפת המקור ובמיקום הנכון, כך שהקומיקס עדיין שלם. אם יותר מ‑30% מהעמודים נכשלים, המשימה נכשלת במקום לספק ספר שכמעט כולו לא מתורגם.
  • אתם מקבלים רק את הקומיקס המתורגם. לארכיוני קומיקס אין גרסה דו‑לשונית זה לצד זה.
  • העמודים חוזרים כ‑PNG. הארכיון המתורגם יכול להיות גדול באופן ניכר מקובץ JPEG מקורי.

אם אתם זקוקים גם לטקסט היפני עצמו, למשל מכרכי מאנגה סרוקים עם טורים אנכיים ופוריגנה, המדריך שלנו לזיהוי טקסט אנכי ביפנית (OCR) מכסה את בעיות סדר הקריאה בעמודי טקסט.

לפני ההעלאה: גישה לקבצים

מדריך זה מניח שהקומיקס הוא קובץ שבבעלותכם וניתן לפתוח אותו בחופשיות, כגון רכישה ללא DRM, סריקות משלכם או יצירה משלכם. אפליקציות חנויות לעתים קרובות מספקות קומיקס בפורמטים מוגנים שנפתחים רק בקורא שלהן. שינוי שם או אריזה מחדש של קבצים אלה לא משנה זאת. אם אינכם בטוחים, קראו תחילה כיצד לבדוק אם ספר אלקטרוני מוגן ב‑DRM לפני תרגום. הורדת קובץ גם אינה מעניקה לכם רשות לשתף או לפרסם תרגום שלו.

תרגמו את הקומיקס

לאחר שהבודק מדווח שאין בעיות סדר וכל עמוד הוא PNG, JPEG או WebP, העלו את קובץ ה‑CBZ למתרגם המאנגה ובדקו את מחיר מספר העמודים לפני התשלום. כשהתרגום מוכן, פתחו אותו בקורא שבו אתם מתכננים להשתמש. עיינו בעטיפה, בפריסה הראשונה של שני עמודים ובעמוד האחרון, ואז תקנו את LanguageISO בקובץ ComicInfo.xml. לפרויקטים ארוכים יותר, כמו סדרה שאתם מתכננים לפרסם, המדריך המלא לתרגום ספרים שלנו מכסה סקירה, מונחים ועקביות בין כרכים.

פוסטים קשורים