Skip to content

--- Localization

Lokalisasi

BUPA Chat dapat diterjemahkan sepenuhnya. Terjemahan berupa file JSON biasa di dalam folder locales/, yang dimuat oleh ox_lib (manifest mendeklarasikan ox_lib 'locale'), dan dibaca melalui wrapper t().

Bahasa yang Tersedia

locales/*.json — sepuluh bahasa yang langsung tersedia:

Kode Bahasa Kode Bahasa
en Inggris nl Belanda
tr Turki pl Polandia
de Jerman pt Portugis
es Spanyol ru Rusia
fr Prancis it Italia

Setiap teks UI, label kategori, placeholder, deskripsi emote, dan pesan sistem diambil dari file-file ini.

Memilih Bahasa

Bahasa aktif diatur di shared/config/core.lua:

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

Urutan prioritas:

  1. bupa-chat:locale — pengesampingan khusus per resource hanya untuk BUPA Chat.
  2. ox:locale — locale ox_lib bersama yang digunakan di seluruh server Anda.
  3. en — Bahasa cadangan (Inggris) jika keduanya tidak disetel.
server.cfg
setr ox:locale "tr"          # bahasa untuk seluruh server
setr bupa-chat:locale "en"   # opsional: paksa bahasa Inggris khusus untuk chat

Penggantian Waktu Nyata — bupa:changeLanguage

Anda dapat mengubah bahasa pemain secara langsung, per sesi, tanpa perlu restart. Picu event klien dengan kode bahasa; BUPA Chat akan memuat ulang locale tersebut melalui ox_lib dan langsung meneruskannya ke React UI:

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

Secara internal, ini memanggil loadLang(newLang) (yang mengubah locale aktif ox_lib) lalu changeUiLang, sehingga sisi Lua dan UI diperbarui secara bersamaan.

Menambah atau Mengedit Bahasa

locales/ masuk dalam escrow_ignore, sehingga Anda dapat mengedit file JSON secara langsung. Untuk menambahkan bahasa, salin en.json, terjemahkan nilainya, lalu simpan sebagai <code>.json (misalnya sv.json), kemudian arahkan ox:locale atau bupa-chat:locale ke kode tersebut.

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() (dan locale() dari ox_lib) akan mengembalikan key itu sendiri jika terjemahannya tidak ditemukan. Tetap lengkapi en.json sebagai referensi Anda, dan gunakan placeholder %s / %d untuk nilai dinamis (misalnya "Reason: %s").