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 :
config.lang = GetConvar("bupa-chat:locale", GetConvar("ox:locale", "en"))Ordre de résolution :
bupa-chat:locale— une surcharge par ressource spécifique à BUPA Chat.ox:locale— la langue partagée d'ox_lib utilisée sur l'ensemble de votre serveur.en— Anglais par défaut si aucune des deux n'est définie.
setr ox:locale "tr" # langue globale du serveur
setr bupa-chat:locale "en" # optionnel : force l'anglais uniquement pour le chatChangement 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 :
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.
{
"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").