Skip to main content

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

    partagé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

      Trouver l'UID utilisé par 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

        Choisir un UID stable; ne pas utiliser la phrase FR elle-même comme identifiant. Ajouter/modifier FR et EN dans la Google Sheet de textes appropriée. Depuis 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

          texte réutilisé par plusieurs jeux/UI commune → shared; vocabulaire/règle propre à un jeu → game-specific; ne pas copier un même UID dans plusieurs couches juste pour contourner un problème de chargement.

          Debug d'un UID affiché comme [my_uid]

            Vérifier que l'UID exact existe dans la Sheet. Vérifier que le JSON correspondant a été regénéré. Vérifier shared vs 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.