Bonjour à tous
Je suis actuellement en train de rendre mon programme multilangue.
j'ai donc différent fichier XML contenant les captions des boutons et autres affichages de mon application (un par langue).
Au démarrage de mon application, je charge le document XML correspondant a la langue stocké dans un fichier ini et je renseigne tous les captions. Là pas de problème.
Je veux donné la possibilité a l'utilisateur de changer cette langue quand il le désire. J'ai donc un menu me permettant de faire cela, qui appelle les même fonctions que lors du premier chargement du programme et ainsi charger les captions de la langue correspondante.
Or, lors d'un changement de langue, j'ai une erreur EDomParseError
Est-ce que quelqu'un saurais d'où peut venir le problème.
Voici mon code :
L'erreur se produit lorsque je veux récupérer la racine.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // Méthode qui charge les Caption des composants bool __fastcall TMainForm::ChargerCaption(void) { // Chemin pour le fichier de langue AnsiString CheminFichierLang = ExtractFilePath(Application->ExeName) + "\Lang\\"; // On fini de construire le chemin pour le fichier de langue CheminFichierLang += Langue; CheminFichierLang += ".lang"; // On récupère le contenu du fichier XML DocumentXML->LoadFromFile(CheminFichierLang); // On active le document DocumentXML->Active = true; // On récupère la racine du document _di_IXMLNode Racine = DocumentXML->DocumentElement; .... }
Voici l'appel dans le constructeur de l'application pour le premier chargement
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // On charge la langue Language(); // Méthode qui récupère la langue dans le fichier ini // On charge les captions if(!ChargerCaption()) { ShowMessage("Erreur dans le fichier de langue !"); // On vide le document XML DocumentXML->XML->Clear(); // On désactive le document DocumentXML->Active = false; Application->Terminate(); } // On vide le document XML DocumentXML->XML->Clear(); // On désactive le document DocumentXML->Active = false;
Partager