إضافة BOM إلى الترجمة
أو ألصق نص الترجمة
الخيارات
علامة ترتيب البايتات ثلاثة بايتات في أول الملف تملي أي ترميز فيه. وهي غير مرئية في كل محرر ولاعب، ولا تشغل حيزا على الشاشة، ولا يتغير شيء في الترجمة عند إضافتها أو إزالتها. ويهتم بها نوعان من الأدوات: برامج Windows التي تكتب الترجمات، وتضعها افتراضيا، والمحللات الصارمة في خطوط البناء، التي ترفض ملفا يبدأ بها. وهذه الصفحة تفتح الصندوق بالحالة التي يسميها عنوانها، فتقلبه إن ظهر أن ملفك على الحالة الأخرى. والملف بترميز UTF-16 يحمل BOM دائما، لأن القارئ يعرف بها أي ترتيبي بايت ينظر إليه — وطلب إزالتها هناك يتركها في مكانها.
معدل الإطارات الذي تحسب به التوقيتات. في صفحات الصيغ هو ما يحتاجه MicroDVD، لأنه يخزن التوقيت أرقام إطارات. وفي صفحات معدل الإطارات هو المعدل الذي وقت به الملف — النسخة التي صنعت لها الترجمة — ويأخذ الصندوق الثاني في الصفحة معدل الفيديو الذي ستستخدمها معه. والشائعة 23.976 و24 و25 و29.97 و30 و50 و59.94 و60. والخطأ فيه يزحزح الخط الزمني كله، وفي صفحات معدل الإطارات يزحزحه بنسبة لا بمقدار ثابت.
علامة ترتيب البايتات حرف واحد هو U+FEFF، يقف في مقدمة الملف قبل كل شيء آخر. في ترميز UTF-8 هي ثلاثة بايتات هي EF BB BF، وأول ما يصادفه القارئ عند فتح الملف. لا يبدو شيء في ناتج هذه الصفحة مختلفا: المقاطع نفسها، والرموز الزمنية نفسها، ونهايات الأسطر نفسها، ثم علامة واحدة أمام المقطع الأول.
السبب في أن أحدا يريدها هناك أن العلامة هي طريقة الملف في أن يعلن أنه UTF-8 من غير أن ينطق بها. البرنامج الذي يفتح ملف ترجمة مضطر إلى تخمين ترميزه، وكثير من البرامج — مشغلات Windows القديمة وأدوات تأليف الأقراص والسكربتات التي تقرأ السطر الأول — يحسم بالنظر إلى البايتات الأولى بدلا من تحليل الملف كله. إن أعطيتها إياه خرج الاسم المشكول أو علامة التنصيص المنحنية أو الحرف اليوناني سليما، وإن منعتها عنه قرئ الملف نفسه بترميز النظام المحلي فتحولت تلك الحروف إلى شيء آخر بالكلية.
الاتجاه الآخر هو الذي يصادفه الناس عادة أولا: ملف يحمل العلامة يفتحه برنامج لا يتوقعها، فيقرأ البايتات الثلاثة ثلاثة أحرف ويطبعها في أول السطر الأول، ومن هنا تأتي كتلة الرموز الصغيرة في أعلى ملفات الترجمة. إن كان هذا ما تراه فأنت في الصفحة الخطأ: العلامة تحتاج إلى إزالة لا إلى إضافة، وصفحة الإزالة مرتبطة في أسفل هذه الصفحة.
وما لن تفعله هذه الصفحة هو إعادة تنسيق ملفك في الطريق. لا تمس نهايات أسطر CRLF ولا أرقام المقاطع ولا التوقيتات ولا نص أي مقطع، ولا تقرر ترميز ملفك عنك: الملف غير UTF-8 مشكلة أخرى ولها صفحتها. الذي تفعله هو إضافة حرف واحد في المقدمة، وإن كان الحرف موجودا أصلا تركته الصفحة كما هو بدلا من إضافة علامة ثانية، فتشغيل الصفحة مرتين يعطي الملف نفسه الذي يعطيه تشغيل واحد.
العلامة تضاف إلى الملف الذي تحصل عليه. لذلك قد يكون الجانبان في هذه الصفحة متطابقين أمام عينك — فالحرف غير المرئي هو بالضبط ما يبدو عليه الحرف غير المرئي — والطريقة الصادقة لفحص النتيجة هي النظر إلى البايتات الثلاثة الأولى في عارض سداسي عشري أو إلى ترميز الملف في شريط الحالة في محررك. الصيغ الاثنتا عشرة التي تعالجها هذه الأداة كلها تقبل العلامة، لأن العلامة خاصية لبايتات الملف الافتتاحية ولا تعرف شيئا عن المقاطع. ولا يغادر أي ملف جهازك في أي خطوة: القراءة والتعديل والكتابة كلها داخل متصفحك.
أمثلة
ملف ترجمة ASCII مع علامة في المقدمة
الإدخال
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
الناتج
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
يبدأ النص المتوقع بحرف غير مرئي: U+FEFF، وهو البايتات الثلاثة EF BB BF، قبل الرقم 1 في أول رقم مقطع. ستبدو اللوحتان متطابقتين لك، وليس ذلك خطأ عرض — الفرق بين هذين الملفين ثلاثة بايتات لا شكل لأي منها. احصل على النتيجة وافتحها في محرر يعرض الترميز، أو انظر إلى البايتات الأولى في عارض سداسي عشري، وستكون أول ما تراه.
ملف Windows: أضيفت العلامة وبقيت علامات الإرجاع
الإدخال
1
00:00:01,000 --> 00:00:02,000
The room is dark.
الناتج
1
00:00:01,000 --> 00:00:02,000
The room is dark.
ما يكتبه برنامج ترجمة على Windows شيئان: علامة، ونهايات أسطر CRLF، ولهذا يختلطان في الذهن — لكنهما منفصلان، وهذه الصفحة تكتب الأول فقط. كل علامة إرجاع في الملف المتوقع هي من الملف الأصلي، والعلامة أضيفت أمامها. الصفحة التي تعيد كتابة نهايات الأسطر أيضا كانت ستعيد تنسيق كل ملف يمر بها بصمت، وذلك بالضبط نوع التغيير الذي لا ينتبه إليه أحد حتى يهم به أداة في آخر السلسلة.
ملف يحمل العلامة أصلا
الإدخال
1
00:00:01,000 --> 00:00:02,000
Already marked.
الناتج
1
00:00:01,000 --> 00:00:02,000
Already marked.
المدخل يحمل علامة أصلا، فالمخرج هو المدخل بايتا ببايت: يحتفظ الملف بعلامة واحدة بالضبط. النسخة الساذجة من هذه الصفحة، التي تلصق علامة من غير أن تزيل الموجودة أولا، تنتج ملفا بعلامتين، والعلامة المكررة غير مرئية في كل محرر بينما هي ملف مختلف لكل ما يقرأ البايتات الافتتاحية. تشغيل الصفحة على ملف يحمل العلامة يجب أن يكون شيئا تفعله من غير تفكير.
الأسئلة الشائعة
ما الذي تضيفه علامة BOM فعليا إلى ملف ترجمة؟
حرفا واحدا في مقدمة الملف: U+FEFF، مكتوبا في UTF-8 على هيئة البايتات الثلاثة EF BB BF. لا يضاف مقطع ولا يحذف ولا يعدل، ولا يتحرك رمز زمني، وتخرج أرقام المقاطع ونهايات الأسطر كما دخلت، ويبقى نص كل سطر كما هو. إن قارنت الملفين فالسطر الوحيد المختلف هو الأول، والفرق فيه ثلاثة بايتات في بدايته.
لماذا تبدو اللوحتان في صفحة إضافة BOM إلى الترجمة متطابقتين؟
لأن الحرف المضاف لا شكل له. U+FEFF مسافة فاصلة صفرية العرض، فاللوحة التي تعرض النص كما يعرضه مشغلك تعرض الشيء نفسه قبل الإضافة وبعدها. التغيير حقيقي وهو في الملف الذي تحصل عليه: الفرق هو البايتات الثلاثة الأولى. مؤشر الترميز في محررك، أو عارض سداسي عشري يعرض EF BB BF في البداية، هو موضع البحث لا النص.
هل تكرار إضافة BOM إلى ملف الترجمة نفسه آمن؟
نعم. تزيل الصفحة أي علامة موجودة قبل أن تكتب علامتها، فالملف الذي يحمل واحدة يعود كما هو، والذي لا يحملها يستقبل واحدة بالضبط. تشغيلان يعطيان الملف نفسه الذي يعطيه تشغيل واحد. وهذا يعني أيضا أن ملفا مر بهذه الصفحة ثم بأداة أضافت علامة ثانية يمكن تنظيفه بتمريرة واحدة، لأن واحدة فقط تبقى.
هل تبقى علامة BOM المضافة هنا بعد تحويل ملف الترجمة إلى صيغة أخرى؟
لا تحفظها صفحات التحويل في هذا الموقع، لأنها تكتب UTF-8 عاديا من غير علامة، فالعلامة المضافة هنا لا تعبر تغيير الصيغة. رتب العمل على ذلك الأساس: انته من التحويل أولا، ثم أضف العلامة خطوة أخيرة قبل التسليم. وهذا هو الترتيب الأكثر منطقية عموما، لأن العلامة خاصية للملف النهائي لا لمحتوى الترجمة.
هل تغير إضافة BOM إلى ملف الترجمة نهايات أسطره؟
لا. علامة UTF-8 حرف واحد يوضع قبل أول بايت في الملف ولا أثر له على ما يليه. ملف Windows المليء بنهايات CRLF يبقى مليئا بنهايات CRLF، وملف Unix يبقى على LF، وملف بنهايات مختلطة يخرج بالمزيج نفسه الذي وصل به. تغيير نهايات الأسطر صفحة أخرى، ومن الخطأ أن تفعل صفحة واحدة الأمرين بهدوء.
أي صيغ الترجمة تقبل إضافة علامة BOM؟
الصيغ الاثنتا عشرة كلها: SRT و WebVTT و ASS و SSA و SBV و SAMI و LRC و MicroDVD و TTML و JSON و TXT و CSV. العلامة تتعلق ببايتات الملف الافتتاحية لا بصيغة الترجمة، فليس هناك شيء خاص بالصيغة يجب ضبطه — حتى نص مفرغ عادي، لا خط زمني فيه أصلا، يمكنه حمل علامة.