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 :

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;
 
        ....
}
L'erreur se produit lorsque je veux récupérer la racine.

Voici l'appel dans le constructeur de l'application pour le premier chargement

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;
Merci d'avance pour votre aide.