مم يتكوّن ملف SRT
ملف SRT قائمة من الكتل المرقّمة. تتألف كل كتلة من ثلاثة أجزاء: رقم، ووقت بداية ونهاية بصيغة hours:minutes:seconds,milliseconds، وسطر أو سطرين من النص. ويُنهي السطر الفارغ الكتلة.
329
00:24:22,584 --> 00:24:23,784
absence ...
يقرأ مشغّل الفيديو الأوقات فقط. فيعرض النص من وقت البداية إلى وقت النهاية ويتجاهل كل ما عدا ذلك. ولهذا قد تُقرأ الترجمة بشكل سليم تمامًا ومع ذلك يكون عرضها سيئًا: الكلمات سليمة، لكنها مرتبطة بأوقات غير صحيحة.
ثلاث طرق تفسد بها الترجمة التوقيت
هذه الأمثلة من اختبارنا لأربع مهام طويلة، حيث ترجمت ثلاثة نماذج دردشة ملف SRT نفسه، وهو من 1,200 سطر ومدته 85 دقيقة، إلى الإسبانية في رد واحد.
1. دمج سطر في السطر الذي قبله. كان في الأصل "...take advantage of Lady Bracknell's temporary" في السطر 328 و"absence ..." في السطر 329. وضع أحد النماذج الجملة كاملة في السطر 328 وحذف السطر 329. فصارت كلمة "absence" تظهر على الشاشة قبل موعدها بثانية، وأصبحت الفترة الزمنية للسطر 329 فارغة.
2. إعادة ترقيم كل ما بعد السطر المحذوف. ثم رقّم النموذج نفسه بقية الملف ابتداءً من 329 دون أي فجوة. وبعد دمج ثانٍ عند السطر 357، صار 870 سطرًا من أصل 1,200 يحمل رقمًا مختلفًا عن الأصل. ما زال الملف يُشغَّل. لكن إذا قارنت أنت أو محرّرك الترجمة بالأصل بحسب رقم السطر، فسيُقرن كل سطر بعد 329 بسطر غير صحيح.
3. تغيّر رقم واحد في رمز الوقت. كتب نموذج آخر 00:54:55,839 --> 00:54:51,039 لسطر كان 00:54:45,839 --> 00:54:51,039. أصبح السطر ينتهي قبل أن يبدأ. وبحسب المشغّل، قد يُتخطى السطر، أو يومض دون أن يُرى، أو يتعذّر تحميل الملف.
أما الإزاحة التي تشمل الملف كله، فيكون كل سطر فيها متأخرًا أو متقدمًا بالمقدار نفسه من السطر الأول، فهي مشكلة مختلفة: الترجمة أُعدّت لنسخة أخرى من الفيديو أو لمعدل إطارات مختلف. والترجمة لا تسبب ذلك.
فحص يستغرق 2 دقيقة
افتح الملف الأصلي والترجمة جنبًا إلى جنب في أي محرر نصوص.
- السطر الأخير. انتقل إلى نهاية الملفين. يجب أن يتطابق آخر رقم وآخر رمز زمني فيهما. إذا انتهت الترجمة عند 1,198 وانتهى الأصل عند 1,200، فهذا يعني أن سطرين دُمجا أو حُذفا.
- ثلاثة أسطر من المنتصف. ابحث في الترجمة عن ثلاثة رموز زمنية مأخوذة من الأصل، تقع تقريبًا عند ربع الملف ونصفه وثلاثة أرباعه. يجب أن يحمل كل رمز منها الرقم نفسه في الملفين. وأول موضع يختلف فيه الرقم هو الموضع الذي ضاع فيه سطر.
- أوقات مستحيلة. ابحث عن أي سطر يسبق وقت نهايته وقت بدايته. في الملفات الطويلة، يكشف سكربت صغير أو أداة فحص الأخطاء في محرر الترجمات هذه الحالات فورًا.
- آخر عشر دقائق. شغّل الترجمة في المشغّل وانتقل إلى قرب النهاية. إذا ظهرت الأسطر في وقتها هناك، فالأرجح أن الملف سليم.
إذا كان لديك Python، فهذا السكربت القصير ينفّذ الفحوص من 1 إلى 3 على أي زوج من الملفات (python3 srtcheck.py original.srt translated.srt). وعلى الترجمات الثلاث في اختبارنا، أبلغ بالضبط عن الأخطاء الموصوفة أعلاه.
import re, sys
def cues(path):
text = open(path, encoding="utf-8-sig").read().replace("\r", "")
return re.findall(r"^(\d+)\n(\d\d:\d\d:\d\d,\d{3}) --> (\d\d:\d\d:\d\d,\d{3})", text, re.M)
a, b = cues(sys.argv[1]), cues(sys.argv[2])
print(f"lines: {len(a)} original, {len(b)} translated")
print(f"last: {a[-1]} vs {b[-1]}")
times = {(s, e): n for n, s, e in a}
renumbered = sum(1 for n, s, e in b if (s, e) in times and times[(s, e)] != n)
changed = [n for n, s, e in b if (s, e) not in times]
broken = [n for n, s, e in b if e <= s]
missing = [n for n, s, e in a if (s, e) not in {(s2, e2) for _, s2, e2 in b}]
print(f"renumbered: {renumbered}, changed time codes: {changed[:10]}, "
f"end before start: {broken[:10]}, original lines missing: {missing[:10]}")
إذا اجتازت الترجمة الفحوص الأربعة، فاستخدمها. وإذا فشلت في أحدها، فغالبًا ما يكون أسرع أن تترجم الملف من جديد بأداة تحافظ على التوقيت بدلًا من إصلاحه يدويًا.
طول السطر فحص منفصل
كثيرًا ما تأتي الترجمات إلى الإسبانية أو الألمانية أو الفرنسية أطول من النص الإنجليزي. يسمح دليل أسلوب Netflix للإنجليزية (الولايات المتحدة) بـ 42 حرفًا في السطر الواحد وسطرين لكل ترجمة. وفي اختبارنا، تراوحت نسبة الأسطر المترجمة التي يزيد فيها أحد السطور على 42 حرفًا بين 32 و447 من أصل 1,200، بحسب النموذج. وقد أنتجت أداتنا 105، لذا يستحق الأمر الفحص أيًّا كانت الأداة التي تستخدمها: السطور الطويلة يصعب قراءتها، لكنها لا تُفسد التوقيت.
كيف تتجنب المشكلة
تحدث الأخطاء أعلاه لأن النموذج يُطلب منه كتابة الأرقام والأوقات من جديد مع الترجمة. أبقِها بعيدًا عن يده. تقرأ أداة ترجمة ملفات الترجمة لدينا ملف .srt أو .vtt، وترسل النص فقط في كتل تصل إلى 60 سطرًا، وتطلب من جديد أي سطر يعود ناقصًا، وتنسخ كل رقم وكل وقت من ملفك الأصلي. وعلى ملف الاختبار نفسه المكوّن من 1,200 سطر، عادت الأسطر الـ 1,200 كلها بأرقام ورموز زمنية مطابقة.
الجزء الأول من كل مهمة مجاني وبدون تسجيل. وفيلم كامل أو موسم كامل، حتى 5,000 سطر في 30 ملفًا كحد أقصى، بسعر $5 دفعة واحدة. وللّغات الأكثر طلبًا صفحات خاصة بها: SRT إلى الإسبانية والعربية والفارسية.
المنهج والبيانات
المصادر
- SubRip (SRT file format) — Wikipedia
- English (USA) Timed Text Style Guide — Netflix Partner Help Center
- Timed Text Style Guide: General Requirements — Netflix Partner Help Center