نشر لعبة: “لصّ الرحيق (أ)” باللغة العربية

Read this article in English

“لصّ الرحيق: الحلقة (أ)” هي لعبة كتابية قصيرة صنعتها لورين شميدت، قامت لورين بتصميم اللعبة لتكون نموذجاً مبدئياً حوارياً للعبة مستقبلية عن الاعتناء بالحدائق تدعى أيضاً “لصّ الرحيق”.

أنا في غاية الامتنان أنني دعيت لترجمة اللعبة إلى العربية فأنا مهووسةٌ بها قبل أن ترسل إلي المصممة طلب الترجمة! كنت واثقاً أن الترجمة لن تكون سهلة لأن اللعبة الأصلية مملوءة بالحوارات، وليس لدي مرجع لألعاب كتابية عربية أخرى.

يمكنكم لعب النسخة العربية من هذا الرابط:
https://alexclay.itch.io/nectar-thief-cycle-a-ar

ويمكنكم لعب النسخة الأصلية الإنجليزية من هذا الرابط:
https://lorenschmidt.itch.io/nectar-thief-cycle-a

استخدمت خط Courier لأنه خط موحّد العرض لكل محرف. أعتقد أن ذلك يجعل حركة كتابة كل محرف مريحاً للعين.

معلومات تقنية عن الترجمة العربية

صنعت لورين كوداً برمجياً ذكياً يقوم بنسخ كل النصوص المترجمة من جدول ويغير إعدادات اللعبة حسب اللغة مثل تغيير التنصيق، إضاقة تغييرات CSS، وغيرها. مع ذلك تطلب مني العمل لإضافة ميزات تحتاجها النسخة العربية لتكون مثالية:

١- رسم الكتابة من اليمين إلى اليسار. نقوم بذلك بمجرد إضافة هذا السطر في index.html وإصلاح كل ما يخرب:

<html lang="ar" dir="rtl">

٢- ترجمة الأرقام من الأرقام العربية المغربية (المعتمدة في الإنجليزية) إلى الأرقام العربية المشرقية (المتعمدة في العربية).
نقوم بذلك عبر تحويل كل رقم مرسوم إلى سلسلة string ثم تبديل كل محرف مغربي في السلسة إلى محرف مشرقي.

التقنية مشمولة في الدالة التالية، ويمكنكم التطلع على مشروع صغير صنعته يقوم بهذه التقنية.

// Alex Clay. English-to-Arabic number transliterating

// مصفوفة تحوي جميع رموز الأرقام العربية المشرقية
// glyphs representing Arabic numerals
var arabicNumbersMap =
[
"&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
"&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
];
function getArabicNumbers(enNum)
{
	var newStr = "";
	
	enNum = String(enNum);
	
        // ضف رمز زائد أو ناقص
        // concat plus/minus sign
	if (enNum[0] == "-" || enNum[0] == "+"){
		newStr += enNum[0];
	}

    for (i = 0; i < enNum.length; i +=1) {

     // parseInt("1") returns 1.
     // This means it will return arabicNumbersMap[1]

     if (arabicNumbersMap[parseInt(enNum.charAt(i))] != undefined) {
			newStr += arabicNumbersMap[parseInt(enNum.charAt(i))];
		}
	}

	return newStr;
}

٣- إضافة أزرار لوحة المفاتيح العربية للإدخال.
تمتد شفرات أزرار الأرقام الإنجليزية من ٤٨ إلى ٥٧ (يمكنكم التحقق هنا) ولكن تمتد شفرات أزرار الأرقام العربية على لوحة مفاتيح عربي من ١٧٧٧ إلى ١٧٨٥. والمسألة مشابهة لأزرار الحروف.

حل مؤقت لهذه المشكلة هو تقبل إدخال شفرات إضافية ثانوية تحوي جميع حالات لوحة المفاتيح العربية. أعتقد أن هذا الحل مقبولٌ لنموذج مبدئي للعبة مجانية.

تتصرف شفرات المحارف بشكل مختلف قليلاً حسب المتصفح ونظام التشغيل لذا أكّدت تجربة الأزرار على كل متصفح مشهور، وعلى Windows و Linux، باللغة الإنجليزية والعربية.