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:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Ordine di risoluzione:
bupa-chat:locale— una sovrascrittura specifica per la singola risorsa BUPA Chat.ox:locale— la lingua condivisa di ox_lib utilizzata in tutto il server.en— Fallback in inglese se nessuna delle due è impostata.
setr ox:locale "tr" # lingua valida per tutto il server
setr bupa-chat:locale "en" # opzionale: forza l'inglese solo per la chatCambio 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:
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.
{
"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").