BookTranslator
BookTranslator

كيفية ترجمة ملف TXT كبير: الترميز والفصول وفواصل الأسطر

أصلح الترميز، وحدد الفصول، وأزل فواصل الأسطر الصلبة قبل ترجمة ملف .txt طويل. مع ملفات نموذجية، وأداة فحص مجانية، واختبار من 9 جولات.

BookTranslator

BookTranslator Team

قراءة 15 دقيقة

لترجمة ملف TXT كبير، جهّز ثلاثة أشياء قبل رفعه إلى أي مكان. أولاً، تأكد من فك ترميز النص بشكل صحيح واحفظه بترميز UTF-8. ثانياً، ضع كل عنوان فصل في سطر مستقل مع سطر فارغ قبله وبعده. ثالثاً، إذا كان الملف يقطع الأسطر عند عرض ثابت، فادمج تلك الأسطر بحيث يصبح كل فقرة سطراً واحداً، مع سطر فارغ بين الفقرات. بعد ذلك ترجم الملف بأكمله، ثم قارن عدد الفقرات والفصول بين المصدر والترجمة.

لا يحتوي ملف النص العادي على أنماط أو عناوين أو بيانات وصفية. كل ما تعرفه أداة الترجمة عن بنيته يأتي من البايتات وفواصل الأسطر. لهذا السبب تتكرر المشكلات الثلاث نفسها: قراءة البايتات بترميز خاطئ، أو عدم إمكانية تمييز الفصول عن الأسطر العادية، أو أن فواصل الأسطر لا تشير إلى مكان انتهاء الجملة.

أنشأنا ملفات نموذجية بأربعة ترميزات، وكتبنا أداة فحص مجانية، وترجمنا قصة قصيرة ذات فواصل أسطر صلبة إلى الصينية المبسطة تسع مرات باستخدام نموذج محلي. تعامل النموذج مع فواصل الأسطر الصلبة بشكل جيد عندما رأى الملف كاملاً. لكنه قطع الجمل ونسب فعل إحدى الشخصيات إلى أخرى في الجولات الثلاث التي قُسم فيها الملف إلى أجزاء حسب عدد الأسطر.

قائمة تحقق سريعة

الفحصكيف يبدو الشكل الجيدكيفية إصلاحه
الترميزتُقرأ الأسطر الأولى بشكل صحيح؛ الملف بترميز UTF-8أعد الفتح بالترميز الصحيح، ثم احفظ بترميز UTF-8
علامة ترتيب البايتلا توجد، أو واحدة تعرفهااحفظ باسم "UTF-8" بدلاً من "UTF-8 مع BOM" إذا اشتكت أداة ما
عناوين الفصولكل عنوان في سطر مستقل، مع سطر فارغ قبله وبعدهأصلح العناوين القليلة التي تلتصق بالنص
الفقراتسطر فارغ واحد بين الفقراتأضف أسطراً فارغة حيث تبدأ الفقرات بمسافة بادئة فقط
فواصل الأسطر الصلبةكل فقرة سطر طويل واحدادمج الأسطر داخل الفقرات، لكن اترك الشعر والرسائل والقوائم كما هي
نهايات الأسطرنمط واحد في كل الملفحوّل نهايات CR القديمة الخاصة بماك؛ LF وCRLF كلاهما مقبول
نص تالفلا توجد أحرف �احصل على نسخة أفضل. التحويل لا يمكنه إعادة الأحرف المفقودة

يقدّم المدقّق تقريرًا عن كل صف ويصلح الترميز وعلامة ترتيب البايت ونهايات الأسطر والالتفاف الصلب. أما عناوين الفصول والأسطر الفارغة المفقودة فمتروكة لك لإصلاحها يدويًا. شغّل python3 check_txt.py inspect yourfile.txt لرؤية التقرير، وpython3 check_txt.py convert yourfile.txt clean.txt --unwrap لكتابة نسخة UTF-8 مع ضم الفقرات. لا يحتاج سوى Python 3، ولا يغيّر الملف الأصلي أبدًا.

الخطوة 1: اضبط الترميز بشكل صحيح

