Multi langage

Signaler
Messages postés
222
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2016
-
Messages postés
222
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2016
-
Salut,



   Je cherche à faire une application multilingue avec vs2005. Je ne comprend pas tout. Est-il possible de faire une appli qui se traduit à partir d'un fichier texte ? Ou est-ce obligatoirement une DLL ? Qqn a-til fait un tutorial ? Quand je tape multilangage dans la recherche je n'ai que des exemples VB6.


Vince

3 réponses

Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011
1
salut,
moi j'ai créer une classe comportant des variables correspondant à 1 élément
Ex :






Public
MnuFile1

As



String
=

"&File"

Puis dans l'événement Load de la page principal il lance ces informations :

Me
.mnuFile.Text = Mnufile1

ensuite une fois la classe compléte je fais une copie, puis traduit les éléments et l'échange pour passer dans langue à une autre.
C'est ma méthode, à toi de voir si elle peut te convenir...
Bon courage ;)
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
Quelque soit le langage, on peut de toutes façons gérer les langages via des fichiers textes, un fichier Excel, une base Accès.

Le principe : Toujours avoir une architecture commune quelque soit la langue (ACCESS ou EXCEL, par le jeu des colonnes, c'est très simple à visualiser), pour un fichier texte, le mieux je crois est de faire un fichier par langue, avec par ligne, le mot ou la phrase correspondant à chaque Label, chaque menu à traduire.

Il te reste à écrire une procédure commune pour charger le .text, le .caption, de chaque contrôle.

L'idée, sans tenir compte d'une syntaxte exacte, c'est de faire quelque chose du style :

CheminFichierLangage = App.path & "\Français.txt"
Open CheminFichierLangage for INPUT as #1
      Do While Not EOF(1) 
         Line input #1, lbl_toto.caption
         Line input #1, txt_toto.text
         Line input #1, txt_titi.text
      Loop
Close #1

Te reste à jouer avec une variable sur le fichier texte à ouvrir pour savoir quelle langue mettre à jour.

Pour un fichier Excel, même principie, mais il suffit de jouer sur un numéro de colonne pour lire tes langages :
Select Case range("A1").value
   case "Français"
         Colonne = 1
   case "Anglais"
         Colonne = 2
End select

et ensuite, tu lis tes données :
lbl_toto.caption = cells(i,Colonne).value
txt_toto.text = cells(i+1,Colonne).value
txt_titi.text = cells(i+2,Colonne).value

Pour ACCESS, idem, tu crées un recordset et tu sélection le ".fields" contenant la bonne langue et tu défiles le tout.

Molenn

P.S. : Attention, je ne donne bien que des pistes, des idées hein ... Juste pour dire que c'est tout à fait faisable par ces méthodes, qui n'ont rien de très compliquées. Je n'ai jamais dit par contre que c'étaient les meilleures solutions, ni les plus rapides, etc ... Je dis juste que c'est possible, que ce n'est pas difficile et que c'est même très facile à faire entretenir par un utilisateur qui ne connaîtraient rien au programme et qui voudrait par exemple rajouter une langue supplémentaire.
Messages postés
222
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
30 mars 2016

Salut,



   Merci pour vos réponses. Je pensais à qqc comme ce que vous proposez tous les 2. Mon problème (pour le VB6) est qu'il faut aussi traduire les msgbox et prévoir la mise à jour et donc le logiciel devient un tout peti plus long à écrire. Sans parler des variables inclus dans les différents textes ce qui suppose de faire une recherche sur les chaines entre guillemet. J'espérais trouver qqc de tout prêt mais pour l'instant sans succés (sa existe pour le Delphi par contre).





Par contre pour VS2005 il y a manifestement qqc d'existant mais je n'ai pas tout compris et il semble obligé de passer par des dll ce qui ne simplifie pas la tache du traducteur. Là si qqn pouvais m'expliquer ou me fournir un exemple ...





A+


Vince