ترجمة SRT العربية معكوسة؟ سبب الترقيم المقلوب وحلّه
علامة الاستفهام في أول الجملة العربية؟ أو سطر إنجليزي ينقلب؟ السبب في اتجاه النص، والحل علامة غير مرئية وسكربت جرّبناه.
فريق سكريبتوريوم ·
إن ظهرت علامة الاستفهام أو النقطة في أول الجملة العربية بدل آخرها، أو انقلب ترتيب سطر يبدأ بكلمة إنجليزية، فالمشغّل غالبًا يعرض ذلك السطر باتجاه من اليسار إلى اليمين. ملف SRT لا يحمل أي معلومة عن اتجاه النص، فيخمّن المشغّل. الحل العملي أن تضع علامة اتجاه غير مرئية (U+200F) في أول كل سطر، وفي هذه المقالة سكربت قصير يفعل ذلك جرّبناه على ملفات SRT وVTT.
كيف تبدو المشكلة؟
هذه الأعراض تُخلط كثيرًا، وعلاج كل واحد منها مختلف:
- علامات الترقيم في الجهة الخطأ: الجملة العربية تنتهي بنقطة أو «؟» أو «!» فتظهر العلامة عند أول كلمة (يمين السطر) كأنها لصقت بها، بدل أن تظهر عند آخر كلمة (يسار السطر). هذا موضوع المقالة.
- كلمة إنجليزية في أول السطر تظهر في آخره: سطر مثل «Zoom اجتماع اليوم على» يُقرأ فيه المصطلح الإنجليزي في آخر الجملة بدل أولها.
- حروف غريبة (؟؟؟ أو رموز): هذا ترميز لا اتجاه. الملف غير محفوظ بـ UTF-8 أو المشغّل يقرؤه بترميز آخر. يقول مركز مساعدة يوتيوب إن ملف SRT يجب أن يكون UTF-8 عاديًا.
- حروف منفصلة غير متصلة: هذه مشكلة خط أو مشغّل لا يدعم الكتابة العربية، ولا علاقة لها بالملف.
لماذا يحدث هذا؟
المرجع في عرض النص ثنائي الاتجاه هو خوارزمية يونيكود المسماة UAX #9. فيها قاعدتان تهمّان هنا. الأولى: اتجاه الفقرة (يمين-يسار أو العكس) يُحدَّد، عند غياب تعليمات أخرى، من أول حرف قوي الاتجاه في السطر. والثانية: علامات الترقيم محايدة الاتجاه، فإن كان اتجاه السطر من اليسار إلى اليمين ووقعت علامة بعد كلام عربي في آخر السطر أخذت اتجاه السطر لا اتجاه العربية، فتُرسم في الجهة الخطأ.
في ملف VTT الأمر موثَّق: تقول مواصفة WebVTT من W3C إن اتجاه كل سطر يُحدَّد بأول حرف قوي الاتجاه فيه، وإن للكاتب أن يضع علامة اتجاه (LRM أو RLM) في أول السطر إن أعطت القاعدة نتيجة خاطئة. أما SRT فلم نجد له مواصفة رسمية، ولذلك تختلف المشغّلات في معاملته، وما يصحّ على مشغّل قد لا يصحّ على غيره.
الحل: علامة RLM في أول كل سطر
علامة الاتجاه من اليمين إلى اليسار (RLM، الرمز U+200F) حرف غير مرئي يتصرّف في الخوارزمية كأنه حرف عربي. فإن وضعتَه في أول السطر صار أول حرف قوي الاتجاه عربيًا، فيُحدَّد السطر كله من اليمين إلى اليسار حتى لو بدأ بكلمة إنجليزية. تفعل ذلك بيدك في أي محرر نصوص يتيح إدخال رموز يونيكود، لكن الملف الطويل يحتاج سكربتًا.
import sys
RLM = "\u200f" # RIGHT-TO-LEFT MARK: invisible, behaves like a right-to-left letter
out, in_cue = [], False
for line in open(sys.argv[1], encoding="utf-8-sig").read().splitlines():
if "-->" in line: # the time line starts a cue (SRT and VTT)
in_cue = True
out.append(line)
elif not line.strip(): # a blank line ends the cue
in_cue = False
out.append(line)
elif in_cue: # a text line: put the mark in front of it
out.append(RLM + line)
else: # cue number, WEBVTT header, notes
out.append(line)
open(sys.argv[2], "w", encoding="utf-8", newline="\n").write("\n".join(out) + "\n")
جرّبنا السكربت على ملفي SRT وVTT خرجا من مصدّر الموقع (فيهما سطر عربي، وسطر عربي من سطرين، وسطر يبدأ بكلمة إنجليزية، واسم متحدث): وضع العلامة في أول كل سطر نص فقط، وترك أرقام الأسطر والأوقات وكلمة WEBVTT كما هي، وتعامل بسلام مع ملف فيه BOM أو نهايات أسطر ويندوز.
- نزّل الترجمة من الموقع بصيغة SRT (أو VTT) وراجع النص أولًا حتى لا تعدّل ملفًا ستغيّره مرة أخرى.
- احفظ السكربت أدناه في ملف اسمه
rlm.py(يلزمك Python على جهازك). - شغّله هكذا:
python rlm.py input.srt output.srt. يضع العلامة في أول كل سطر نص ولا يمسّ الأرقام ولا الأوقات. - افتح الملف الجديد في المشغّل أو المنصة التي سيشاهد فيها جمهورك الفيديو، وانظر إلى ثلاثة أسطر: سطر ينتهي بنقطة أو «؟»، وسطر يبدأ بكلمة إنجليزية، وسطر فيه رقم.
- إن بقيت المشكلة بعد إضافة العلامة فالمشغّل لا يحدّد الاتجاه من النص نفسه. جرّب مشغّلًا آخر أو راجع صفحة مساعدة المنصة.
وإن لم ترد استعمال سكربت فهناك أداة في الموقع تفعل الشيء نفسه داخل متصفحك دون رفع الملف: إصلاح ترقيم SRT العربي. وتبقى النصيحة نفسها: افحص النتيجة في المشغّل الذي سينشر فيه جمهورك.
واسم المتحدث بالإنجليزية في أول السطر؟
عندما تسمّي المتحدثين في الحساب، يكتب المصدّر اسم المتحدث في أول سطر SRT متبوعًا بنقطتين، ثم الكلام. فإن كان الاسم لاتينيًا (مثل «Speaker A») فهو أول حرف قوي الاتجاه، ويصبح السطر كله من اليسار إلى اليمين. حلّان: سمِّ المتحدثين بأسماء عربية قبل التصدير، أو شغّل السكربت. والعلامة عندئذ تسبق الاسم، فيبقى الاسم نفسه كما كتبته.
ماذا يفعل الموقع وماذا لا يفعل؟
فحصنا ما يخرجه المصدّر لسطور عربية بتاريخ 2026-10-26: يكتب النص كما هو، ولا يضيف علامات اتجاه. فهو لا يعالج هذه المشكلة بنفسه، ولا نعدك بأنه سيفعل. والموقع لا يدمج الترجمة في الفيديو ولا يعرضها؛ هو يعطيك الملف لتحمّله في المشغّل أو المنصة.
افحص الملف في المنصة التي سيُنشر فيها
لم نختبر سلوك المشغّلات والمنصات واحدًا واحدًا، ولذلك لا نذكر أيّها يعرض العربية بشكل سليم وأيّها لا. الحكم الأسلم أن تفتح الملف في المكان الذي سيشاهده فيه جمهورك، وتختبر أربعة أسطر قبل أن تنشر:
- سطر ينتهي بنقطة أو «؟».
- سطر يبدأ بكلمة أو رقم إنجليزي.
- سطر فيه اسم متحدث.
- سطر طويل انقسم إلى سطرين.
وللتعرّف على صيغتي الملف اقرأ ما هو ملف SRT؟، ولخطوات صنع الترجمة نفسها كيف تصنع ملف ترجمة SRT لفيديو عربي.
تم التحقق بتاريخ 2026-10-26. خوارزمية يونيكود UAX #9 ومواصفة WebVTT من W3C (قرأنا قواعد الاتجاه فيهما)، وصفحة يوتيوب عن ملفات الترجمة المدعومة (شرط UTF-8). لم نقرأ ولم نختبر: كيف يعامل VLC أو يوتيوب أو برامج المونتاج العلامة، فاترك الحكم لتجربتك. القوائم والحدود تتغيّر؛ راجع صفحة الجهة نفسها قبل أن تعتمد على أي منها.