ملف TXT هو سلسلة من البايتات. الترميز هو القاعدة التي تحوّل تلك البايتات إلى أحرف، والملف لا يذكر أي قاعدة استُخدمت. إذا خمّن برنامج ما خطأً، فستحصل على نص مشوّه: نص غير مفهوم، أو الأسوأ، نص يبدو سليمًا لكنه ليس ما كُتب.

إليك العبارة الصينية نفسها، 最后一班渡轮 ("العبارة الأخيرة")، مقروءة بالقاعدة الخاطئة. أنشأنا هذه باستخدام برامج الترميز المدمجة في Python، ويمكنك إعادة إنتاجها باستخدام الملفات النموذجية.

حُفظ باسمقُرئ باسمما تراه
GB18030Windows-1252×îºóÒ»°à¶ÉÂÖ
GB18030UTF-8���һ�����
UTF-8GBK鏈�鍚庝竴鐝�娓¤疆
Shift_JIS (اليابانية 最後のフェリー)GBK嵟屻偺僼僃儕乕

الصف الأخير هو الخطير. البايتات اليابانية المقروءة كصينية تنتج أحرفًا صينية حقيقية، دون خطأ ودون �. ستقوم أداة ترجمة بترجمتها بكل سرور، وستكون النتيجة هراء بقواعد نحوية سليمة.

يُظهر مدقّقنا لماذا لا يمكنك الاعتماد على "لقد فُتح دون أخطاء". عندما شغّلناه على عينة Shift_JIS، فكّ ترميزان الملف بأكمله دون خطأ واحد:

encoding: unknown (not UTF-8)
these legacy encodings decode without errors; read the previews,
because a wrong one can still produce real-looking characters:
  gb18030  戞堦榖丂嵟屻偺僼僃儕乕
  cp932    第一話 最後のフェリー

السطر الثاني فقط ياباني. الأول سلسلة من أحرف صينية نادرة لم يكتبها أحد. على عينة GB18030 الصينية، فكّ خمسة ترميزات دون أخطاء، وواحد فقط منها، GB18030، أظهر عنوان الفصل 第一章 最后一班渡轮. لذا القاعدة بسيطة: حدّد الترميز بقراءة الأسطر الأولى، لا بما إذا كان البرنامج قد اشتكى.

أين تخطئ التخمينات عادةً:

  • النص الصيني من أنظمة Windows القديمة أو المواقع الصينية غالبًا ما يكون بترميز GBK أو GB18030. يغطي GB18030 كل ما يغطيه GBK، ومعيار الترميز WHATWG، الذي تتبعه المتصفحات، يذهب أبعد من ذلك: إذ ينص على أن "مُفكِّك ترميز GBK هو مُفكِّك ترميز gb18030". إذا كان الملف بترميز GBK، فإن فتحه بترميز GB18030 يعمل.
  • الصينية التقليدية من تايوان أو هونغ كونغ غالبًا ما تكون بترميز Big5.
  • اليابانية غالبًا ما تكون بترميز Shift_JIS، أو النسخة الموسعة من مايكروسوفت منه، والتي تسميها Windows وPython بـ cp932.
  • الكورية غالبًا ما تكون بترميز EUC-KR.
  • ملف مليء ببايتات NUL، أو ملف يبدو فيه كل حرف آخر فارغًا، عادةً ما يكون بترميز UTF-16 بدون علامة ترتيب البايت.

علامة ترتيب البايت (BOM) هي رمز قصير غير مرئي في بداية الملف يعلن عن UTF-8 أو UTF-16 أو UTF-32. عندما تكون موجودة، فثق بها. يقول المعيار نفسه إن "علامة ترتيب البايت أكثر موثوقية من أي شيء آخر". يقرأ مدققنا علامة BOM أولاً ولا يخمن إلا عند عدم وجودها.

احفظ الملف بترميز UTF-8

بمجرد أن يُقرأ النص بشكل صحيح، احفظه بترميز UTF-8. يصف معيار WHATWG ترميز UTF-8 بأنه "الترميز الأنسب لتبادل Unicode"، وهو الخيار الأكثر أمانًا لأي أداة ترجمة.

