Comment faire pour coder un changement de langue en lua ?
Bonjour, je voulais savoir comment on peut coder un choix de différente langue en lua car j'ai fait un prototype mais il ne fonctionne que sur les texte de base de mon jeu mais sur tout les texte ou c'est de boutons il ne veut pas se mettre a jour.
après j'ai fais quelque test mais si je réussis a traduire mon menu l'ancien menu reste quand même
C'est comme si il y avait plusieurs bouton les un par dessus les autres car dans la console il m'affiche une 20 de fois l'id du bouton par contre si je met la fonction dans load dans la console il ne m'affiche qu'une fois l'id se qui est bien mais par contre il ne veut pas se mettre a jour merci de m'aider
Le principe est de ne pas afficher directement le texte mais de passer par des variables, et que ces variables contiennent le texte correspondant à la langue en cours.
Exemple :
Titre_Menu = "Mon menu en français"
ou
Titre_Menu = "My game in English"
Il te suffit de mettre ça par exemple dans une fonction :
function ChangeLangue(langue)
if langue=="FR" then
Titre_Menu = "Mon menu en français"
elseif langue=="EN" or langue=="US" then
Titre_Menu = "My game in English"
... etc.
Mais l'idéal serait de charger le texte dans un tableau associatif, à partir d'un fichier CSV ou JSON.
C'est ce que je fais dans mes programmes Love2D, j'ai un dossier "lang" qui contient les textes sous différentes langues : fr.lua et en.lua par exemple.
J'ai choisi le format lua pour des questions de praticité car faisant la traduction moi-même, pas besoin d'un format comme le CSV qu'un traducteur pourrait ouvrir avec excel.
Mes fichiers lua contiennent une table associative contenant les textes, que je renvoi à la fin du fichier :
fr.lua
local lang = {} lang["titreJeu"] = "Mon super jeu" lang["menuJouer"] = "Jouer" lang["menuOptions"] = "Options" lang["menuQuitter"] = "Quitter" return lang
en.lua
local lang = {} lang["titreJeu"] = "My awesome game" lang["menuJouer"] = "Play" lang["menuOptions"] = "Settings" lang["menuQuitter"] = "Quit" return lang
Lors du lancement du jeu, je charge les textes dans un tableau à l'aide d'une fonction, fonction que j'utilise à nouveau dès que l'utilisateur change de langue en jeu :
function changeLangue(pLangue) -- variable globale qui contient les textes, le _ devant le nom de la variable me permet de -- me rappeler qu'il s'agit d'une variable globale _str = require("lang/"..pLangue) end -- Pour charger les textes en français : changeLangue("fr") -- Pour charger les textes en anglais : changeLangue("en")
Maintenant, si je fais :
print(_str["titreJeu"])
le programme affichera "Mon super jeu" si la langue a été configurée en français, ou "My awesome game" si la langue à été configurée en anglais.
- 6 Forums
- 256 Sujets
- 897 Posts
- 0 En ligne
- 45.6 {numéro}K Membres