Ajout de la gestion multilangue dans le jeu
dans la rubrique Dev
←
/ #3
/ rss
/ →
Cela fait quelques temps que l'idée me trotte dans la tête, en particulier depuis que j'ai lu le chapitre sur les dictionnaires Python dans l'excêêêllent bouquin de Gérard Swinnen, "Apprendre à programmer avec Python". Désormais Elderlore supporte l'anglais en plus du français.
Revue de code...
Si les dictionnaires Python s'appellent comme ça, il y a bien une raison : c'est qu'ils sont très pratiques pour gérer des dictionnaires !
J'ai donc ajouté le module "El_babel.py" aux modules existants. Il contient la classe Babel, qui permet de créer des objets dictionnaires et de faire quelques opérations simples dessus :

Le fichier dico.txt contient la liste des phrases du jeu en français avec leur traduction :

A l'initialisation de la classe Babel, le fichier dico.txt renseigne la variable dictionnaire python self.dico. La methode translate de la classe permet de convertir les textes fournis dans la langue désirée (pour l'instant seule la conversion du français vers l'anglais est supportée).
Les avantages de ma super-solution sont multiples :
- je peux continuer à coder le jeu en français, en ecrivant simplement le texte en français. Les widgets sont surchargées pour que le texte qui leur est fourni soit traduit au besoin par la methode "translate" de la classe Babel. Du coup le code reste light (pas de 'if' ou d'autres conditions à prévoir), la traduction se fait en sous-main.
- le terrain est déjà prêt pour ajouter d'autres langues, il suffira de mettre à jour dico.txt.
- je vais pouvoir ajouter à la classe Babel une methode _addentry(self, texte) qui sera appelée si aucune entrée n'est trouvée dans le dictionnaire (typiquement dans le cas ou je viens de rajouter du code avec des phrases en français, sans avoir encore mis à jour le fichier dico.txt). _addentry ajoutera une ligne dans dico.txt avec le texte en français. Il ne restera plus qu'à le traduire ultérieurement.
Note : j'ai cherché pendant la rédaction de ce billet à ajouter simplement du code python dans un billet Dotclear, mais sans succès.
Franck Paul a ajouté Geshi dans son blog pour ce faire, mais ce n'est pas un plug-in et j'ai peur que mes connaissances php soient un peut trop limitées.
Sinon deux plug-ins existent pour faciliter la mise en page des billets :
- Plugin de texte avancé: pas essayé, il a l'air encore en développement, et il semble avoir encore des bugs sur les caractères accentués.
- Un plugin WYSIWYG avec FCKeditor : impossible à installer chez moi.









Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.