Skip to content

Localization

Localizzazione

BUPA Chat è completamente traduribile. Le traduzioni sono semplici file JSON nella cartella locales/, caricati da ox_lib (il manifesto dichiara ox_lib 'locale') e letti tramite il wrapper t().

Lingue incluse

locales/*.json — dieci lingue pronte all'uso:

Codice Lingua Codice Lingua
en Inglese nl Olandese
tr Turco pl Polacco
de Tedesco pt Portoghese
es Spagnolo ru Russo
fr Francese it Italiano

Ogni stringa della UI, etichetta di categoria, segnaposto, descrizione delle emote e messaggio di sistema viene risolto da questi file.

Selezione della lingua

La lingua attiva viene definita in shared/config/core.lua:

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

Ordine di risoluzione:

  1. bupa-chat:locale — una sovrascrittura specifica per la singola risorsa BUPA Chat.
  2. ox:locale — la lingua condivisa di ox_lib utilizzata in tutto il server.
  3. en — Fallback in inglese se nessuna delle due è impostata.
server.cfg
setr ox:locale "tr"          # lingua valida per tutto il server
setr bupa-chat:locale "en"   # opzionale: forza l'inglese solo per la chat

Cambio lingua in tempo reale — bupa:changeLanguage

Puoi cambiare la lingua di un giocatore in tempo reale, per sessione, senza riavviare. Attiva l'evento client passando un codice lingua; BUPA Chat ricaricherà quel file di lingua tramite ox_lib e lo invierà direttamente alla UI in React:

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

Internamente questo chiama loadLang(newLang) (che cambia la lingua attiva di ox_lib) e successivamente changeUiLang, in modo che sia la parte Lua che la UI si aggiornino simultaneamente.

Aggiunta o modifica di una lingua

La cartella locales/ si trova in escrow_ignore, quindi puoi modificare direttamente i file JSON. Per aggiungere una lingua, copia en.json, traduci i valori e salvalo come <code>.json (es. sv.json), quindi imposta ox:locale o bupa-chat:locale su quel codice.

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() (e locale() di ox_lib) restituiscono la chiave stessa quando manca una traduzione. Mantieni en.json completo come riferimento e usa i segnaposto %s / %d per i valori dinamici (es. "Reason: %s").