Communauté

Comment faire pour ...
 
Notifications
Retirer tout

Comment faire pour coder un changement de langue en lua ?

4 Posts
3 Utilisateurs
0 Reactions
397 Vu
0
Début du sujet

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.

HunterParadise Début du sujet 26/04/2023 1:03

après j'ai fais quelque test mais si je réussis a traduire mon menu l'ancien menu reste quand même

HunterParadise Début du sujet 26/04/2023 1:10

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

2 Réponses
0

@hunterparadise 

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.

 

 

0

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.

Ce message a été modifié Il y a 1 an 2 fois parRaphytator
Répondre
Share:

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.