Localization
Локалізація
BUPA Chat повністю підтримує переклад. Переклади знаходяться у звичайних JSON-файлах у папці locales/, завантажуються за допомогою ox_lib (у маніфесті оголошено ox_lib 'locale') та зчитуються через обгортку t().
Доступні мови
locales/*.json — десять мов "з коробки":
| Код | Мова | Код | Мова |
|---|---|---|---|
en |
Англійська | nl |
Нідерландська |
tr |
Турецькомовна | pl |
Польська |
de |
Німецька | pt |
Португальська |
es |
Іспанська | ru |
Російська |
fr |
Французька | it |
Італійська |
Кожен рядок інтерфейсу, мітка категорії, плейсхолдер, опис анімації та системне повідомлення беруться з цих файлів.
Вибір мови
Активна мова визначається у shared/config/core.lua:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Порядок визначення:
bupa-chat:locale— перевизначення для конкретного ресурсу лише для BUPA Chat.ox:locale— спільна локаль ox_lib, яка використовується на всьому сервері.en— англійська мова за замовчуванням, якщо жодну з попередніх не встановлено.
setr ox:locale "tr" # мова для всього сервера
setr bupa-chat:locale "en" # опціонально: примусово увімкнути англійську лише для чатуЗміна мови під час виконання — bupa:changeLanguage
Ви можете змінити мову гравця "на льоту", для кожної сесії, без перезапуску. Викличте клієнтську подію з кодом мови; 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) повертають сам ключ, якщо переклад відсутній. Зберігайте файл en.json повним як еталон та використовуйте плейсхолдери %s / %d для динамічних значень (наприклад, "Reason: %s").