Hello tout le monde,
Je me suis déjà penché sur ce sujet il y a quelques mois, la méthode la plus simple que j’aie trouvée pour cela est la suivante :
1 : Dans le fichier des paramètres du jeu (celui ou vous enregistrez la taille de l’écran, les pref sonores, etc. vous mettez une partie dédiée à la langue, par exemple :
<langue>
<langueaafficher texte="Français" />
<languetype texte="fr-fr" />
</langue>
Pensez à charger ce paramètre dans une variable globale au chargement du jeu.
2 : Dans vos scènes, vos créez un groupe contenant tous les textes qui seront traduits (si vous n’utilisez qu’un seul objet texte ce n’est pas nécessaire bien entendu). Nommez le par exemple ATraduire.
3 : Lors de l’édition de vos scènes, utilisez une variable interne a chaque instance d’objet texte qui contient un court texte qui identifie la phrase à aller chercher, par exemple “score”
4 : Créez un fichier XML qui ressemble à ça :
<fr-fr>
<score texte="Vous avez un score de : " />
...
</fr-fr>
<en-us>
<score texte="Your score is : " />
...
</en-us>
5 : Créez un groupe d’évènements externes appelé ChangementLangue et dans celui ci :
Condition : Au lancement de la scène
Pour chaque objet : ATraduire
Lire GlobalVariableString(langue)+"/"+ATraduire.VariableString(texte) et enregistrer le texte dans temp
Faire =VariableString(temp) au texte de ATraduire
Si vous rafraichissez souvent l’affichage sans changer de scène (il subit de grosses modifications), vous pouvez, en utilisant l’extension Évènements Fonctions, créer une fonction qui contient le Pour Chaque Objet, et appeler cette fonction au lancement de la scène et quand l’affichage est rafraichi.
C’est la méthode la plus simple et adaptée aux gros projets. Le groupe d’évènements externes permet d’être utilisé dans toutes les scènes en même temps !
J’espère avoir été assez clair, n’hésitez pas si vos voulez plus de précisions 