locale
Traduction par clé avec fallback anglais et interpolation string.format. Chaque ressource fournit ses fichiers.
Traduction par clé avec fallback anglais et interpolation string.format. Chaque ressource fournit ses fichiers.
lib.locale(key, ...) résout une clé de traduction dans la langue courante et interpole les arguments
via string.format. Une clé absente retombe sur l'anglais, puis sur la clé brute. Chaque ressource
fournit ses propres fichiers de traduction.
local greeting = lib.locale('welcome', playerData.name) -- 'Bienvenue Jean'
local stock = lib.locale('items.count', 5) -- 'Tu as 5 items'
local missing = lib.locale('unknown.key') -- 'unknown.key'keystringrequiredClé de traduction, ex. menu.title.
...anyoptionalArguments d'interpolation passés à string.format si fournis.
Renvoie la string résolue, ou la clé elle-même si elle est absente dans toutes les langues.
Chaque ressource consommatrice fournit des fichiers JSON à clés plates sous locales/<lang>.json,
déclarés dans son files {} :
ma_ressource/
locales/
en.json
fr.json
fxmanifest.lua
{
"welcome": "Bienvenue %s",
"items.count": "Tu as %d items"
}La langue active est la convar serveur see:locale (défaut en) :
set see:locale "fr"
La convar est lue une seule fois au chargement du module — la changer au runtime ne re-résout rien,
et éditer un fichier JSON nécessite un restart de la ressource (chaque langue est cachée après le
premier chargement). Une clé absente renvoie la clé brute sans warning, donc une faute de frappe passe
facilement inaperçue. Les fichiers de locale vivent dans la ressource consommatrice, pas dans
see_lib (qui ne fournit aucune traduction par défaut). L'interpolation est string.format (%s, %d),
pas des placeholders nommés {name} — un mismatch format/args lève une erreur Lua, et un JSON invalide
échoue silencieusement (toutes les clés retombent en fallback).