هناك سبب ثانٍ يهم للترجمة على وجه الخصوص. الترميزات القديمة تغطي فقط أحرف منطقتها. لا يوجد في Shift_JIS رمز لـ 这، الحرف الأول من 这是最后一班渡轮، ولا في Big5 رمز له أيضًا، لأنه حرف صيني مبسط. لا يمكن لـ Windows-1252 تخزين الأحرف السيريلية. إذا كان لا بد من كتابة الملف المترجم مرة أخرى بالترميز القديم الأصلي، فقد لا تناسب اللغة الهدف. يقول مترجم TXT من BookTranslator إنه يكتشف الترميزات الشائعة تلقائيًا ويعيد الملف المترجم "بنفس ترميز الإدخال"، لذا فإن البدء من UTF-8 يزيل السؤال تمامًا.

يمكنك التحويل في محرر نصوص (افتح بالترميز الصحيح، ثم "حفظ باسم" UTF-8)، أو باستخدام iconv -f GB18030 -t UTF-8 in.txt > out.txt على macOS أو Linux، أو باستخدام المدقق:

python3 check_txt.py convert book.txt book-utf8.txt --encoding gb18030

إذا كان الملف يحتوي بالفعل على أحرف �، فقد حدث الضرر قبل حصولك عليه. لن يؤدي التحويل مرة أخرى إلى استعادة الأحرف المفقودة. ابحث عن نسخة أفضل من المصدر.

الخطوة 2: اجعل الفصول سهلة العثور عليها

الفصول مهمة لثلاثة أسباب. يُترجم الملف الطويل على أجزاء، وفواصل الفصول هي أنظف أماكن للقطع. سترغب في التحقق من كل فصل بعد الترجمة. وإذا حوّلت النص لاحقًا إلى كتاب إلكتروني، تصبح عناوين الفصول جدول المحتويات.

ضع كل عنوان في سطر منفصل، مع سطر فارغ قبله وبعده، واستخدم نمطًا واحدًا في جميع أنحاء الكتاب. هذه هي الأنماط التي يحصيها مدققنا:

  • Chapter 1, Chapter One: The Last Ferry, Part Two, Prologue, Epilogue
  • 第一章, 第12回, 第三話, 第二卷
  • رقم أو رقم روماني وحده في سطر، مثل 12 أو XII.

شغّل inspect واقرأ قائمة العناوين التي وجدها. إذا كان في الكتاب 40 فصلًا ووجد المدقق 37، فهناك ثلاثة عناوين مخفية: أحدها يندمج مع الجملة الأولى، أو أحدها يستخدم كلمة مختلفة مثل "Ch. 7"، أو أحدها يحتوي على نص في نفس السطر. أصلح هذه الثلاثة يدويًا. سيستغرق ذلك وقتًا أقل من العثور على المشكلة في ملف مترجم.

الخطوة 3: أزل فواصل الأسطر الصلبة، بحذر

بعض ملفات TXT تكسر كل سطر عند عرض ثابت، بحيث يتناسب النص مع طرفية بسيطة أو نافذة ضيقة. النص المنسوخ من ملفات PDF ومخرجات OCR يفعل الشيء نفسه عند عرض الصفحة المطبوعة. في هذه الملفات، يعني فاصل السطر "أن السطر كان ممتلئًا"، وليس "أن الجملة أو الفقرة انتهت".

من السهل اكتشاف التفاف الأسطر الصلب. في نموذجنا الملتف بشكل صلب، أفاد المدقق:

non-empty lines: 43; longest line: 66 chars; 25 lines within 12 chars of the longest
line breaks inside paragraphs that do not end a sentence: 23
looks hard-wrapped: consider convert --unwrap

الحل هو ضم الأسطر داخل كل فقرة والاحتفاظ بالأسطر الفارغة بين الفقرات. الفخ هو النص الذي تكون فواصل أسطره حقيقية: الشعر، كلمات الأغاني، الرسائل، العناوين، الوصفات، والقوائم. يتضمن نموذجنا رسالة من خمسة أسطر:

My dear Mara,
The key is under the blue pot.
Do not let your uncle sell the boat.
With love, always,
Nonna

