Last updated: 2026-04-13
انتشرت مؤخرًا تغريدة للمطوّر @cat88tw حول تجربته في بناء مترجم EPUB باستخدام Claude Code، وحصدت 1,671 مشاهدة. لم تنتشر لأن الفكرة غريبة، بل لأن كل مطوّر حاول الأمر نفسه عرف بالضبط ما يتحدث عنه.
الفكرة تبدو بسيطة: ملفات EPUB ليست سوى HTML وCSS مضغوطة في ملف ZIP. نماذج الذكاء الاصطناعي الحديثة تترجم بدقة عالية. اربط بينهما وانتهِ خلال عطلة نهاية الأسبوع.
لكن الواقع مختلف تمامًا. ما ستحصل عليه في عطلة نهاية الأسبوع هو نموذج أولي بتنسيق مكسور وفصول مشوّهة وصور مفقودة. بناء مترجم EPUB موثوق يتعامل مع كتب حقيقية هو تحدٍّ هندسي جاد.
ملف EPUB هو أرشيف ZIP يحتوي على ملفات XHTML وأنماط CSS وصور وخطوط وبيانات وصفية ونظام تنقّل. معياران (EPUB 2 وEPUB 3) يحددان كيفية تنظيم هذه العناصر، لكن الناشرين يفسّرون المعيار بطرق متباينة جدًا.
بعض الكتب تقسّم المحتوى إلى ملف لكل فصل، وأخرى تضع كل شيء في ملف XHTML واحد ضخم. جدول المحتويات قد يكون ملف NCX أو Navigation Document أو كليهما. الأنماط قد تكون مضمّنة أو مرجعية خارجية. الخطوط قد تكون مدمجة أو معتمدة على النظام.
مترجمك يحتاج للتعامل مع كل هذه الاختلافات. أي افتراض تضعه — مثل "الفصول دائمًا ملفات منفصلة" — سيُكسر بكتاب حقيقي.
ملف OPF يسرد كل مورد في الكتاب وترتيب القراءة. إذا أضاف مترجمك ملفات أو حذفها دون تحديث هذا الملف، يصبح EPUB غير صالح.
هنا تفشل معظم المشاريع. ترجمة النص هي الجزء السهل. الحفاظ على التنسيق بعد الترجمة هو الكابوس الحقيقي.
تحتاج إلى استخراج النص القابل للترجمة مع الحفاظ على وسوم HTML، ثم إعادة تعيين النص المترجم إلى الوسوم الصحيحة — رغم أن ترتيب الكلمات وبنية الجمل وطول النص تغيّرت تمامًا في اللغة الهدف. يجب الحفاظ على الروابط التشعبية دون ترجمتها، والتعامل مع كيانات HTML دون إفسادها.
إذا أرسلت HTML الخام إلى نموذج لغوي، سيخرّب الوسوم في كثير من الأحيان. وإذا أزلت HTML أولًا وترجمت نصًا عاديًا، تفقد كل التنسيق بلا رجعة.
اضرب هذا في كل نمط تنسيق في الكتاب: الحواشي، النص العلوي، الأحرف الاستهلالية الكبيرة، الاقتباسات، الشعر، المعادلات الرياضية، والجداول ذات الخلايا المدمجة.
كتاب نموذجي يحتوي على 60,000 إلى 100,000 كلمة. لا يمكن لأي نموذج لغوي حالي معالجة كتاب كامل في استدعاء واحد. يجب تقسيم الكتاب إلى أجزاء.
لكن التقسيم يجلب مشاكله:
أدوات الترجمة المحترفة تحتفظ بقوائم مصطلحات ونوافذ سياق متداخلة بين الأجزاء.
الترجمة تغيّر طول النص. جملة إنجليزية من 20 كلمة قد تصبح 35 كلمة بالألمانية أو 12 حرفًا بالصينية. هذا يؤثر على التخطيط:
عند إضافة دعم الصينية واليابانية والكورية أو العربية، تتضاعف التعقيدات.
تحديات CJK:
تحديات الكتابة من اليمين لليسار:
معظم المطورين لا يكتشفون هذه المشاكل إلا عندما يحاول مستخدم ترجمة كتاب إلى العربية ويُبلّغ أن النتيجة غير مقروءة.
إنتاج EPUB صالح يبدو صحيحًا على كل تطبيق قراءة أمر صعب بشكل مفاجئ. قارئات الكتب الإلكترونية ليست متصفحات ويب — كل منها ينفّذ مجموعة فرعية مختلفة من معيار EPUB بخصوصياته.
Apple Books يعرض ميزات EPUB 3 التي يتجاهلها Kindle. معالجة CSS في Kobo تختلف عن Google Play Books. أجهزة Kindle القديمة تتطلب تحويلًا إلى MOBI. الاختبار عبر القارئات يستغرق وقتًا ويكشف أخطاء خاصة بكل منصة.
ترجمة كتاب من 300 صفحة قد تتطلب أكثر من 200 استدعاء API. كل استدعاء قد يفشل. مترجمك يحتاج منطق إعادة المحاولة، وتتبع التقدم، والتحقق من المخرجات، وتقدير التكلفة.
كل تحدٍّ أعلاه قابل للحل. لكن حلّها جميعًا معًا — والحفاظ عليها محلولة مع تطور المعايير وتغيّر واجهات API — هو عمل بدوام كامل.
هذا بالضبط سبب وجود EPUBTranslator. بدلًا من قضاء أسابيع في بناء وتصحيح خط أنابيب خاص بك، ارفع ملفًا واختر لغة واحصل على EPUB مترجم بتنسيق سليم. الأداة تتعامل مع كل التعقيدات: تحليل البنية، الحفاظ على التنسيق، إدارة الأجزاء، تعديل CSS، دعم CJK وRTL، التحقق، واستعادة الأخطاء.
إذا كنت مطوّرًا يستمتع بالتحديات، فبناء مترجم EPUB مشروع تعليمي ممتاز. لكن إذا كان هدفك قراءة كتاب بلغة أخرى، فالأداة المتخصصة ستوفّر عليك الكثير من الوقت والإحباط. المطوّر صاحب التغريدة الشهيرة تعلّم هذا الدرس بالطريقة الصعبة — لست مضطرًا لتكرار التجربة.