Localization
Localización
BUPA Chat es totalmente traducible. Las traducciones son archivos JSON planos en locales/, cargados por ox_lib (el manifiesto declara ox_lib 'locale'), y se leen a través del envoltorio t().
Idiomas incluidos
locales/*.json — diez idiomas listos para usar:
| Código | Idioma | Código | Idioma |
|---|---|---|---|
en |
Inglés | nl |
Neerlandés |
tr |
Turco | pl |
Polaco |
de |
Alemán | pt |
Portugués |
es |
Español | ru |
Ruso |
fr |
Francés | it |
Italiano |
Cada texto de la interfaz, etiqueta de categoría, marcador de posición, descripción de animación y mensaje del sistema se resuelve desde estos archivos.
Seleccionar el idioma
El idioma activo se define en shared/config/core.lua:
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Orden de resolución:
bupa-chat:locale— una anulación por recurso exclusivamente para BUPA Chat.ox:locale— el idioma compartido de ox_lib utilizado en todo tu servidor.en— Respaldo en inglés si no se establece ninguno.
setr ox:locale "tr" # idioma general del servidor
setr bupa-chat:locale "en" # opcional: forzar inglés solo para el chatCambio en tiempo de ejecución — bupa:changeLanguage
Puedes cambiar el idioma de un jugador en vivo, por sesión, sin necesidad de reiniciar. Lanza el evento de cliente con un código de idioma; BUPA Chat recarga esa localización mediante ox_lib y la envía directamente a la interfaz de usuario en React:
TriggerEvent("bupa:changeLanguage", "de")Internamente, esto llama a loadLang(newLang) (que cambia el idioma activo de ox_lib) y luego a changeUiLang, por lo que tanto el lado de Lua como la interfaz de usuario se actualizan al unísono.
Añadir o editar un idioma
locales/ está en escrow_ignore, por lo que puedes editar el archivo JSON directamente. Para añadir un idioma, copia en.json, traduce los valores y guárdalo como <code>.json (por ejemplo, sv.json), luego apunta ox:locale or bupa-chat:locale a ese código.
{
"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() (y locale() de ox_lib) devuelven la clave misma cuando falta una traducción. Mantén en.json completo como tu referencia y utiliza marcadores de posición %s / %d para valores dinámicos (por ejemplo, "Reason: %s").