Maj projets vb pour gestion multilingue

Description

Gestion multilingue pour projets Visual Basic v1.0
Conception/développement : Vincent Dummer (cyrus@mageos.com)

Description :
-------------
Cette application est en réalité un assistant qui vous permettra de pouvoir gérer plusieurs langues simultanément dans un projet Visual Basic. En effet, après avoir mis à jour un projet avec cet assistant, des fonctions de traduction seront ajoutées à celui-ci. Les titres des contrôles dans les forms tels que les labels, boutons, etc., seront dynamiquement modifiés en fonction de la langue choisie.

Ce que fait l'assistant quand vous mettez à jour un projet :
------------------------------------------------------------

> 1 - L'assistant recherche tout d'abord les titres des contrôles dans toutes les forms du projet. Il crée ensuite un dictionnaire avec tous ces titres, en évitant les doublons.

Exemple pour un projet ayant une seule form ayant pour Caption 'Ma Form' et ayant deux boutons : cmdValidate ayant pour Caption 'Valider' et cmdCancel ayant pour Caption 'Annuler'. L'application devra gérer trois langues : le français (par défaut), l'anglais (E) et l'espagnol (S) :

-Ma Form
E-?
S-?

-Valider
E-?
S-?

-Annuler
E-?
S-?

NB : Ce sera à vous de remplir les traductions à la place des points d'interrogation.

> 2 - Des procédure TranslateInterface() sont placées en bas de chaque form. Elles contiendront la mise à jour des titres des contrôles en fonction de la langue choisie (variable global LanguageLetter)

Exemple : pour la Form de notre exemple précédent :

Private Sub TranslateInterface()
Me.Caption=Translate("Ma Form")
cmdValidate.Caption=Translate("Valider")
cmdCancel.Caption=Translate("Annuler")
End Sub

Si la variable LanguageLetter = "E", alors l'appel de cette fonction traduira la Form en Anglais.
Si la variable LanguageLetter = "S", alors l'appel de cette fonction traduira la Form en Espagnol.
Si la variable LanguageLetter = "" (language de référence), alors l'appel de cette fonction traduira la Form en Français.

> 3 - Un module appelé 'Translation_subs' est rajouté au projet. Il contient la gestion de la fonction 'Translate' et la gestion du dictionnaire.

Ce qu'il vous reste à faire :
-----------------------------
Maintenant, le travail le plus contraignant est fait. Il ne vous reste plus qu'à appeler la procédure TranslateInterface dans l'évènement Form_Load de chaque Form. NB : si vous voulez que la traduction se fasse en dynamique, faites l'appel de TranslateInterface dans l'évènement Activate.

Exemple :

Private Sub Form_Load()

' Traduction de l'interface
Call TranslateInterface()

' Mes Initialisation
' ...

End Sub

Si vous devez afficher du texte par un quelconque moyen, rentrez la référence manuellement dans le dictionnaire, et servez-vous toujours de la fonction Translate().

Exemple (code avant modification) :

Private Sub cmdValidate_Click()
MsgBox "C'est validé !"
End Sub

Rajoutez ceci dans le dictionnaire :

-C'est validé !
E-It is validated !
S-Validar !

et modifiez votre code comme ceci :

Private Sub cmdValidate_Click()
MsgBox Translate("C'est validé !")
End Sub

La fonction Translate s'occupera de récupérer la valeur de la variable LanguageLetter et de renvoyer la bonne traduction
Ceci est valable pour tous les appels de texte. Voilà, vous êtes opérationnels pour convertir votre projet en projet multilingue. Bonne prog'

Format du dictionnaire :
------------------------
Le dictionnaire est un fichier texte devant être placé dans le même répertoire que votre projet. Vous pouvez modifier le code pour pouvoir le placer où vous le voulez.

Le dictionnaire respecte ces règles :
- Une ligne commençant par ' est un commentaire
- Le symbole '-' est utilisé pour marquer le début d'un terme de référence
- Les lignes blanches seront ignorées, vous pouvez donc en placer pour aérer votre dictionnaire

NB : Vous pouvez ajouter des commentaires dans le dictionnaire en les faisant commencer par le symbole '

Exemple de dictionnaire : (non rempli)

' ________________
' \ /
' > Mon projet <
' /______________\
'

' /// frmMain Form ///

-Ma Form
E-?
S-?

-Valider
E-?
S-?

-Annuler
E-?
S-?

' /// modMessage Module ///

-Bonjour
E-?
S-?

-Au revoir
E-?
S-?

etc...

Améliorations possibles :
-------------------------
Il serait intéressant d'insérer automatiquement les appels de TranslateInterface() dans les évènements Load de chaque Form et d'automatiser la recherche des chaînes de caractères dans les différents modules/forms du projet pour alimenter le dictionnaire et placer les fonctions Translate() automatiquement.

Bugs connus :
-------------
Aucun

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.