متوفر أيضًا بلغات أخرى: English · Español · Português · Français
تحويل SRT إلى VTT
من SubRip إلى WebVTT بهروب المحارف الذي تشترطه المواصفةُ فعلًا، ومعه تقريرٌ بكل قرارٍ اتخذه التحويل.
ما تحويل SRT إلى VTT؟
SubRip، أي صيغةُ srt.، هو ملفُّ الترجمة الذي عند الناس جميعًا تقريبًا: كتلةٌ مرقَّمة، ووقتُ بدءٍ ووقتُ انتهاء، وسطرٌ أو سطران من النص. وأما WebVTT، أي صيغةُ vtt.، فهو ما تشغّله المتصفحاتُ حقًّا. فعنصرُ video في HTML لا يحمّل ملفَّ srt. البتة، فوضعُ ترجمةٍ في صفحة وِب يمرّ حتمًا بتحويل أحدهما إلى الآخر.
والصيغتان متشابهتان إلى حدٍّ جعل التحويل يُشتهر بأنه تافه. فالفرقان الظاهران أن ملفات WebVTT تبدأ بكلمة WEBVTT، وأن الأختام الزمنية تستعمل نقطةً قبل الأجزاء من الألف حيث يستعمل SubRip فاصلة. وأكثرُ الأدلة يقف عند هذا.
وتلك النصيحةُ ناقصةٌ نقصًا يُحدث ضررًا حقيقيًّا، وبقيةُ هذه الصفحة في الجزء الذي تتركه. وهذا المحوّلُ يجري كلُّه في متصفحك، ويخبرك بكل تغييرٍ أجراه بدل أن يطبّقه صامتًا.
كيف تستعمله؟
- ألصق ملفَّ srt. في الصندوق الأول. افتحه بأيّ محرّر نصوصٍ وانسخ محتواه. ولا يُرفع شيء: فالتحويلُ يقع في هذا اللسان وأنت تكتب.
- اختر ما يُصنع بالتنسيق والترقيم. إبقاءُ وسوم التنسيق يحفظ ما يعرّفه WebVTT فعلًا ويحوّل ما عداه إلى نصٍّ حرفي. وأرقامُ اللقطات يمكن إبقاؤها معرِّفاتٍ في WebVTT أو حذفها، إذ لا يشترطها WebVTT.
- انسخ الناتج أو نزّله ملفَّ vtt. واقرأ التقريرَ تحته أولًا. فهو يسرد كلَّ ما اضطر التحويلُ إلى البتّ فيه — محارفَ هُرِّبت، ووسومًا أُبقيت أو صارت نصًّا، وإحداثياتٍ أُسقطت، وكتلًا تعذّرت قراءتها — لتعرف بالضبط ما الذي تغيّر.
الهروبُ الذي تخطئ فيه أكثرُ المحوّلات
وهنا ما تتخطّاه الأدلة. فWebVTT مواصفةٌ من W3C، وقسمُها 4.2 يعرّف مقطعَ نصِّ اللقطة بأنه سلسلةُ محارفَ غيرِ سطرِ التغذية، وإرجاعِ العربة، وU+0026 علامةِ العطف، وU+003C علامةِ أصغرَ من. فهذان المحرفان لا يجوز ظهورُهما حرفيًّا في نص لقطة WebVTT: بل لا بدّ من كتابتهما إحالتَي محرفٍ في HTML، أي & و<.
و SubRip ليست فيه هذه القاعدة، لأنه ليست فيه قواعدُ أصلًا بالمعنى الرسمي. فترجمةٌ تقول Tom & Jerry، أو تقول 5 < 6، هي SubRip عاديٌّ تمامًا وWebVTT مشوَّه. والمحوّلُ الذي يكتفي بتبديل الفاصلة نقطةً يُخرج ملفًّا معطوبًا على وجهٍ لن تلحظه حتى يبتلع مشغّلٌ النصَّ أو يرسم شيئًا غريبًا، لأن علامةَ أصغرَ من بلا هروبٍ تفتح ما يحسبه المحلّلُ وسمًا.
وهذا ليس محلَّ اجتهاد، والأولى التحقّقُ لا التصديق. فإذا أمررتَ التحويلَ الساذج لـ Tom & Jerry < 5 على محلّل WebVTT المرجعي، وهو الذي ينشره محرّرو المواصفة أنفسُهم، خرجت ثلاثةُ أخطاء: هروبٌ غيرُ صحيح، ووسمُ بدءٍ لا يجوز التعليقُ عليه إلا لـ v وlang، ووسمُ بدءٍ غيرُ صحيح. وإذا أمررتَ ناتجَ هذا المحوّل على المحلّل نفسِه لم يخرج خطأٌ واحد، في ملفات الاختبار كلِّها.
والأداةُ تهرّب علامةَ العطف قبل علامة أصغرَ من، وهذا يبدو تفصيلًا وليس كذلك. فبالعكس تُهرَّب علاماتُ العطف في الكيانات التي كُتبت للتوّ مرةً ثانية، فتصير < هي &lt;، وتظهر على الشاشة ترميزًا لا محرفًا.
لا مواصفةَ لـSubRip، فالمحوّل يخبرك بحدسه
WebVTT له مواصفةٌ تستطيع الرجوع إليها. وSubRip ليست له واحدةٌ في أيّ مكان: إنما يعرّفه ما تقبله المشغّلات، فقراءتُه سلسلةُ قرارات. والملفاتُ الحقيقية تستعمل نقطةً بدل الفاصلة، وتُسقط الساعات من الأختام الزمنية، وتحذف أرقامَ التسلسل، وتفصل الكتلَ بأسطرٍ فيها فراغاتٌ لا أسطرٍ خاليةٍ حقًّا، وتبدأ بعلامة ترتيب البايتات. وكلُّ ذلك مقبولٌ هنا، وكلُّ واحدةٍ منها تُحصى.
وذلك الإحصاءُ هو المقصود. فلمّا لم تكن ثمة سلطةٌ يُرجَع إليها، كان أصدقَ ما يصنعه محوّلٌ أن يخبرك بما قرّر. فالتقريرُ يسرد كم علامةَ عطفٍ وعلامةَ أصغرَ من هُرِّبت، وكم وسمَ تنسيقٍ أُبقي في مقابل ما صار نصًّا، وكم ختمًا زمنيًّا جاء بلا ساعات، وكم لقطةً بلا رقم، وهل أُزيلت علامةُ ترتيب بايتات.
ويخبرك كذلك بعللٍ كانت في ملفك أصلًا بدل أن يصلحها صامتًا: لقطاتٍ ينتهي وقتُها قبل أن يبدأ، ولقطاتٍ مدّتها صفر، ولقطاتٍ تبدأ قبل انتهاء سابقتها. والمقلوبةُ تُخرَج بالترتيب الذي يشترطه WebVTT، إذ يرفضها المحلّلُ المرجعي على غير ذلك، لكن وقوعَ هذا يُبلَّغ لا يُخفى.
والكتلُ التي تتعذّر قراءتها تُترك خارج الناتج وتُعرض عليك كاملة. فالمحوّلُ الذي يُسقط صامتًا ما لا يفهمه أسوأُ من الذي يفشل جهرًا، لأنك تعلم به حين يشاهد أحدٌ المقطع.
حدودٌ صادقة
ملفاتُ SubRip المتداولة تحمل أحيانًا إحداثيات X1 وX2 وY1 وY2 على سطر التوقيت، لوضع الترجمة على الشاشة. وهذه تُسقط، ويُبلَّغ عددُها. فWebVTT يعبّر عن الموضع بإعداداتِ لقطةٍ تُقاس نسبًا مئويةً من المقطع، وذاك نموذجٌ مختلفٌ حقًّا، ولا سبيل إلى نقلٍ أمينٍ بينهما دون معرفة أبعاد المقطع. والموضعُ الخطأ أسوأُ من لا موضع، فتأبى الأداةُ الحدس.
ووسومُ التنسيق تُعامَل بما يعرّفه WebVTT فعلًا: b وi وu وruby وrt وv وlang وc. فهذه تنجو. وأما وسمُ font بخاصّية لون، وهو شائعٌ في SubRip، فليس ترميزَ WebVTT، فيصير نصًّا حرفيًّا ويُحصى كذلك. وذلك متعمَّدٌ وهو القراءةُ الصادقة: فإبقاؤه كما هو يعطي ملفًّا يرفضه المحلّلُ المرجعي، وحذفُه صمتًا يُضيع محتوًى قد تريده.
وهذه تحوّل نصًّا لا ملفات. فألصق المحتوى بدل إفلات ملف، وفي ذلك أيضًا أن مسألة الترميز تبقى بيد محرّر نصوصك لا مما يُحزَر هنا. وWebVTT يجب أن يكون UTF-8؛ فإن كان ملفُّ srt. بترميز ويندوز قديم فافتحه وأعد حفظه UTF-8 وإلا لم تنجُ الحروفُ المشكولة.
وأخيرًا فهي تحوّل في اتجاهٍ واحد. فWebVTT يقبل مناطقَ وكتلَ أنماطٍ وإعداداتِ لقطاتٍ لا يستطيع SubRip التعبير عنها، فالذهابُ عكسًا يُضيع أشياء صامتًا، وهو عينُ العيب الذي تشكو منه هذه الصفحة.
لماذا هي مجانية؟
لأن تشغيلها لا يكلّف شيئًا. فالتحويلُ يقع في متصفحك وأنت تكتب. لا يُرفع شيء، ولا يُسجَّل شيء، ولا يرى خادومٌ ترجماتِك، إذ لا خادومَ في الأمر.
فلا حساب ولا تسجيل ولا علامةَ مائية ولا حدَّ للحجم غير ما يحتمله متصفحك. وقواعدُ الهروب من مواصفة WebVTT لدى W3C، والناتجُ يُفحص بالمحلّل المرجعي الذي ينشره محرّرو تلك المواصفة، لا بتصوّر موقعٍ آخر عن شكل ملف vtt.