RuneTranslate يترجم الآن روايات NScripter / ONScripter المرئية
أصبح RuneTranslate الآن يترجم روايات NScripter وONScripter المرئية إلى الإنجليزية وأكثر من 30 لغة — يفكّ ترميز ملف nscript.dat المموّه بـ XOR-0x84، ويتعامل مع نصوص Shift-JIS / CP932 ومع فخ المحلّل في الأسطر التي تبدأ بحرف لاتيني، ويترجم اليابانية المطبوعة في شاشات العناوين والقوائم والأزرار. وجّهه إلى مجلد اللعبة، اكتشاف تلقائي، ترجمة، وتصدير نسخة جاهزة للتشغيل. أُضيف حديثًا — أبلغ عن أي لعبة لا تُحمّل.
أصبح RuneTranslate الآن يتقن إحدى أقدم اللهجات في الروايات المرئية اليابانية: NScripter وتوأمه مفتوح المصدر ONScripter. إن سبق أن رغبت في ترجمة رواية مرئية دوجين كلاسيكية — من النوع الذي يأتي كمجلد مليء بملفات .dat غامضة ونصوص Shift-JIS — فهذه هي عائلة المحركات التي كانت تاريخيًا الأصعب في فتحها يدويًا، وتلك التي تتخطاها أدوات الترجمة الآلية عادةً. أصبح RuneTranslate الآن يكتشفها، ويقرأ نص السكربت، بل ويترجم اليابانية المرسومة في شاشة العنوان وأزرار القوائم.
هذا محرك أُضيف حديثًا، لذا قبل أي شيء آخر: إذا وجّهت RuneTranslate إلى لعبة NScripter / ONScripter فلم تُحمّل أو لم تُكتشف، فأخبرنا من فضلك. المزيد عن ذلك في النهاية.
ما هما NScripter وONScripter في الحقيقة
NScripter هو محرك سكربتة للروايات المرئية على Windows، كتبه Naoki Takahashi، وطُوّر تقريبًا من 1999 إلى 2018 (يحمل إصداره النقطي الأخير، 3.10.102، تاريخ فبراير 2018، وإن تباطأ العمل الجوهري على الميزات بشدة بعد أوائل الألفية الثانية). لم يكن مفتوح المصدر قط، لكن رخصته سمحت بالاستخدام الشخصي والتجاري بلا إتاوات، وذلك — مقترنًا بحزّام أرشيف مدمج ولغة سكربتة قوية ومعروفة بأنها منخفضة المستوى — جعله أحد أكثر محركات الروايات المرئية استخدامًا في اليابان في أوج انتشاره. اعتمدت عليه استوديوهات تجارية مثل Nekonekosoft شبه حصريًا، وعشقه مجتمع الدوجين.
ONScripter مشروع منفصل ومستقل: إعادة تنفيذ مفتوحة المصدر (GPL) لبيئة تشغيل NScripter، بدأها عام 2002 مبرمج يُعرف باسم Ogapee. بُني على SDL ويهدف إلى التوافق المباشر مع ألعاب NScripter، لكنه يعمل حيث لم يستطع NScripter قط — Linux وmacOS وBSD وAndroid وغيرها. ولأنه مفتوح وقابل للتعديل، تبنّاه مجتمع التوطين الناطق بالإنجليزية بوصفه المحرك الفعلي لـإطلاق ألعاب NScripter المترجمة، وأضافت سلسلة من التفريعات دعم اللغات الغربية: رقعة الأحرف أحادية البايت من Chendo عام 2004، وONScripter-EN (ONS-EN) وPonscripter* من Haeleth لخطوط Unicode المتناسبة، وصيانة Uncle Mion اللاحقة، وفرع insani المُعاد تنشيطه للبنى الحديثة.
باختصار إذًا: NScripter هو محرك Windows المغلق الأصلي الذي أُنشئت عليه الألعاب؛ وONScripter (وONS-EN / Ponscripter) هو بيئة التشغيل المفتوحة عابرة المنصات التي يشغّل عليها مترجمو الجمهور بناءاتهم المترجمة فعليًا. يعمل RuneTranslate انطلاقًا من سكربتات اللعبة وأصولها، فيغطي بذلك العناوين في كلا المعسكرين.
لماذا كانت هذه الألعاب صعبة الترجمة إلى هذا الحد
مقارنةً بمحرك حديث مثل Ren'Py أو Kirikiri، فإن NScripter / ONScripter حقل ألغام من غرائب حقبة المحرك. وأربع منها بالذات جعلته جدارًا في وجه المترجمين اليدويين وأدوات الترجمة الآلية الساذجة معًا:
- ترميز Shift-JIS / CP932. السكربتات وملفات البيانات القديمة مُرمّزة بـ Shift-JIS (نسخة Microsoft، أي CP932)، ترميز اليابانية القديم ثنائي البايت. فكّ ترميزه خطأً يعطيك حروفًا مشوّهة (mojibake)؛ وإعادة ترميزه بإهمال تجعل بعض بيئات التشغيل القديمة تُفسد الذاكرة وتتعطل. على المترجم أن يكتشف CP932 ويحوّله ذهابًا وإيابًا بدقة — قد تكون السكربتات الأصلية الحديثة بترميز UTF-8، لكن الأرشيف القديم بـ CP932.
- ملف `nscript.dat` المموّه بـ XOR-0x84. يوجد السكربت المُصرَّف عادةً في
nscript.dat(أوpscript.datفي Ponscripter)، حيث كل بايت مُجرى عليه XOR مع البايت الثابت0x84. ليس هذا تشفيرًا — تنصّ الوثائق صراحةً على أنه لا يوفّر أي أمان، بل هو مجرد حاجز ضد الحرق العرضي للأحداث — لكنك لا تستطيع فتحه ببساطة في محرّر نصوص أيضًا. عليك عكس XOR، وتحرير نص Shift-JIS بداخله، ثم إعادة تطبيق XOR عند الحفظ. (قد تُطلق الألعاب بدلًا من ذلك سكربتات نصية صريحة0.txt/.u، أو سكربتات داخل أرشيفات.nsa/.sar.) - نص مطبوع داخل الرسوم. كثيرًا ما تكون شاشات العناوين والقوائم والأزرار صورًا نقطية مُسبقة التصيير — بل يتطلب NScripter أن تكون بعض الرسوم بصيغة BMP — فتكون اليابانية عليها بكسلات لا سلاسل نصية. ومستخرِج السلاسل لا يستطيع لمسها.
- الفخّ الدقيق: الأسطر التي تبدأ بحرف لاتيني تُعاد قراءتها كأوامر. يبدأ محلّل NScripter كل سطر في وضع الأمر. كان ذلك آمنًا تاريخيًا لأن المحرك لم يقبل سوى اليابانية ثنائية البايت، فكان أي سطر معروض نصًا بلا لبس. لكن لحظة إدخالك إنجليزية أحادية البايت، يبدو السطر الذي يبدأ بحرف لاتيني تمامًا كأمر سكربت فيحاول المحرك تنفيذه — فيعطب اللعبة. حلّ المجتمع هو علامة نص محجوزة (الحرف الخلفي `
`في ONScripter القديم؛ ثم انتقل Ponscripter لاحقًا إلى^`) تفرض وضع النص لبقية السطر. والبحث والاستبدال الساذج لليابانية بالإنجليزية يُنتج أسطرًا يسيء المحرك قراءتها كأوامر.
هذا الفخّ الأخير بالتحديد هو سبب لجوء المشاريع الجماهيرية المبكرة (Gin'iro وMizuiro) إلى أحرف لاتينية ثنائية البايت — إذ لم يكن NScripter الأصلي يقبل الإدخال أحادي البايت إطلاقًا — وسبب أن أي مترجم عام لا يفهم المحرك يعطب السكربت ببساطة.
ما الذي يفعله RuneTranslate الآن
يتعامل RuneTranslate مع NScripter / ONScripter بوصفه محركًا من الدرجة الأولى، ويعالج شطري المشكلة كليهما:
- نص السكربت. يقرأ سكربت اللعبة — ملفًا نصيًا صريحًا منفصلًا (
0.txtوأخواته) أوnscript.datمموّهًا بـ XOR0x84— ويفكّ ترميز حوار Shift-JIS / CP932، ويسرد كل سطر قابل للترجمة في المحرّر، وعند التصدير يعيد كتابة السكربت بالصيغة التي يتوقعها المحرك، مُعيدًا تطبيق تمويه XOR0x84إن كان ملف.datالأصلي يستخدمه. كما يطبّق علامة النص أحادي البايت تلقائيًا كي لا يُساء قراءة إنجليزيتك المترجمة كأمر. (السكربت الموجود فقط داخل أرشيف.nsa/.sar، دون نسخة منفصلة في جذر اللعبة، لا يُقرأ بعد — انظر القيود أدناه.) - نص الصور المطبوع. اليابانية على شاشات العناوين والقوائم والأزرار — بكسلات لا سلاسل — تتولاها ترجمة نص الصور في RuneTranslate: أطّر الكلمات، وتعرّف عليها، وترجمها بمزوّدك الخاص، ثم أعد طبع النتيجة لتُحمّل اللعبة رسمك المترجم بدلًا من الأصل.
اليابانية → الإنجليزية هي النقطة المثلى — فهذا محور تاريخ الترجمة الجماهيرية لهذا المحرك بأكمله، وفي سكربتات Shift-JIS القديمة تكون اللغة الهدف غير اللاتينية محدودة بما تستطيع خطوط المحرك عرضه — لكن بإمكانك استهداف أي من أكثر من 30 لغة.
ما الذي تحتاجه
- RuneTranslate لنظام Windows — مجاني، وكل محرك ومزوّد مفتوح.
- مجلد لعبة NScripter أو ONScripter. وهو الدليل الذي يحتوي ملف
.exeالخاص باللعبة (أو ثنائي ONScripter) إلى جانب سكربتها وأصولها — عادةًnscript.dat، وملف0.txtمنفصل، وأرشيف.nsa/.sarواحد أو أكثر. - لغة هدف — الإنجليزية والإسبانية والفرنسية والألمانية والبرتغالية والروسية والصينية والإيطالية والتركية والفيتنامية وأكثر من 20 غيرها.
- مزوّد ترجمة واحد. يعمل Google Translate المجاني فور التثبيت؛ وDeepL له مستوى مجاني؛ أما OpenAI وAnthropic ونموذج محلي (Ollama / LM Studio) وأي واجهة برمجية متوافقة مع OpenAI فتعمل بمفتاحك الخاص. هذه الألعاب كثيفة الحوار وحساسة للنبرة، لذا يكون نموذج اللغة الكبير (OpenAI / Anthropic) أو DeepL أفضل قراءةً في العادة.
الخطوة 1: افتح مجلد اللعبة
شغّل RuneTranslate، وانقر مشروع جديد، ووجّهه إلى دليل لعبة NScripter / ONScripter. يعمل اكتشاف المحرك تلقائيًا — فحين يرى ملف nscript.dat أو سكربت 0.txt منفصلًا أو أرشيفات .nsa الخاصة بالمحرك، يتعرّف على المشروع بوصفه NScripter / ONScripter. ولا يُعدَّل مجلد لعبتك الأصلي أبدًا.
الخطوة 2: كيف يُقرأ السكربت
يقرأ RuneTranslate السكربت الذي تُطلقه اللعبة منفصلًا في جذرها ويفكّ ترميزه نيابةً عنك:
- `nscript.dat` المموّه — يُعكس XOR ضد
0x84ويُقرأ بترميز Shift-JIS، فلا تشغّل خطوةnsdecمنفصلة أبدًا. - سكربتات نصية صريحة منفصلة (
0.txtوأخواته) — تُقرأ مباشرةً. - صور مؤرشفة — تُسحب من أرشيفات
.nsa/.sarالخاصة باللعبة من أجل خطوة نص الصور أدناه. (يُقرأ السكربت نفسه من ملفات الجذر المنفصلة أعلاه؛ أما السكربت المحزوم داخل أرشيف فقط فلا يُقرأ بعد.)
يُسرد الحوار والنص المعروض في المحرّر، مجمَّعًا حسب الملف. وتُخفى ترميزات المحرك ورموز الأوامر خلف عناصر نائبة رقمية قبل أن يصل أي شيء إلى المزوّد، ثم تُستعاد عند الخروج — وتُطبَّق علامة النص أحادي البايت حيث يلزم، كي لا يخلط المحرك بين سطر إنجليزيتك المترجمة وأمرٍ ما.
الخطوة 3: الترجمة
اختر مزوّدًا وشغّل. في الرواية المرئية، يكون نموذج اللغة الكبير (OpenAI / Anthropic) أفضل لصوت الشخصيات ونبرتها، وDeepL سريع ونظيف للسرد، وGoogle Translate المجاني كافٍ لسلاسل القوائم القصيرة. جهّز مسردًا لطاقم شخصياتك والمصطلحات المتكررة مسبقًا كي تظهر الأسماء متطابقة عبر اللعبة كلها — انظر أساسيات المسرد. وعند الانتهاء، يعيد تمريرٌ اختياري بـمحسّن الذكاء الاصطناعي قراءة كل سطر في سياقه ويشدّ الصياغة الجامدة والحرفية التي تميل الترجمة الآلية إلى تركها.
الخطوة 4: ترجمة النص داخل الصور
لأن قدرًا كبيرًا من واجهة NScripter رسومٌ مُسبقة التصيير، فإن هذه الخطوة أهم هنا منها في معظم المحركات. افتح صورة عنوان أو قائمة في المشروع، واسحب إطارًا حول كل قطعة يابانية، وتعرّف عليها، وترجمها بالمزوّد نفسه الذي تستخدمه للحوار، وعند التصدير يطبع RuneTranslate الترجمة داخل الصورة من جديد ويكتبها منفصلة في النسخة المصدَّرة، فيحمّل المحرك رسمك المترجم فوق الأصل المؤرشف. (يبقى مجلد لعبتك الأصلي دون مساس؛ ولا تزال الرسوم المضغوطة بـ SPB وبعض صيغ الصور النادرة قيد التحصين — أبلغ عن أي شيء يبدو غريبًا.) الشرح الكامل: ترجمة نص الصور.
الخطوة 5: تصدير نسخة جاهزة للتشغيل
انقر تصدير. يكتب RuneTranslate نسخة مترجمة من اللعبة — السكربت مُعاد ترميزه إلى Shift-JIS / CP932 ومُعاد تمويهه بـ XOR 0x84 إن كان ملف .dat الأصلي يستخدمه، مكتوبًا كسكربت منفصل يحمّله المحرك فوق أي نسخة مؤرشفة، إضافةً إلى أي صور مترجمة تُكتب منفصلة بجانبه. شغّل اللعبة فتعمل بلغتك الهدف، سواء أطلقتها على بيئة تشغيل NScripter الأصلية أو على ONScripter / ONScripter-EN.
القيود المعروفة
- يُعالَج تمويه XOR-0x84، لكن اللعبة المحميّة بتشفير مخصّص حقيقي (بدلًا من التمويه القياسي) قد لا تُفتح.
- السكربت المحزوم فقط داخل أرشيف
.nsa/.sar، دون ملفnscript.dat/0.txtمنفصل في جذر اللعبة، لا يُستخرج بعد — تُطلق معظم الألعاب السكربت منفصلًا، لكن قليلًا منها لا تفعل. - تصل ترجمة نص الصور إلى اليابانية المرسومة في القوائم والعناوين والأزرار، لكن الرسوم المضغوطة بـ SPB ورسوم الشعارات شديدة التنميق قد تظل بحاجة إلى لمسة يدوية.
- قد يختلف المحرك بدقة حسب الإصدار — فبعض العناوين المرتبطة عادةً بـ NScripter (مثلًا أجزاء من سلسلة When They Cry) بُنيت على NScripter وتُشغَّل عادةً عبر ONScripter، لكن بعض إعادات الإصدار على Steam / المنصات تعرّضت أحيانًا لإعادة هندسة. تحقّق دائمًا من نسختك المحدّدة.
إنه جديد تمامًا — أخبرنا بما يتعطّل
هذا المحرك إضافة حديثة، لا محرك مجرّب في الميدان. لدى NScripter / ONScripter عقود من التنويعات والتفريعات وغرائب كل استوديو، ولم نرَها كلها. لذا إن وجّهت RuneTranslate إلى لعبة NScripter أو ONScripter فلم تُكتشف، أو لم تُحمّل، أو صدّرت شيئًا لا تفتحه بيئة التشغيل، فأبلغ عنها من فضلك — فاسم اللعبة وطريقة حزمها (0.txt منفصل، nscript.dat، أرشيفات .nsa) هو بالضبط ما يساعدنا على تحصينها بأسرع ما يمكن.
نزّل RuneTranslate، ووجّهه إلى تلك الرواية المرئية الكلاسيكية التي طالما نويت قراءتها، وجرّبه. ولإلقاء نظرة على محرك رواية مرئية أحدث، اقرأ تاليًا شرح Ren'Py.
مستعد لتجربة RuneTranslate؟
تفتح الباقة المجانية كل محرك + كل مزود ترجمة. باقة Supporter ($3/mo) تفتح السرعة الكاملة.
التنزيل لنظام Windows