محرك مدعوم · Gettext (.po / .mo)
gettext هو الأسلوب الذي تُوطَّن به معظم الألعاب المستقلة غير اليابانية: ألعاب Python وpygame، وSolarus، وألعاب SDL وGTK، وكل ما يمر عبر Poedit أو Weblate أو Crowdin. توجد النصوص في مجلد locale كمصادر .po وكتالوجات .mo مُصرَّفة. يكتشفها RuneTranslate عند إنشاء المشروع، ويترجم كل نص، ثم يكتب ملف .mo عاملاً — وهو الملف الذي تقرأه اللعبة أثناء التشغيل.
كتالوجات gettext هي في معظمها واجهة: عناصر قوائم وتسميات أزرار وتلميحات وأسطر حالة تتكرر عبر الشاشات. أضف أسماءك وأسماء العناصر والأفعال الأساسية إلى المسرد مرة واحدة لتظهر كل مرة بالشكل نفسه — وهذا أهم هنا منه في الحوار، لأن قائمة تقول «حفظ» في موضع و«تخزين» في آخر تبدو كخلل. أساسيات المسرد →
وجّه RuneTranslate إلى مجلد اللعبة — المجلد الذي يحتوي على locale/ أو lang/ أو i18n/. يبحث الاكتشاف عن الكتالوجات بحسب بايتاتها الفعلية لا بامتدادها، لذا يُتجاهل ملف .mo يكون في الحقيقة مشهداً ثلاثي الأبعاد. ويعمل أيضاً مجلد يضم ملفات .po متفرقة.
تعرض نافذة المشروع الجديد عدد الكتالوجات المقروءة، وكم منها .mo مُصرَّف مقابل .po مصدري، واللغات التي تتضمنها اللعبة أصلاً، وإجمالي النصوص — قبل أن تنشئ المشروع.
اختر لغة الهدف ومزوّداً: Google أو DeepL المجاني، أو مفتاحك الخاص من DeepL أو OpenAI أو Claude أو DeepSeek. تُقنَّع عناصر التنسيق النائبة — %s و%d و%(player)s و{count} — قبل الترجمة وتُستعاد بعدها، حتى لا يتمكن أي مزوّد من حذفها أو إعادة صياغتها.
تُجمَّع النصوص حسب ملف الكتالوج. ويحتفظ كل مدخل بسياق gettext الخاص به (msgctxt)، وهو التمييز الذي كتبه المطوّر لهذا النص بالتحديد — فترى لماذا تظهر الكلمة نفسها مرتين وتترجم كلاً منهما بشكل صحيح.
يكتب التصدير نسخة كاملة من اللعبة مع كتالوج صحيح في locale/<لغتك>/LC_MESSAGES/ وكذلك نسخة محدّثة من الكتالوج الذي كانت اللعبة تحمّله بالفعل، لتظهر الترجمة مهما كانت طريقة اختيار اللعبة للغتها. ويُكتب كل من .po و.mo المُصرَّف.