IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Changement paramètre régionaux "Arabe"


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 41
    Points
    41
    Par défaut Changement paramètre régionaux "Arabe"
    Bonjour,

    Après une longue recherche sur internet (Forums, Documentations,...), je me retourne vers vous pour m'aider s'il vous plait .

    Pour mon application, j'ai développé un outil d'importation de fichier Excel (.xls) pour charger des données.
    Le problème c'est que mes fichiers Excel sont en arabe, ce qui fait lors de l'importation, j'obtiens des '?????????????' au lieu des mots arabes.
    Après une recherche, j'ai découvert que le changement ds paramètre régionaux (Panneau de configuration>Région et langue>Format) en Arabe (Algérie), permet de régler le problème.

    Je pourrai bien me contenter de cette solution, c'est à dire proposer au client de de faire la manipulation (Changement Arabe (Algérie)), à chaque importation, puis de revenir en français (Changement Français (France)).

    Je voudrai savoir s'il existe un moyen pour faire cette manipulation en arrière plan grâce à une fonction dans Delphi7.

    Je précise aussi que j'ai trouvé le code suivant, qui fait parfaitement l'affaire sous Windows 7, mais malheureusement, il ne donne pas les même résultats sous Windows 8 :

    Procédure pour basculer vers l'arabe (implémenter dans l'application appelante, ou à l'ouverture de l'application)
    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
    procedure langue_ARA();
    begin
    with TRegistry.Create do//arabe
      try
        RootKey := HKEY_CURRENT_USER   ;
        OpenKey('Control Panel\International',true);
        WriteString('iCountry','213');
        WriteString('sCountry','Algérie');
        WriteString('Locale','00001401');
        WriteString('LocaleName', 'ar-DZ');
        WriteString('sLanguage','ARG');
        CloseKey;
      finally
       // Free;
      end;
    end;
    Procédure pour basculer vers le français (implémenter à la sortie de l'application d'importation)
    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
    procedure langue_FRA();
    begin
    with TRegistry.Create do//Français
      try
        RootKey := HKEY_CURRENT_USER   ;
        OpenKey('Control Panel\International',true);
        WriteString('iCountry','33');
        WriteString('sCountry','France');
        WriteString('Locale','0000040C');
        WriteString('LocaleName', 'fr-FR');
        WriteString('sLanguage','FRA');
        CloseKey;
      finally
       // Free;
      end;
    end;
    Merci, je compte sur vous.

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 55
    Points : 41
    Points
    41
    Par défaut Solution
    Bonjour tout le monde,

    J'ai finalement résolu le problème. Je publie la solution, comme ça d'autre pourront en profiter.

    Dans la fenêtre appelante, avant d'ouvrir l'application cible:

    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
     
    procedure langue_ARA();
    var
      cmd, param : String;
      filename:string;
    begin
      // Chemin d'un fichier xml à passer en paramètre à la commande intl.cpl, par configurer l'environnement Arabe (Algérie), Voir en bas son contenu
      filename:='C:\ar-DZ.xml';
      param:='/f:"'+filename+'"';
      cmd := 'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,' + param;
      winExec(PChar(cmd),SW_SHOW);
    end;
    {-------------------------------}
    procedure appelerAPP_Cible();
    begin
     langue_ARA();  
    end;
    et à la fermeture de l'application onClose() par exemple, je le rend en français:
    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
     
    procedure langue_FRA();
    var
      cmd, param : String;
      filename:string;
    begin
      // Chemin d'un fichier xml à passer en paramètre à la commande intl.cpl, par configurer l'environnement Français (France), Voir en bas son contenu
      filename:='C:\fr-FR.xml';
      param:='/f:"'+filename+'"';
      cmd := 'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,' + param;
      winExec(PChar(cmd),SW_SHOW);
    end;
    {-------------------------------}
    procedure appelerAPP_Cible();
    begin
     langue_FRA();  
    end;
    Le contenu du fichier C:\ar-DZ.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
     <gs:UserList>
       <gs:User UserID="Current"/>
     </gs:UserList>
     <gs:UserLocale>
       <gs:Locale Name="ar-DZ" SetAsCurrent="true" ResetAllSettings="true"/>
     </gs:UserLocale>
    </gs:GlobalizationServices>
    Le contenu du fichier C:\fr-FR.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
     <gs:UserList>
       <gs:User UserID="Current"/>
     </gs:UserList>
     <gs:UserLocale>
       <gs:Locale Name="fr-FR" SetAsCurrent="true" ResetAllSettings="true"/>
     </gs:UserLocale>
    </gs:GlobalizationServices>
    J'espère que ça pourra servir à quelqu'un.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete paramétrée avec des singles quotes ?
    Par Mirmillon dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/12/2010, 11h34
  2. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo