Page 1 sur 1

utiliser plusieurs langues dans un programme

Publié : sam. 25/mars/2017 19:11
par YvesRossignol
Bonjour, un ami (Paul) m'a montré comment, avec quelques commandes, utiliser le français dans mes messages, textes, etc de mon programme. Je voudrais pouvoir avoir le français et l'anglais... j'ai les deux fichiers *.lang mais je me demande :

1- comment dire au compilateur que j'ai deux fichiers langues
2- comment faire choisir l'utilisateur la langue qu'il veut:
2.1 par menu
2.2 par check box
2.3 autres méthodes

il en est de même pour la version car je voudrais avoir un seul executable (je pense que c'est impossible) et que l'utilisateur choisi le 32 bits ou le 6 bits... ça je sais le faire avec inno setup. mais je m'informe...

voici la partie de code qui appelle le fichier lang.

Code : Tout sélectionner

; Build_Language("welds_french.Lang")
Yves

j'ai d'autres questions mais je vais faire un thread par question.

Re: utiliser plusieurs langues dans un programme

Publié : sam. 25/mars/2017 19:18
par JohnJohnsonSHERMAN
Une solution consiste à charger au démarrage du programme un fichier contenant tous les textes et messages dans une certaine langue. Pour une autre langue il faut faire un autre fichier.
Il suffit de mettre une liste de tout les textes, un fichier JSON conviendra parfaitement, de plus c'est nativement supporté par PB. :)

Re: utiliser plusieurs langues dans un programme

Publié : sam. 25/mars/2017 20:34
par Ar-S
Je trouves que les commandes de la bibliothèque Preference() se prêtent bien à cette manipulation. ça t'évite d'avoir X fichiers langues.
Sauvegarde le fichier avant de le compiler

Code : Tout sélectionner

;Création du fichier langue que tu peux faire à part
If CreatePreferences(GetCurrentDirectory()+"lng.prefs")
  PreferenceGroup("FR")
    WritePreferenceString("WELCOME", "Bonjour") 
    WritePreferenceString("ABOUT", "A Propos")


  PreferenceGroup("UK")
    WritePreferenceString("WELCOME", "Welcome")
    WritePreferenceString("ABOUT", "About")


  ClosePreferences()
EndIf


; Dans ton programme
OpenPreferences(GetCurrentDirectory()+"lng.prefs")


  ; Si l'utilisateur choisit le français
  PreferenceGroup("FR")
    Welcome$  = ReadPreferenceString("WELCOME", "Bonjour")
    About$    = ReadPreferenceString("ABOUT", "A Propos")
    
    Debug Welcome$
    Debug About$
    
      ; Si l'utilisateur choisit l'anglais
  PreferenceGroup("UK")
    Welcome$  = ReadPreferenceString("WELCOME", "Welcome")
    About$    = ReadPreferenceString("ABOUT", "About")
    
     Debug Welcome$
    Debug About$

ClosePreferences()
Le ReadPreferenceString offre la sécurité d'afficher la traduction au cas ou le fichier langue soit effacée par mesgardes.
Pour tester, vire le fichier lng.prefs et commente la partie CreatePreferences()

Quand au choix pour choisir sa langue, je préfère un petit buttongadgetimage avec le drapeau ;)

Pour ce qui est d'un seule exe pour les 2 versions, hormis la bidouille en include binary de la version 32bits qui engloberait la version 64bits si l'os est 64bits, je ne vois pas trop mais ça reviendrait à faire un setup..