إزالة BOM من الترجمة
أو ألصق نص الترجمة
الخيارات
علامة ترتيب البايتات ثلاثة بايتات في أول الملف تملي أي ترميز فيه. وهي غير مرئية في كل محرر ولاعب، ولا تشغل حيزا على الشاشة، ولا يتغير شيء في الترجمة عند إضافتها أو إزالتها. ويهتم بها نوعان من الأدوات: برامج Windows التي تكتب الترجمات، وتضعها افتراضيا، والمحللات الصارمة في خطوط البناء، التي ترفض ملفا يبدأ بها. وهذه الصفحة تفتح الصندوق بالحالة التي يسميها عنوانها، فتقلبه إن ظهر أن ملفك على الحالة الأخرى. والملف بترميز UTF-16 يحمل BOM دائما، لأن القارئ يعرف بها أي ترتيبي بايت ينظر إليه — وطلب إزالتها هناك يتركها في مكانها.
معدل الإطارات الذي تحسب به التوقيتات. في صفحات الصيغ هو ما يحتاجه MicroDVD، لأنه يخزن التوقيت أرقام إطارات. وفي صفحات معدل الإطارات هو المعدل الذي وقت به الملف — النسخة التي صنعت لها الترجمة — ويأخذ الصندوق الثاني في الصفحة معدل الفيديو الذي ستستخدمها معه. والشائعة 23.976 و24 و25 و29.97 و30 و50 و59.94 و60. والخطأ فيه يزحزح الخط الزمني كله، وفي صفحات معدل الإطارات يزحزحه بنسبة لا بمقدار ثابت.
في مقدمة كل ملف ترجمة يقف حرف واحد لا شكل له هو U+FEFF: علامة ترتيب البايتات. أدوات كثيرة تكتبه وأدوات كثيرة لا تتوقعه، والتي لا تتوقعه تعرضه ككتلة قصيرة من الرموز ملتصقة بأول مقطع. هذه الصفحة تنزعه وتترك كل ما سواه كما وجدته.
حذف العلامة يهم أكثر حيث يتوقف الملف عن كونه شيئا يقرأه إنسان ويبدأ كونه شيئا يحلله برنامج: خطوط بناء الترجمات، والسكربتات التي تقرأ السطر الأول، والصيغ التي تنص مواصفتها على أن البايتات الافتتاحية هي أول حرف من المقطع الأول. ويهم أيضا عند دمج الملفات، لأن علامة في وسط ملف مدموج حرف في وسط مقطع. ويهم في التسليم: إن كانت المواصفة التي تسلم إليها تشترط UTF-8 بلا علامة فالعلامة فرق يعثر عليه المدقق.
وما لن تفعله الصفحة هو أن تقرر شيئا آخر نيابة عنك. أرقام المقاطع والرموز الزمنية ونصوص المقاطع ونهايات الأسطر تعود كما دخلت، بما فيها CRLF، والملف الذي لم يكن فيه علامة يعود بايتا ببايت بدلا من أن يعاد كتابته في صورة مكافئة. نزع العلامة ليس تغيير ترميز أحرف الملف، وكثيرا ما يخلط الناس بينهما: هذه الصفحة تغير أول حرف في الملف ولا شيء في طريقة ترميز بقية محتواه.
هناك حالة واحدة يبتعد فيها عنوان الصفحة عما يحدث فعلا، ويستحسن معرفتها قبل التشغيل. ملف UTF-16 يحتاج علامته: من غيرها لا سبيل إلى التمييز بين ترتيبي البايتات، فملف UTF-16 مكتوب بلا علامة لا يمكن قراءته مجددا. أرسل واحدا عبر هذه الصفحة وسيظل الملف الناتج يحمل علامة، لأن البديل ملف لا يفتحه أحد. إن كان ملفك UTF-16 ولا بد من نزع العلامة فما تريده ترميز آخر لا الترميز نفسه من غير علامة، وصفحة تحويل الترميز مرتبطة في أسفل الصفحة.
تنزع العلامة من الملف الذي تحصل عليه، لذلك قد تبدو اللوحتان متطابقتين هنا — فالحرف صفري العرض هو بالضبط ما يبدو عليه حرف غير مرئي. افحص النتيجة في مؤشر الترميز في محررك أو في عارض سداسي عشري: الملف بلا علامة يبدأ بأول بايت من أول مقطع. الصيغ الاثنتا عشرة كلها مقبولة، من SRT إلى نص مفرغ عادي، ولا يخرج ملف من جهازك: تقرؤه الصفحة وتعدله وتكتبه داخل متصفحك.
أمثلة
ملف موسوم وقد نزعت علامته
الإدخال
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.
يبدأ المدخل بالحرف U+FEFF ولا يبدأ المخرج به: يختلف الملفان بالحرف الواحد هذا بالضبط، وهو كل العملية. الملفات في هذه الحالة تأتي عادة من برنامج ترجمة على Windows، والسبب في أن الناس يريدون العلامة زائلة هو خطوة بناء أو محلل صارم ينظر إلى البايتات الافتتاحية بدلا من المقاطع.
ملف Windows: نزعت العلامة وبقيت علامات الإرجاع
الإدخال
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
الناتج
1
00:00:01,000 --> 00:00:02,000
Marked and Windows.
العلامة وحدها تذهب. كل حرف إرجاع هو للملف نفسه ولهذه الصفحة رأي فيه — ومن أراد تغيير الاثنين معا فعليه بصفحة نهايات الأسطر، والفصل بينهما هو ما يجعل كل واحدة منهما آمنة التشغيل على ملف لم تفتحه. والنص المتوقع يحتفظ بنهايات CRLF كما فعل المدخل تماما.
ملف بلا علامة يعود بايتا ببايت
الإدخال
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.
لم يكن هناك ما ينزع، فيعود الملف من غير تغيير — بما في ذلك غياب العلامة. هذه هي الحالة التي تكشف تطبيقا يكتب علامة أولا ثم يزيلها، أو يطبع الملف في طريقه: القراءة الصادقة لعبارة «لم يكن هناك ما يفعل» هي المدخل نفسه بايتا ببايت، لا نسخة منه مرتبة.
الأسئلة الشائعة
كيف أعرف أن ملف الترجمة يحمل علامة BOM قبل إزالتها؟
افتحه في محرر يعرض ترميز الملف؛ ملف UTF-8 بعلامة يوصف عادة بأنه UTF-8 with BOM أو UTF-8 BOM لا بأنه UTF-8 وحده. وإن لم تجد، فافحص أول بايتات الملف في عارض سداسي عشري: الملف الذي يبدأ بالبايتات EF BB BF يحمل علامة، والذي يبدأ بأول حرف من المقطع لا يحملها. وكتلة الرموز في أول السطر الأول هي الشيء نفسه الذي يراه برنامج قرأ العلامة ثلاثة أحرف عادية.
لماذا تبقى علامة BOM على ملف ترجمة UTF-16 بعد إزالتها؟
لأن ملف UTF-16 يحتاجها. يخزن UTF-16 كل حرف في بايتين وترتيبا البايتات يبدوان متشابهين من الخارج، فالعلامة هي ما يقول للقارئ أي الترتيبين هو — وملف UTF-16 بلا علامة لا يمكن قراءته مرة أخرى، لا هنا ولا في أي مكان آخر. تحتفظ بها الصفحة لهذا السبب. للحصول على ملف بلا علامة إطلاقا فاختر له ترميز UTF-8، حيث تكون العلامة اختيارية.
هل تؤذي إزالة BOM ملف ترجمة لم يحمل علامة قط؟
لا. ناتج تلك الحالة هو المدخل بايتا ببايت، ولا يبلغ عن شيء. تشغيل الصفحة على ملف تشك في حالته آمن بالبناء للسبب نفسه: إذ لا علامة تنزع لا شيء يكتب، وإن وجدت فالفرق أصغر ما يمكن. والتشغيل الذي لم يجد شيئا يفعله ليس تشغيلا أنجز شيئا.
هل يمكن أن يحمل ملف ترجمة أكثر من علامة BOM واحدة قبل إزالتها؟
نعم، ويحدث كلما أضافت أداة علامة من غير أن تفحص وجود واحدة أولا — العلامة الثانية تنتج ملفا يبدو طبيعيا تماما في المحرر بينما يختلف عن الملف الطبيعي في بايتاته الافتتاحية. تزيل هذه الصفحة العلامات كلها لا واحدة فقط، فينظف الملف المزدوج الوسم في تمريرة واحدة، ولا يغير تشغيلها مرة أخرى شيئا بعد ذلك.
هل تغير إزالة علامة BOM ترميز ملف الترجمة؟
ليس بالمعنى الذي يقصده الناس عادة. نص الملف ما زال يحمل الحروف نفسها وبقية الملف ما زال مرمزا بالطريقة نفسها؛ الذي يتغير أن القارئ لم يعد يجد في البايتات الافتتاحية ما يخبره بالترميز. ملف UTF-8 بلا علامة هو UTF-8 عادي، وهو ما تفترضه معظم الأدوات على أي حال. أما تغيير الترميز نفسه فصفحة منفصلة، مرتبطة من هنا.
هل تعود العلامة عند تنزيل ملف الترجمة بعد إزالة BOM؟
لا. التنزيل هو اللحظة التي يكتب فيها الملف، وتشغيل هذه الصفحة يكتبه بلا علامة، فما تحصل عليه هو ما تصفه اللوحتان. والترميز الذي يكتب به الملف محفوظ كما قرئ، باستثناء واحد: الملف الذي يصل UTF-16 يكتب مرة أخرى UTF-16 ويحتفظ بعلامته، لأن تلك العلامة بنيوية لا زخرفية.