إن "استبدال كل فاصل سطر واحد بمسافة" بشكل أعمى يحول ذلك إلى سطر واحد متصل. إن --unwrap في المدقق يضم فقط الفقرة عندما تكون معظم أسطرها قريبة من العرض الكامل، لذا تُترك كتل الأسطر القصيرة مثل هذه الرسالة دون تغيير. في نموذجنا، أعاد بناء الملف الأصلي غير الملتف بدقة، بايتًا بايتًا، بما في ذلك الرسالة. في ملفك الخاص، تحقق من بعض الفقرات المضمومة وكل كتلة شعر قبل أن تثق به.

تفصيلان آخران. عند ضم أسطر نص صيني أو ياباني، لا تضف مسافة بينها؛ يضم المدقق أسطر CJK، بما في ذلك الأسطر التي تنتهي بعلامات ترقيم CJK، دون مسافة. وإذا كان نصك من OCR، فقد تكون الكلمات أيضًا مقسمة بواصلات في نهايات الأسطر، وهذا يحتاج إلى قرارات خاصة به. يغطي دليلنا لإصلاح فواصل أسطر OCR والواصلات ذلك.

ما اختبرناه: النص الملتف بشكل صلب، كاملًا مقابل مقطّعًا

أردنا معرفة ما إذا كان التفاف الأسطر الصلب يضر الترجمة فعلاً، أم أنه يبدو غير مرتب فقط. كتبنا قصة قصيرة من 396 كلمة للاختبار: ثلاثة فصول، وخمس عشرة فقرة، وحوار، والرسالة أعلاه، وفاصل مشهد * * *. حفظناها مرتين بالكلمات نفسها: دون التفاف، بفقرة واحدة في كل سطر، وملتفة عند 66 حرفاً، التي تحتوي على 43 سطراً غير فارغ بدلاً من 19.

ثم طلبنا من نموذج محلي ترجمتها إلى الصينية المبسطة بثلاث طرق، ثلاث مرات لكل طريقة:

  1. ملتفة، الملف كاملاً. الملف الملتف في طلب واحد.
  2. دون التفاف، الملف كاملاً. الملف غير الملتف في طلب واحد.
  3. ملتفة، مقطعة كل 12 سطراً. الملف الملتف مقسم كل 12 سطراً، طلب واحد لكل قطعة، والردود مجمعة معاً. هذا ما يحدث عندما يقسم سكربت أو أداة ملفاً طويلاً حسب عدد الأسطر بدلاً من الفقرات.

كان النموذج Qwen 3.6 27B (Q4_K_M) في LM Studio، مع إيقاف التفكير ودرجة حرارة 0.3، على جهاز Apple M4 Max بذاكرة 64 جيجابايت. استخدم كل طلب نفس الجملة التوجيهية الواحدة. شغلناه في 28 أكتوبر 2026. السكربت هو run_llm_txt_test.py، وجميع المخرجات التسعة منشورة دون تحرير، وresults.csv يحتوي على صف واحد لكل تشغيل.

ملتفة، الملف كاملاًدون التفاف، الملف كاملاًملتفة، مقطعة كل 12 سطراً
الفقرات المحفوظة (15)3 من 3 تشغيلات3 من 3 تشغيلات0 من 3 (14 في كل مرة)
عناوين الفصول المحفوظة (3)3 من 33 من 33 من 3
الرسالة محفوظة كخمسة أسطر3 من 33 من 33 من 3
جمل مقطوعة عند نقطة تقسيم003 في كل تشغيل
حدث منسوب إلى شخصية خاطئة003 من 3 تشغيلات

أدهشتنا النتيجة الأولى. عندما رأى النموذج الملف كاملًا مع فواصل الأسطر الثابتة، قام بدمج الأسطر بنفسه. كانت المخرجات الثلاث جميعها تحتوي على فقرة واحدة لكل سطر، بنفس الأسطر الـ 19 كما في التشغيلات غير الملفوفة، وكانت تُقرأ بنفس الجودة. لذا فإن الفصل الثابت للأسطر وحده لم يضر بهذا النموذج في هذا الملف القصير.

