Skip to content

Localization

Localisation

BUPA Chat est entièrement traduisible. Les traductions sont de simples fichiers JSON situés dans locales/, chargés par ox_lib (le manifeste déclare ox_lib 'locale'), et lus via le wrapper t().

Langues fournies

locales/*.json — dix langues incluses par défaut :

Code Langue Code Langue
en Anglais nl Néerlandais
tr Turc pl Polonais
de Allemand pt Portugais
es Espagnol ru Russe
fr Français it Italien

Chaque texte d'interface, libellé de catégorie, espace réservé, description d'emote et message système provient de ces fichiers.

Sélection de la langue

La langue active est définie dans shared/config/core.lua :

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

Ordre de résolution :

  1. bupa-chat:locale — une surcharge par ressource spécifique à BUPA Chat.
  2. ox:locale — la langue partagée d'ox_lib utilisée sur l'ensemble de votre serveur.
  3. en — Anglais par défaut si aucune des deux n'est définie.
server.cfg
setr ox:locale "tr"          # langue globale du serveur
setr bupa-chat:locale "en"   # optionnel : force l'anglais uniquement pour le chat

Changement en temps réel — bupa:changeLanguage

Vous pouvez changer la langue d'un joueur en direct, par session, sans redémarrage. Déclenchez l'événement client avec un code de langue ; BUPA Chat recharge cette traduction via ox_lib et la transmet directement à l'interface React :

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

En interne, cela appelle loadLang(newLang) (qui bascule la langue active d'ox_lib) puis changeUiLang, afin que le côté Lua et l'interface se mettent à jour simultanément.

Ajouter ou modifier une langue

Le dossier locales/ est inclus dans escrow_ignore, vous pouvez donc modifier le JSON directement. Pour ajouter une langue, copiez en.json, traduisez les valeurs et enregistrez le fichier sous <code>.json (par exemple sv.json), puis configurez ox:locale ou bupa-chat:locale avec ce code.

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() (et locale() d'ox_lib) renvoient la clé elle-même lorsqu'une traduction est manquante. Gardez en.json complet comme référence, et utilisez des espaces réservés %s / %d pour les valeurs dynamiques (par exemple "Reason: %s").