Localization
الترجمة واللغات
نظام BUPA Chat قابل للترجمة بالكامل. الترجمات عبارة عن ملفات JSON عادية موجودة ضمن مجلد locales/، يتم تحميلها بواسطة ox_lib (يُعرّف ملف الـ manifest الأمر ox_lib 'locale')، وتتم قراءتها عبر دالة الـ t().
اللغات المدمجة
locales/*.json — عشر لغات متوفرة جاهزة للاستخدام:
| الرمز | اللغة | الرمز | اللغة |
|---|---|---|---|
en |
الإنجليزية | nl |
الهولندية |
tr |
التركية | pl |
البولندية |
de |
الألمانية | pt |
البرتغالية |
es |
الإسبانية | ru |
الروسية |
fr |
الفرنسية | it |
الإيطالية |
كل نص في واجهة المستخدم، تسمية فئة، نص مؤقت (placeholder)، وصف حركة (emote)، ورسالة نظام يتم جلبها وحلها من هذه الملفات.
اختيار اللغة
يتم تحديد اللغة النشطة في ملف shared/config/core.lua:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))ترتيب أولوية التحديد:
bupa-chat:locale— تجاوز مخصص لنظام BUPA Chat وحده لكل مورد (resource).ox:locale— لغة ox_lib المشتركة المستخدمة في جميع أنحاء سيرفرك.en— اللغة الإنجليزية الاحتياطية في حال لم يتم تعيين أي منهما.
setr ox:locale "tr" # لغة السيرفر بالكامل
setr bupa-chat:locale "en" # اختياري: فرض اللغة الإنجليزية للدردشة فقطالتبديل أثناء التشغيل — bupa:changeLanguage
يمكنك تغيير لغة اللاعب مباشرة أثناء اللعب، لكل جلسة، دون الحاجة لإعادة تشغيل السيرفر. قم بتشغيل حدث (event) العميل مع رمز اللغة؛ وسيقوم BUPA Chat إعادة تحميل تلك اللغة عبر ox_lib ودفعها مباشرة إلى واجهة React UI:
TriggerEvent("bupa:changeLanguage", "de")داخلياً، يقوم هذا باستدعاء loadLang(newLang) (الذي يغير لغة ox_lib النشطة) ثم changeUiLang، بحيث يتم تحديث كل من جانب الـ Lua واجهة المستخدم معاً في نفس الوقت.
إضافة أو تعديل لغة
مجلد locales/ مشمول في escrow_ignore، لذا يمكنك تعديل ملفات JSON مباشرة. لإضافة لغة جديدة، قم بنسخ ملف en.json، وترجمة القيم، وحفظه بالاسم <code>.json (مثل sv.json)، ثم قم بتوجيه ox:locale أو bupa-chat:locale إلى هذا الرمز.
{
"CATEGORY_COMMANDS_LABEL": "Commands",
"CATEGORY_COMMANDS_PLACEHOLDER": "Type a command...",
"CATEGORY_ADMIN_LABEL": "Admin Chat",
"EMOTE_ME_COMMAND_DESC": "Describe an action you are doing"
}دالة t() (وكذلك دالة locale() في ox_lib) تقوم بإرجاع المفتاح نفسه (key) في حال كانت الترجمة مفقودة. احرص على أن يبقى ملف en.json مكتملًا ليُستخدم كمرجع لك، واستخدم رموز التبديل المؤقتة %s / %d للقيم الديناميكية (مثل "Reason: %s").