أما تقطيع الملف حسب عدد الأسطر فقد أضر، وفي نفس المواضع في كل مرة. انتهت ثلاث من القطع ذات الـ 12 سطرًا في منتصف جملة. تنتهي الأولى عند "He pointed with his" وتبدأ القطعة التالية بـ "pen at a three-storey building on the corner." عند الترجمة بشكل منفصل، فقد النصف الثاني فاعله. في تشغيلتين عادت الترجمة كـ 她瞥了一眼街角那栋三层楼的建筑، أي "ألقت نظرة على المبنى ذي الطوابق الثلاثة عند الزاوية." وفي الثالثة، انتهت بـ 随后她重新回到填字游戏上، أي "ثم عادت إلى الكلمات المتقاطعة." في القصة، يشير الرجل في كشك التذاكر ثم يعود إلى كلماته المتقاطعة. في التشغيلات الثلاث جميعها، سيعتقد قارئ النص الصيني أن مارا هي من فعلت ذلك.

القطع الثاني، بين "the careful, slightly old-fashioned hand she had learned at a" و"convent school," ترك الجملة الصينية معلقة عند 那是她在، أي "كان ذلك حيث هي،" في التشغيلات الثلاث جميعها (أضافت إحدى التشغيلات 一 شاردة)، واختفت كلمة "learned". أما القطع الثالث فقد قسم الجملة المتعلقة بالمصاريع على سطرين، وحوّل النصف الثاني عبارة "painted, not well, but not long ago" إلى طلاء متقشر: 油漆虽已斑驳 في تشغيلتين و油漆剥落 في الثالثة. ولأن القطع وُصلت بفاصل سطر واحد، اختفى السطر الفارغ قبل فاصل المشهد، ولهذا كان في كل تشغيل 14 فقرة بدلًا من 15. التقط مدققنا عدد الفقرات. لكنه لم يستطع التقاط الحرف الخاطئ؛ اكتشفنا ذلك بالقراءة.

ماذا يعني هذا لملفك:

  • إزالة لفّ الأسطر تحميك من أدوات التقسيم التي لا تتحكم بها. كل ملف طويل يُقسَّم في مكان ما، سواء بواسطة سكربتك الخاص، أو حد نافذة الدردشة، أو الأداة التي ترفع إليها. إذا كانت الفقرات أسطرًا مفردة تفصلها أسطر فارغة، فيمكن لأي أداة تقسيم معقولة أن تقطع بين الفقرات بدلًا من داخل الجملة.
  • كانت أسوأ الأخطاء سليمة الأسلوب. جملة "ألقت نظرة على المبنى" صينية جيدة. سيلاحظ القارئ فواصل الأسطر الغريبة عند كل قطع وجملة 那是她在 المعلقة، لكن لا شيء يحدد أن الحرف الخاطئ أو الطلاء المتقشر أخطاء. الأخطاء عند نقاط التقسيم هي أخطاء معنى أولًا، وأخطاء تنسيق ثانيًا.
  • كان هذا نموذجًا واحدًا وقصة قصيرة واحدة. ملف بهذا القصر يتسع في طلب واحد، لذا لم تضطر التشغيلات الكاملة للملف إلى تقسيم أي شيء. الرواية الكاملة يجب تقسيمها، وهنا بالضبط تؤتي التحضير في الخطوات من 1 إلى 3 ثمارها. تختبر هذه الملفات التحضير والتقسيم، وليس خط أنابيب BookTranslator نفسه.

ملاحظة أصغر: عبر التشغيلات الست الكاملة للملف، كتب النموذج اسم مارا كـ 玛拉 في خمس تشغيلات و马拉 في واحدة. كان كل مخرج متسقًا مع نفسه، لكن الطلبات المنفصلة لم تتفق مع بعضها. لكتاب طويل يُترجم على قطع كثيرة، تحافظ قائمة بالأسماء وتهجئاتها المتفق عليها على اتساق كل فصل. يوضح دليل المصطلحات الخاص بنا كيفية إنشاء واحدة.

الخطوة 4: ترجم، ثم تحقق من الأعداد

