أتذكر المرة الأولى التي شاركت فيها في مشروع توطين البرمجيات. تم تكليفي بترجمة واجهة المستخدم لنظام كمبيوتر صناعي باستخدام أداة توطين برمجيات معقدة. لم أواجه أي مشكلة مع الجوانب التقنية، لكن ترجمة واجهة المستخدم كانت تجربة جديدة بالنسبة لي، وتبين أن المهمة كانت تحديًا حقيقيًا.
في الواقع، لم يكن أسلوب النصوص غريباً عليّ. بصفتي خبيراً في مجال تكنولوجيا المعلومات، كنت على دراية تامة بلغة "الكمبيوتر" التي تُستخدم عادةً في البرمجيات (لكن تحت تأثير روبوتات الدردشة والواجهات الصوتية، تغيرت وجهة نظري بشكل جذري منذ ذلك الحين). الجزء المحيّر حقًا كان هذه الأجزاء الغريبة المظهر: {0} و %d و %setup% و $stop$. لم يكن لدي أي فكرة عما تعنيه هذه الرموز وما إذا كان يجب ترجمة الكلمات المحصورة بينها أم لا، لذا ارتكبت الكثير من الأخطاء في وقت قصير. كانت أحرف السطر الجديد، الممثلة بـ \n، هي الضربة القاضية لثقتي بنفسي. لم أرَ هذه الأحرف من قبل، والأسوأ من ذلك أنها غالبًا ما كانت تندمج مع كلمات أخرى. وكأن الوضع لم يكن سخيفًا بما فيه الكفاية، كان النص باللغة الألمانية، مما جعل من الصعب جدًا معرفة ما إذا كان \nein يعني "nein" أم "\n" + "ein". لا بد أن مدير المشروع ندم على قراره بتكليف شخص غبي مثلي بهذه المهمة بعد أن أمطره بالأسئلة. ربما حتى نشر تغريدة غاضبة على تويتر.
اكتشفت أن العناصر النائبة في الملفات المترجمة لمشروع عاجل قد اختفت بشكل غامض. #PMproblems #StartPanicking
— Lau Velázquez (@geekylau) 9 أكتوبر 2013
المترجمون الذين يترجمون العنصر النائب $DepartureTime$ بـ $HeureDépart$ هم ببساطة متسقون في عملهم.
— Olivier Oswald (@ooswald) 27 يوليو 2011
المترجمون الذين يترجمون العنصر النائب $Departure Time$ إلى $HeureDépart$ هم فقط من يتسمون بالاتساق.
تلك اللحظة التي يقرر فيها المترجم تغيير شكل علامات الاقتباس فتختفي نصف المتغيرات في اللعبة.
— Vojtěch Schubert (@falagor)12 يناير 2016
بعد سنوات، تجلب ذكريات تجربتي الأولى ابتسامة على وجهي. وغني عن القول أنني دائمًا ما أقضي وقتًا مع المترجمين لشرح كيفية عمل المتغيرات. والطريقة المثلى لتجنب الأخطاء وتوفير الوقت لنفسك وفريقك هي استخدام التعبيرات العادية. يمكن استخدامها لتحويل المتغيرات إلى كائنات غير قابلة للتحرير ويسهل تتبعها. في البرامج المختلفة، يشار إلى هذه الكائنات بأسماء مختلفة. نحن في Smartcat نحب أن نطلق عليها اسم العناصر النائبة. وإذا كنت تتساءل عن ماهية التعبيرات العادية، فهي لا علاقة لها بالكلام التافه. إنها أنماط تُستخدم لمطابقة وتغيير مجموعات الأحرف. لا يتطلب تعلم التعبيرات العادية مهارات في البرمجة. انقر على هذا العرض التقديمي السهل الذي أعده توماس فاكيير، خبير التوطين في Yamagata Europe، لتتعرف على ماهية regex (اختصار لـ "التعبير العادي").
الرموز الغامضة
لنأخذ مثالاً سريعاً من بضع أسطر من أغنية بعنوان I’m Gonna Be (500 miles) لفرقة The Proclaimers:
But I would walk 500 miles And I would walk 500 more Just to be the man who walked a thousand miles To fall down at your door
لنفترض أننا نريد تغيير هذه الكلمات كلما انتقل المستمع إلى مكان مختلف. سنحتاج إلى متغيرات لذلك:
لكنني سأمشي %$1s ميلًا وسأمشي %$2s ميلًا إضافيًا فقط لأكون الرجل الذي مشى {spelled-number} ميلًا لأسقط عند {location}
ما هي المخاطر الكامنة هنا؟ يمكن حذف الأحرف المهمة و/أو إساءة استخدامها. يجب أن تتبع الأرقام في %$1s نمطًا متسلسلًا ولا يجب ترجمة "spelled-number" و"location". للأسف، لا يعرف الجميع ذلك.
قد يتساءل المرء: "لماذا لا نوظف مترجمًا خبيرًا بدلاً من التعامل مع كل هذه الفوضى التي يسببها المبتدئون؟". مهما كانت الأسباب الفعلية، يجدر بنا أن نتذكر: لا أحد يولد خبيرًا في التوطين، ولكن أي شخص كافح في خطواته الأولى واكتسب خبرة لا تقدر بثمن في هذه العملية يمكن أن يصبح خبيرًا.
مقاومة المبتدئين، أو كيفية إنقاذ العالم
إذن، ما الذي يمكننا فعله لمنع وقوع الكوارث وتوفير وقت التحرير؟ دعونا نصف المتغيرات باستخدام التعبيرات العادية:
بالنسبة للمتغيرات ذات الأرقام المتتالية: %\$\ds
بالنسبة للمتغيرات الموجودة بين أقواس معقوفة: \{.+?\}
أنا شخصياً أجد هذه الورقة المرجعية مفيدة جداً لتكوين التعبيرات العادية، وأوصي باستخدام regex101.com كأداة رائعة على الإنترنت للاختبار. الآن دعونا نحمل الملف الذي يحتوي على المتغيرات إلى Smartcat. هذا ما سنراه:
يتم عرض المتغيرات كوحدات أرجوانية لا يمكن ترجمتها بشكل واضح ويمكن نقلها بأمان من النص المصدر إلى اللغة الهدف عبر اختصار لوحة المفاتيح. ستبقى هذه العناصر سليمة في المستند المترجم بعد تنزيلها. لا يقتصر استخدام العناصر النائبة على مشاريع الترجمة. تخيل أن لديك ورقة مواصفات كبيرة لمضخة هواء تحتوي على آلاف العناصر. يتم تعيين رموز الطلب لكل عنصر وتبدو جميعها متشابهة، لذا من السهل الخلط بينها.
ارتكاب خطأ واحد هنا قد يؤدي إلى عواقب وخيمة. قد تحدث أخطاء عند إرسال الطلبات من المستودع، كما أن التثبيت الصحيح قد يكون مشكلة أيضًا. سيتكبد العميل خسائر أو ما هو أسوأ: قد تتسبب البيانات غير الصحيحة في مشكلات فنية، مما قد يؤدي بدوره إلى كارثة بيئية. لا يتم ترجمة العناصر النائبة، بل يجب نقلها بأمان إلى اللغة الهدف، فلماذا نضيع الوقت في ترجمتها؟ دعونا نجد جميع رموز الطلبات باستخدام هذا التعبير العادي الأنيق [A-Z]{2}\d{4}\-\d{4} ونحولها بطريقة سحرية إلى عناصر غير قابلة للتحرير:
يا لها من طريقة رائعة لتسهيل عملية الترجمة (وكذلك عملية التحرير) وجعلها أسرع!
في الوقت الحالي، لا يتم دعم العناصر النائبة إلا بشكل افتراضي لتنسيقات ملفات الترجمة الشائعة. إذا كنت ترغب في استخدامها في أي أنواع أخرى من المستندات، فيرجى إخبارنا بذلك.
تواصلت مع زملائي وسألتهم عن تجربتهم مع العناصر النائبة.
فيودور بيزروكوف، المدير التنفيذي في Logrus IT (مكتب كييف)
"استخدام العناصر النائبة والعلامات في تنسيقات المستندات هو سيناريو عمل شائع بالنسبة لنا. فهي بمثابة منقذة عندما يرسل العملاء ملفات Excel تحتوي على ترميز HTML أو XML. بفضل دعم العناصر النائبة والتعبيرات العادية في Smartcat، أصبح التعامل مع هذه الموارد أسهل وأكثر ملاءمة."
مارينا إيلينيخ، مديرة التوطين في Bookmate
"نحن نستخدم المتغيرات والتنسيقات كثيرًا في واجهات المستخدم الخاصة بتطبيقاتنا. ويتيح لنا استبدال العلامات والمتغيرات بعلامات محل مؤقتة إجراء فحوصات تلقائية للتأكد من الاتساق وحماية البيانات المهمة، مثل الأسعار وتواريخ الاشتراك والروابط."
يانيز إيفانجلو، الرئيس التنفيذي لشركة lexiQA، شاركنا بمشاعره المختلطة:
يانيس إيفانجلو، الرئيس التنفيذي لشركة lexiQA
"هناك مشكلة شائعة بين المترجمين الذين يترجمون النصوص الموجودة داخل العناصر النائبة والرموز والعلامات. كما يتم تجاهل أحرف الهروب في كثير من الأحيان. معظمهم لا يدركون أن هذه الوحدات اللغوية غير قابلة للترجمة. ولا يدرك مديرو المشاريع ذلك أيضًا. ومع ذلك، يمكن أن يتسبب هذا النوع من الإهمال في أخطاء فادحة. أخبرني أحد المترجمين ذات مرة أنه كان عليه التعامل مع نص يتضمن تنسيق HTML، فقام بترجمة السطر <p style="border: 1px solid red;"></p> إلى <π στυλ="περίγραμμα: 1 πίξελ συμπαγές κόκκινο;"></π>. وجادل بأن المطور الذي سيستخدمه ربما لا يتحدث الإنجليزية. لم تقم مديرة المشروع بتصحيحه لأنها اعتقدت أن منطق المترجم كان... معقولًا!"
ثم تدخل رولف كليشيفسكي، خبير توطين الألعاب، قائلاً:
«غالبًا ما يضطر مترجمو الألعاب إلى التعامل مع أمور مثل هذه:
وبالطبع، هناك كل أنواع المشاكل المرتبطة بذلك.
المشكلة هنا هي أن بعض الوجهات تتطلب استخدام أداة تعريف. فمثلاً، نقول "the Bahamas" (جزر الباهاما)، ولكن نقول "Barbados" (بربادوس). أو في اللغة الألمانية، نقول "die Schweiz" (سويسرا). في حالات مثل هذه، غالباً ما نرفض المشروع. عادةً ما أنصح العملاء بتغيير محرك النصوص الخاص بهم لأنني لا أريد تقديم عمل رديء. عادةً ما يسأل المطورون: "هل هذه مشكلة كبيرة حقًا؟" وأنا أقول لا، لأنك تستطيع لعب اللعبة. إذن، كيف نتعامل مع مثل هذه المشكلات؟ أخبر العميل وشرح له المشكلة. إذا لم يستطيعوا أو لم يرغبوا في إصلاح المحرك وكنت بحاجة إلى المال، فقم بالمهمة، ولكن تأكد من عدم ذكر اسمك في قائمة المساهمين.
اشترك في النشرة الإخبارية لدينا




