Textes, localisation et mise à jour
Pipeline
flowchart LR
S[Google Sheets] --> I[importUploadTexts.js]
I --> JSON[shared_texts / gameUid_texts]
JSON --> UNITY[TextsManager]
JSON --> WEB[Upload serveur web]
WEB --> API[/getTexts/gameUid/lang/timestamp]
API --> UNITY
UNITY --> TL[TextLoader / UI]
Fichiers générés
Assets/Resources/data/shared_texts_fr.json et shared_texts_en.json;
jeu : Assets/GameSpecific/<gameUid>/Resources/data_<gameUid>/<gameUid>_texts_fr.json et EN.
Import Node
exports/importUploadTexts.js associe chaque GameUid à ses feuilles Google et appelle importer.importTexts(). Les commandes exposées permettent l'import game-specific, shared, ou l'import suivi de l'upload.
Pour Accounting, le script traite Acc1 et Acc2 ensemble via accountingTextGameUids = ["acc1", "acc2"], afin d'éviter de mettre à jour une seule variante.
Chargement Unity
TextsManager.Initialize() charge les textes shared. Game.SetGameUid() appelle LoadGameSpecificTexts(). SetLang() recharge les deux couches puis appelle TextLoader.ReloadAll(). Un UID absent retourne [uid].
Mise à jour sans rebuild
UpdateTextsFromWebServer() interroge /getTexts/<gameUid>/<locale>/<timestamp>. Le client garde timestamp/hash et peut donc recevoir des textes plus récents que ceux embarqués dans le build.
Modifier un texte
TextLoader ou Game.Texts.GetText().
Modifier la source Google Sheets appropriée.
Lancer l'import.
Vérifier FR + EN.
Publier si le changement doit être disponible sans rebuild.
Sinon inclure les JSON générés dans le prochain build Unity.
Procédure exacte pour ajouter ou modifier un texte
node.js/exports/, lancer importTexts.bat et entrer le GameUid, ou shared pour les textes communs.
Inspecter les JSON générés.
Si le texte doit être disponible sans rebuild, lancer importThenUploadTextsToUniksimServer.bat.
Tester le changement de langue dans un client déjà ouvert via TextsManager.SetLang().
Commandes directes équivalentes
node importUploadTexts.js shared
node importUploadTexts.js game_specific mk1
node importUploadTexts.js uploadTexts mk1
Cas Accounting
getGameUidsToImport() traite Accounting comme une paire : un import de textes Acc1/Acc2 met à jour les deux jeux concernés. Ne pas maintenir deux traductions divergentes par erreur.
Choisir shared ou game-specific
Debug d'un UID affiché comme [my_uid]
data_<gameUid>.
Vérifier la locale courante.
Si le serveur web doit fournir la mise à jour, vérifier l'upload et le timestamp/hash.
Si le texte est dans Resources seulement, rebuilder Unity.