Cette page est destinée aux programmeurs .Net ayant une connaissance élémentaire du langage VB.Net et de Visual Studio 2003.
Développer une application multilingue en VB.Net Version imprimable de la page
Le FrameWork .Net comprend tout les mécanismes nécessaires à la mise en oeuvre d'applications internationales (Multilingues)
Vous pouvez mettre en place les fonctionalités multilingues de votre formulaire un fois que celui-ci est terminé et mis au point. La principale précaution préalable est de ne pas coder "en dur" des chaines de caractères en français dans le code. (Messages d'erreur par exemple)
Pour rendre votre formulaire multilingue, vous définissez le propriété Localizable de votre formulaire à True.
Ensuite vous donnez à la propriété Language la valeur désirée (langue). Visual Studio génère alors un fichier de ressources spécifique à la culture sélectionnée.
Il ne vous reste qu'a traduire les differentes propriétés Text de chaque élément de l'interface. Vous pouvez également modifier l'apparence de votre interface spécifiquement à une langue donnée. (Couleurs, dimensions, controles particuliers, etc)
Vous procédez ensuite de la sorte pour chaque langue.
Comment spécifier la langue une fois l'interface traduite? Voici un morceau de code qui fait le travail:
'Imports System.Globalization
'Imports System.Threading
' Creer un lecteur de configuration
Dim myReader As New System.Configuration.AppSettingsReader
Dim myCulture As String
' specifier la culture courante à partir du fichier de configuration
myCulture = CType(myReader.GetValue("Culture", GetType(String)), String)
Try
Thread.CurrentThread.CurrentUICulture = New CultureInfo(myCulture)
Catch
Thread.CurrentThread.CurrentUICulture = New CultureInfo("", False)
'Revient aux ressources de secours si la culture entrée n'est pas valide.
End Try
Explications:
Ce code peut être inséré dans le constructeur du formulaire: méthode new()
Nous utilisons ici un fichier de configuration, et nous déclarons un objet nécessaire pour le lire: myReader
La variable myCulture définira la langue employée à l'exécution.
La Methode GetValue spécifie le clef (ici: "Culture") du fichier de configuration dont on veut obtenir la valeur.
Nous créons ensuite un objet CultureInfo avec pour paramètre du constructeur : myCulture.
Remarquez au passage un traitement simple de l'exception, dans ce cas, la culture sera simplement la culture par défaut.
Comment Créer un fichier de configuration?
A partir du menu de Visual Studio, faire Projet, Ajouter, dans la fenêtre 'Ajouter un élément', vous clickez sur fichier de configuration. Un nouvel élément va apparaitre dans votre projet et sera dénommé: app.config
Une fois le projet généré, le fichier portera le nom de l'exécutable avec l'extension .config, c'est à dire que si votre exécutable s'appelle app.exe, le fichier de configuration correspondant s'appelera automatiquement app.exe.config
Vous pouvez éditer ce fichier en mode texte en double cliquant dessus à partir de l'explorateur de solutions.
A quoi ressemble notre fichier de configuration?
<?
xml version="1.0" encoding="utf-8"?>
<
configuration>
<appSettings>
<add key="BasePath" value ="C:\PrVgram Files\ids17\Simulator\Base\Simul.mdb"/>
<!-- Paramètres application utilisateur et de propriété configurée se placent ici.-->
<!-- url pour web link , exemple de paramètre de configuration personnalisé-->
<add key="LinkLabel1.Text" value="http://www.dentalax.com" />
<!-- Ici paires clefs valeurs pour spécifier la langue-->
<add key="Culture" value="es-ES" />
<add key="UICulture" value="es-ES" />
</appSettings>
</configuration>
Explications:
Vous avez sans doute reconnu un fichier au format XML. Visual Studio à fait le plus gros du travail lors de sa création en mettant la structure désirée en place. Vous complèterez avec 2 lignes de la forme: (entre les balises appSettings)
<add key="Culture" value="es-ES" />
<add key="UICulture" value="es-ES" />
Les paramètres qui spécifient la langue sont les clefs Culture et UICulture. vous donnerez par exemple les valeurs "es-ES" pour Espagne, "pt-PT" pour Portugal, "en-GB" pour Anglais, Grande Bretagne ou "en-US" pour Anglais, USA. Les codes pays employés sont les code ISO sur 2 caractères.
Il siffira de changer la valeur de ces deux clefs pour que le logiciel s'exécute dans la langue désirée.
Avec Visual Studio 2003, cette opération devra se faire avec un éditeur de texte. Il n'existe pas de classe pour écrire dans un fichier de configuration à partir du code. Cette lacune devrait être corrigée dans Visual Studio 2005.
Remarque: Visual Studio 2005 propose un éditeur de fichier de configuration, ce qui simplifie la tache d'édition, on ne définit que les paires clef-valeurs à partir d'une grille.
Texte ne faisant pas partie de l'interface.
Vous devrez certainement traduire des chaines de caractères de faisant pas partie de l'interface, qui habituellement sont codées sous forme de constante. L'exemple typique est le gestion des erreurs à l'exécution ou l'utilisation intensive des MsgBox. Nous vous proposons une astuce valable si ces chaines ne sont pas nombreuses. Vous les insérez sur vos formulaires sous forme de éléments texte, (contrôles Label), et affectez leur propriétéz Visible à False de manière à ce qu'ils n'apparaissent pas à l'exécution. Ensuite vous procédez à la traduction de la propriété Text pour chaque langue.
Vous affectez le propriété Text de ces Label aux variables de votre code. A l'exécution, elles seront affectées des valeurs associées à la langue sélectionnée.
Cette solution n'est pas très élégante, mais a l'avantage d'être rapide à mettre en oeuvre.
La solution 'noble' consiste à la mise en place d'un fichier de ressources, nous y reviendons.