الفيديو والترجمات · مجموعة أدوات الترجمة
كيف يقوم المتصفح بتحليل ملف SRT: الكتل والفهارس والرموز الزمنية والنص
· كيف يعمل
ترجمات SRT تنسيقات الملفات
SRT يبدو تافهًا حتى تقابل ملفات حقيقية. تتناول هذه المقالة كيفية قيام المحلل اللغوي بتقسيم الكتل وقراءة الفهارس والأكواد الزمنية والتعامل مع النص متعدد الأسطر والاسترداد من الكتل المشوهة التي تحتوي عليها ملفات العالم الحقيقي.
يبدو الملف "جيدًا" ولكن نصف الإشارات مفقودة - كيف يخفي التنسيق ذو المظهر المتساهل التوقعات الصارمة
SRT لا تحتوي على نص مواصفات، ولا يوجد تسجيل MIME ولا أداة التحقق التي تأتي مع اللاعبين. ما يوجد بدلاً من ذلك هو الشكل الذي تتفق عليه معظم البرامج: رقم، وسطر للرمز الزمني، سطر واحد أو أكثر من النص، ثم سطر فارغ. نظرًا لأن الشكل تقليدي وليس محددًا، يمكن أن يبدو الملفان صحيحين في محرر النصوص أثناء تحميل أحدهما فقط، وعادةً ما يكون الفشل صامتًا. يميل اللاعب الذي لا يستطيع قراءة الإشارة إلى تخطيها بدلاً من الإبلاغ عنها، لذا فإن الملف الذي يحتوي على كتلة مكسورة يتم تشغيله بفجوة بدلاً من الخطأ.
لذلك فإن المحلل اللغوي لديه وظيفتان تعملان في اتجاهين متعاكسين. يجب أن تقبل الاختلافات التي تحتوي عليها الملفات الحقيقية، لأن الملفات يتم إنتاجها عن طريق خدمات النسخ والتحرير اليدوي ومحولات التنسيق التي يضع كل منها افتراضات مختلفة. كما يتعين عليها أيضًا رفض القراءات التي من شأنها أن تضع إشارة في الوقت الخطأ، لأن الطابع الزمني الخاطئ بصمت هو أسوأ من الفشل المبلغ عنه.
التقسيم إلى كتل - أسطر فارغة كفواصل ومشكلة المسافات البيضاء الضالة وCRLF
يتم التقسيم على الأسطر الفارغة، وليس على أرقام الفهرس. يقوم المحلل اللغوي بتطبيع نهايات الأسطر أولاً، مع استبدال كل من زوج CRLF وCR الوحيد بسطر جديد واحد، لأن الملف الذي تم تأليفه على Windows وتحريره على Unix يمكن أن يحتوي على كليهما. ثم ينقسم بعد ذلك على سطرين جديدين أو أكثر، ويقطع كل كتلة ناتجة ويتخلص من الكتل الفارغة. هذا الترتيب مهم: التقسيم قبل التطبيع سيؤدي إلى ترك حرف رجوع طائش في نهاية سطر الرمز الزمني، ومن ثم سيفشل الرمز الزمني في المطابقة.
يتم تجريد علامة ترتيب البايت قبل أي من هذا. UTF-8 BOM في بداية الملف عبارة عن ثلاث بايتات يراها المحلل اللغوي الساذج كجزء من رقم الفهرس الأول، وهو ما يكفي لجعل الإشارة الأولى غير قابلة للقراءة بينما يتم تحليل كل إشارة لاحقة. تتم معالجة المسافات الزائدة على السطر الفاصل الفارغ عن طريق القطع، لذا فإن الملف الذي تحتوي أسطره الفارغة على مسافة لا يزال ينقسم بشكل صحيح.
خط الفهرس - لماذا غالبًا ما تكون الأرقام خاطئة أو مكررة أو مفقودة ولماذا لا ينبغي للمحللين أن يثقوا بها
تتم قراءة رقم الفهرس ثم يتم تجاهله. يتم ترقيم الملفات الحقيقية من الصفر، أو إعادة تشغيل الترقيم بعد الدمج، أو تكرار الرقم بعد التحرير اليدوي، أو حذف السطر بالكامل عندما يكتب المحول الملف. إن الثقة في هذه الأرقام تعني وراثة كل خطأ من هذه الأخطاء، لذلك يقوم المحلل بتعيين رقم تسلسلي خاص به بدلاً من ذلك، مع حساب الإشارات التي نجح في بنائها حتى الآن.
يشرح هذا الاختيار أيضًا سبب عدم مطالبة المحلل اللغوي أبدًا بوجود سطر الفهرس. فهو يحدد موقع خط الرمز الزمني من خلال البحث في الكتلة عن السطر الأول الذي يحتوي على السهم، بدلاً من افتراض أن الرمز الزمني هو السطر الثاني. يتم تحليل الكتلة التي لا تحتوي على خط فهرس بشكل طبيعي، بينما تستمر الكتلة التي تحتوي على خطين ضائعين قبل الرمز الزمني في التحليل، لأن الموضع ليس هو ما يحدد الرمز الزمني.
سطر الرمز الزمني - HH:MM:SS,mmm --> HH:MM:SS,mmm، الاختلافات المسموح بها وتلك التي تكسر اللاعبين
تتم مطابقة سطر الرمز الزمني مع تعبير عادي واحد، وتكون التفاوتات فيه متعمدة. الساعات اختيارية، لأن WebVTT يسمح بقراءة ذات مجالين وتقوم المحولات بإصدارها. يتم قبول إما الفاصلة أو النقطة كفاصل بالمللي ثانية بغض النظر عن التنسيق الذي يدعي الملف أنه عليه، لأن الفواصل المختلطة شائعة بدرجة كافية بحيث يؤدي رفضها إلى فشل ملفات جيدة أكثر من الملفات السيئة. يتم تعبئة الأرقام الكسرية على اليمين، لذا تتم قراءة الإشارة التي تنتهي برقم واحد كمئات المللي ثانية بدلاً من الوحدات.
تم رفض قراءتين. يتم رفض حقل الدقائق أو الثواني الأعلى من تسعة وخمسين بدلاً من حمله، لأن تسعين ثانية ليست قراءة ساعة وتشير عادةً إلى ملف تالف أو تم تحويله بشكل خاطئ؛ تطبيعه بصمت من شأنه أن يحرك الإشارة. ينتج عن السطر الذي يفشل تحليل بدايته أو نهايته مشكلة مسجلة تسمي النص المخالف والشكل المتوقع، ويتم تخطي الكتلة بدلاً من تخمينها.
أسطر النص - إشارات متعددة الأسطر، وعلامات التنسيق، والمكان الذي تنتهي فيه الكتلة فعليًا
كل شيء بعد سطر الرمز الزمني هو النص الإرشادي، الذي تم ربطه مرة أخرى بأسطر جديدة. لا يوجد حد للخط ولا توجد محاولة لإعادة التدفق، لذا تبقى الإشارة المكونة من ثلاثة أسطر على شكل ثلاثة أسطر. هذا هو السبب في أن السطر الفارغ حامل: فهو الشيء الوحيد الذي يخبر المحلل بأن النص قد انتهى، ولهذا السبب سيتم قراءة الإشارة التي يحتوي نصها على سطر فارغ على أنها كتلتين وسيتم الإبلاغ عن النصف الثاني على أنه لا يحتوي على رمز زمني.
يتم فصل إعدادات الإشارة عن الطابع الزمني النهائي من خلال مسافتين أو أكثر. يسمح WebVTT بتوجيهات تحديد المواقع مثل المحاذاة ووضع الخط لمتابعة وقت النهاية على نفس السطر، لذلك يقوم المحلل بتقسيمها قبل تحليل الطابع الزمني والاحتفاظ بها بجانب الإشارة. المسافة الواحدة ليست فاصلًا، مما يمنع خط الرمز الزمني غير المرتب من فقدان وقت الانتهاء.
مثال عملي: تحليل ملف مكون من خمسة تلميحات يحتوي على خطأين متعمدين - ما الذي يسترده المحلل اللغوي القوي وما يضع علامة عليه
خذ ملفًا مكونًا من خمس كتل، حيث تعرض سطر الرمز الزمني للكتلة الثالثة للتلف لقراءة 00:01:75,000 --> 00:01:78,000، وفقدت الكتلة الرابعة سطر الرمز الزمني الخاص بها بالكامل أثناء النسخ واللصق. يقرأ المحلل اللغوي الكتلتين رقم واحد واثنين بشكل طبيعي ويرقمهما واحدًا واثنين. تتطابق الكتلة الثالثة مع شكل الرمز الزمني ولكنها تحمل حقلاً للثواني يبلغ خمسة وسبعين، لذلك تم رفضها وتسجيلها كطابع زمني سيئ لتسمية السطر الذي لا يمكنها قراءته.
لا تحتوي الكتلة الرابعة على أي سهم على الإطلاق، لذلك يتم تسجيلها على أنها لا تحتوي على طابع زمني، مع اقتباس أول أربعين حرفًا من الكتلة حتى يمكن العثور على السطر في الملف الأصلي. قم بتحليل خمسة أرقام وتصبح إشارة ثلاثة، وليس إشارة خمسة، لأن الترقيم يحسب الإشارات الناجحة. والنتيجة هي ثلاثة إشارات قابلة للاستخدام وشكاويين محددتين، بدلاً من استثناء الخطأ الأول وعدم وجود معلومات حول الخطأ الثاني.
ما لا يغطيه هذا — ASS/SSA التصميم ورموز تحديد الموضع والنص الذي لا يحتوي على ترجمة مملوءة في SRT
يصف هذا SRT وأجزاء WebVTT التي تشترك في شكل الإشارة الخاص بها. ولا يغطي ASS وSSA، اللذين يحملان رأس البرنامج النصي وتعريفات النمط ومراجع النمط لكل حدث، والتي لا يمكن قراءتها عن طريق التقسيم على أسطر فارغة. يعد توقيت الكاريوكي وأوامر الرسم وعلامات التجاوز المضمنة التي تستخدمها تلك التنسيقات خارج نطاق نماذج المحلل اللغوي لرمز الإشارة والوقت.
كما أنه لا يقوم بإصلاح النص. يُنتج النص المُلصق في ملف بدون رموز زمنية قائمة بالكتل التي لا تحتوي على طابع زمني، والتي يتم الإبلاغ عنها بدقة ولكن لا يمكن تحويلها إلى ترجمات دون وجود معلومات توقيت غير موجودة. تعتبر أخطاء التشفير مصدر قلق منفصل: الملف الذي تم فك ترميزه باستخدام مجموعة أحرف خاطئة يتم توزيعه إلى إشارات صالحة تمامًا ونصها خاطئ، ولن يتمكن أي قدر من التدقيق الهيكلي من اكتشاف ذلك.
الوجبات الجاهزة: التحليل بلطف، والكتابة بدقة - كيف تقرأ مجموعة أدوات الترجمة SRT بشكل فوضوي وتعيد كتابة واحدة نظيفة
قاعدة العمل هي التحليل بلطف والكتابة بدقة. في طريق الدخول، اقبل الساعات الاختيارية، إما الفاصل أو أسطر الفهرس المفقودة أو نهايات الأسطر المختلطة وعلامة ترتيب البايت البادئة، وقم بتسجيل كل خطأ كمشكلة محددة بدلاً من رمي الخطأ الأول، بحيث يمكن إصلاح الملف في مسار واحد. في طريق الخروج، قم بإصدار شكل قانوني واحد.
وهذا ما تفعله مجموعة أدوات الترجمة عندما يتم التحويل. تتم إعادة ترقيم الإشارات من واحدة وتظل متجاورة، ويتم إعادة إصدار الطوابع الزمنية بفاصلة لـ SRT ونقطة لـ WebVTT، والملف الذي يعود هو الشكل الذي يتوقعه اللاعبون بغض النظر عن مدى عدم انتظام الإدخال. الصق الملف الذي رفضه اللاعب في المحول واقرأ المشكلات التي تم الإبلاغ عنها أولاً؛ يقومون بتسمية الإشارة واقتباس السطر، وهو ما يكفي عادةً للعثور على الخطأ في النص الأصلي.