Skip to content

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:

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

Порядок визначення:

  1. bupa-chat:locale — перевизначення для конкретного ресурсу лише для BUPA Chat.
  2. ox:locale — спільна локаль ox_lib, яка використовується на всьому сервері.
  3. en — англійська мова за замовчуванням, якщо жодну з попередніх не встановлено.
server.cfg
setr ox:locale "tr"          # мова для всього сервера
setr bupa-chat:locale "en"   # опціонально: примусово увімкнути англійську лише для чату

Зміна мови під час виконання — bupa:changeLanguage

Ви можете змінити мову гравця "на льоту", для кожної сесії, без перезапуску. Викличте клієнтську подію з кодом мови; BUPA Chat перезавантажить цю локаль через ox_lib та миттєво передасть її в React UI:

client
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.

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() (та locale() в ox_lib) повертають сам ключ, якщо переклад відсутній. Зберігайте файл en.json повним як еталон та використовуйте плейсхолдери %s / %d для динамічних значень (наприклад, "Reason: %s").