عندما يكون الملف نظيفًا، تكون ترجمته الجزء السهل. يمكنك رفعه إلى مترجم TXT من BookTranslator، الذي يقبل ملفات .txt و.md و.mdx، ويذكر أنه يتعامل مع ملفات TXT حتى 300 ميغابايت، ويعرض السعر قبل الدفع. لا توجد ترجمة كاملة مجانية، لكن الرفع نفسه يخبرك بالتكلفة. إذا كنت تفضل العمل مع نموذج دردشة أو نموذج لغوي محلي، فقسّم الملف بنفسك عند حدود الفصول أو الفقرات واحتفظ بقائمة مصطلحات للأسماء. إذا كان نصك بصيغة Markdown بدلًا من النثر العادي، فراجع دليل ترجمة Markdown، لأن صيغة Markdown تحتاج إلى قواعد خاصة بها.

بعد الترجمة، قارن الملفين:

python3 check_txt.py compare book-utf8.txt book-translated.txt

إذا لم يكن أي من الملفين بترميز UTF-8، فأضف --source-encoding أو --translated-encoding. يعرف فحص الفصول أنماط العناوين الإنجليزية والصينية/اليابانية؛ للغات هدف أخرى، أضف الكلمة المحلية لـ "فصل" إلى النمط في أعلى السكربت.

هذا هو التقرير لإحدى تشغيلاتنا المقطعة:

                            source  translated
paragraphs                      15          14  <- differs
chapter headings                 3           3
non-empty lines                 43          24  <- differs
scene breaks (* * *)             1           1
replacement chars                0           0
source script LATIN characters left in translation: 0

اقرأه هكذا:

  • يجب أن تتطابق الفقرات وعناوين الفصول. غالبًا ما تعني فقرة مفقودة أن فقرتين دُمجتا أو أن واحدة أُسقطت.
  • قد تختلف الأسطر غير الفارغة لسبب وجيه. انتقلت تشغيلاتنا الكاملة للملف الملفوف من 43 سطرًا إلى 19 لأن النموذج دمج الأسطر الملفوفة بشكل ثابت، وكان ذلك تحسينًا. قارن الأسطر فقط عندما كان المصدر غير ملفوف أصلًا.
  • الحروف المتبقية من كتابة المصدر تشير إلى مقاطع لم تُترجم إطلاقًا. القليل منها طبيعي للأسماء أو مصطلحات المنتجات أو الاقتباسات؛ أما سلسلة منها فهي قسم تم تخطيه.
  • حروف الاستبدال في الترجمة تعني مشكلة ترميز في طريق الإخراج.

لا يمكن للأعداد أن تخبرك إن كانت الترجمة صحيحة. اقرأ الفقرة الأولى والأخيرة من كل فصل، والفقرات على جانبي كل موضع قُسّم فيه الملف. هناك وجد اختبارنا كل خطأ جسيم.

الأسئلة الشائعة

لماذا يبدو ملف TXT الخاص بي جيدًا في برنامج ومشوشًا في آخر؟

خمّن البرنامجان ترميزين مختلفين. أحدهما خمّن صحيحًا. ابحث عن الترميز الذي يعرض النص بشكل صحيح، ثم احفظ الملف بترميز UTF-8 ليقرأه كل برنامج بالطريقة نفسها.

هل يجب تحويل ملف TXT إلى EPUB أو DOCX قبل الترجمة؟

فقط إذا كنت تريد ما تضيفه تلك الصيغ. ملف TXT نظيف بفصول واضحة يُترجم جيدًا كما هو. إذا كنت تريد جدول محتويات وتنقلًا بين الفصول وكتابًا إلكترونيًا يمكنك قراءته على جهاز، فإن دليلنا حول تحويل رواية ويب إلى EPUB جاهز للترجمة يشرح ذلك خطوة بخطوة.

هل يمكنني ترجمة ملف TXT بلغات مختلطة؟

نعم، لكن أخبر المترجم بما يجب تركه كما هو. الاقتباسات أو المصطلحات بلغة ثالثة، والأسماء التي يجب أن تبقى بخطها الأصلي، يكون حمايتها بمسرد أو بتعليمات قصيرة أسهل من تصحيحها لاحقًا.

ماذا عن ملف TXT قمت بتنزيله من موقع ويب؟

تحقق من أن لديك الحق في استخدامه. بالنسبة للكتب في الملكية العامة أو الملفات التي كتبتها بنفسك، تنطبق الخطوات أعلاه. ترميز الملف أو صيغته لا يخبرك شيئًا عن حقوق النشر الخاصة به.

مقالات ذات صلة