Bonjour,
Je viens d'achever la traduction de mon formulaire principal. Je ne me retrouve pas dans la situation attendue d'après les tutos.
Voici comment j'ai procédé
1°/ Propriété Localizable = True
2°/ Propriété Language = Français
3°/ Propriété Language = Anglais
Je me débrouille pour générer les fichiers form1.en.resx et form1.fr.resx
4°/ Je traduis déjà , directement dans le designer, les éléments visuels du form1 du français vers l'anglais (labels, tooltips, boutons etc...)
5°/ J'ouvre le fichier code form1.vb
5°/ Je rajoute en déclaration globale :
6°/ Je rajoute dans le form1_load :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private RM As System.Resources.ResourceManager = Nothing
7°/le plus fastidieux, je remplace tous les strings destinés à l'affichage par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ' ResourceManager pour la gestion des langues RM = New System.Resources.ResourceManager(GetType(form1))où strLambda est une variable que je consigne aussitôt dans les fichiers form1.en.resx et form1.fr.resx en lui assignant une valeur dans chacune des 2 langues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RM.GetString("strlambda")
A l'issue de cette opération (plusieurs heures quand même), je me retrouve avec
- un fichier form1.fr.resx de 103 valeurs. Il n'y a que les variables de type strLambda que j'ai créées
- un fichier form1.en.resx de 275 valeurs : les 103 valeurs précédentes + les 172 contrôles du form traduits au 4°/
- un fichier form1.resx (auquel je n'ai pas touché) qui contient 1198 valeurs. On y retrouve les 172 contrôles du form traduits au 4°/ + toutes les autres personnalisation de contrôles réalisées dans le designer à la création du form mais ne nécessitant pas de traduction. Les valeurs sont en français
Mon pb est le suivant. Si je rajouter une étape 8 et 9 :
8°/ je reviens à la version française du form1 (propriété Language = Français),
- le fichier en.resx perd une partie de ses valeurs. Il lui en reste 172 : celles du form1 traduits au 4°/
- les 2 autres fichiers restent inchangés
9°/ Je rajoute un contrôle dans le designer (par exemple un TSMenuItem).
- le fichier fr.resx perd toutes ses valeurs et en crée une pour indiquer le texte du contrôle
Bref, à l'issue de cette séquence, je perds toute ma traduction et mon code n'est plus exploitable puisqu'il renvoie à des variables qui ne sont plus définies
J'ai dû rater un truc dans la gestion des fichiers .resx. Apparemment d'après les tutos, ces fichiers devraient être identiques en nombre de lignes, seules les valeurs étant différentes d'un fichier à l'autre. Mais toujours d'après ces tutos, ce process devrait être automatique sans intervention manuelle du programmeur.
Qqun peut-il me dire à quelle endroit (de 1 à 9) j'ai fait une erreur ?
Partager