Skip to content

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:

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

Orden de resolución:

  1. bupa-chat:locale — una anulación por recurso exclusivamente para BUPA Chat.
  2. ox:locale — el idioma compartido de ox_lib utilizado en todo tu servidor.
  3. en — Respaldo en inglés si no se establece ninguno.
server.cfg
setr ox:locale "tr"          # idioma general del servidor
setr bupa-chat:locale "en"   # opcional: forzar inglés solo para el chat

Cambio 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:

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

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() (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").