Skip to content

Localization

Localization

BUPA Chat पूरी तरह से अनुवाद योग्य है। अनुवाद locales/ के अंतर्गत सादी JSON फ़ाइलें हैं, जिन्हें ox_lib द्वारा लोड किया जाता है (मेनिफेस्ट ox_lib 'locale' घोषित करता है), और t() रैपर के माध्यम से पढ़ा जाता है।

Shipped languages

locales/*.json — दस भाषाएं पहले से उपलब्ध हैं:

Code Language Code Language
en English nl Dutch
tr Turkish pl Polish
de German pt Portuguese
es Spanish ru Russian
fr French it Italian

प्रत्येक UI स्ट्रिंग, श्रेणी लेबल, प्लेसहोल्डर, इमोट विवरण और सिस्टम संदेश इन फ़ाइलों से हल होते हैं।

Selecting the language

सक्रिय भाषा shared/config/core.lua में हल की जाती है:

shared/config/core.lua
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))

निर्णय क्रम (Resolution order):

  1. bupa-chat:locale — केवल BUPA Chat के लिए प्रति-संसाधन (per-resource) ओवरराइड।
  2. ox:locale — आपके सर्वर पर उपयोग होने वाला साझा ox_lib लोकेल।
  3. en — अंग्रेजी फॉलबैक यदि इनमें से कोई भी सेट न हो।
server.cfg
setr ox:locale "tr"          # server-wide language
setr bupa-chat:locale "en"   # optional: force English for chat only

Runtime switching — bupa:changeLanguage

आप रीस्टार्ट के बिना, प्रति सत्र (per session), किसी खिलाड़ी की भाषा को लाइव बदल सकते हैं। भाषा कोड के साथ क्लाइंट इवेंट ट्रिगर करें; BUPA Chat ox_lib के माध्यम से उस लोकेल को पुनः लोड करता है और सीधे React UI पर भेजता है:

client
TriggerEvent("bupa:changeLanguage", "de")

आंतरिक रूप से यह loadLang(newLang) (जो ox_lib के सक्रिय लोकेल को स्विच करता है) और फिर changeUiLang को कॉल करता है, ताकि Lua साइड और UI दोनों एक साथ अपडेट हो जाएं।

Adding or editing a language

locales/ फ़ोल्डर escrow_ignore में है, इसलिए आप सीधे JSON को संपादित कर सकते हैं। भाषा जोड़ने के लिए, en.json को कॉपी करें, मानों का अनुवाद करें, और इसे <code>.json (जैसे sv.json) के रूप में सहेजें, फिर ox:locale या bupa-chat:locale को उस कोड पर इंगित करें।

locales/en.json
{
  "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() (और ox_lib locale()) कुंजी (key) को ही लौटाता है। अपने संदर्भ (reference) के रूप में en.json को पूर्ण रखें, और गतिशील मानों (dynamic values) के लिए %s / %d प्लेसहोल्डर का उपयोग करें (जैसे "Reason: %s")।