PureBasic

Forums PureBasic
Nous sommes le Mar 21/Aoû/2018 22:34

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 79 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante
Auteur Message
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 10:39 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14541
ben moi , ça fait 4 pages que je suis votre Discussion ....
et je ne sais toujours pas de quoi vous parlez !

il faudrait une présentation, de la chose, avec une explication concrète

j'ai vaguement compris qu'il s'agit d'un site sur lequel se trouve un stock de codes sur les API windows ... en allemand ?
j'ai vaguement compris que vous essayez de la traduire (Comment , c'est un mystere ... )

bref que quelqu'un ( si possible en première page , ou alors un nouveau sujet )
fasse une belle présentation , pour le membre lamda qui se présente ....

parce que , si j'ai pas compris , j'imagine qu'on doit etre nombreux .. non ? (ou je deviens particulièrement con :lol: .... ou plutôt que j'en prends conscience :lol: :lol: )


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 11:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 22/Nov/2004 13:05
Messages: 350
Pareil pour moi... le premier post semble être la suite d'une conservation déjà entamée ailleurs du coup j'ai rien pigé à l'histroire.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 11:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8468
J'ai mis à jour le sujet 1 pour tenter d’éclaircir la chose, mais j'avoue que moi aussi je suis un peu perdu.
PAPPIP si ce que j'ai mis en topic 1 suffit, dis le moi sinon si tu peux me corriger.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 12:08 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
Guten Tag Rsbasic
Rsbasic danken Ihnen für dieses hervorragende Programm.
Ich habe versucht, automatisch übersetzen Verzeichnisse und Dateinamen, dass die Ausführungen in '...'.

Ich habe auch französisiert WinAPI_library.exec Programm.
Entschuldigen Sie mich haben Sie nicht um Erlaubnis gebeten.

Nochmals vielen Dank

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 13:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 1276
Bonjour
pour être clair l'archive complète de PAPIPP
Fonctionne mais la commande "OpenWindow" de beaucoup de codes est traduite en "OpenFenêtre"
et j' (essaye( de corrigé ce problème a partir du code de PAPIPP ...

donc je continue à rechercher le moyen d'obtenir un code qui traduise tout cela sans embêter PAPIPP
pour chaque nouvelle mise a jour...

@PAPIPP
je viens de remarquer que les fichier.INI du dossier "Einstellungen"
même si leurs noms sont traduits leur contenu ne l'est pas...
alors que l'archive complète que tu as mise sur le forum, il sont traduit.

cette opération n'est pas réalisée par le code mis sur le forum
même avec le bout de code corrigé, mis après le post de RSBasic

Cordialement


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 17:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 21/Aoû/2012 21:22
Messages: 13
Localisation: Berlin
Merci pour les compliments!

@Ar-S
Je vais bientôt mettre au point un programme d'automatisation de la traduction.

@PAPIPP
Pas de problème!

_________________
Je ne parle pas français. C'est pourquoi j'utilise deepl.com.
ImageImageImageImage


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 22:15 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
@Rsbasic
Merci encore

@Ar-s
C'est parfait merci.

@DOBRO
J'ai essayé de traduire d'une manière semi-automatique toute l'application en allemand de Rsbasic sur une aide des API windows
(Quelques manipulations non automatique en autre la traduction par Google translate)
J'ai donné le PRG de traduction semi_auto ainsi qu'une application complète traduite chez moi
Mais Kernadec ne retrouve pas le même résultat chez lui.
Car pour chaque modification de l'original de Rsbasic ou de mise à jour il faudra traduire toute l'application. (La traduction prend moins de 5 minutes)
Voila le PB (retrouver les mêmes résultats chez lui et chez moi)


@kernadec
Voici le code après quelques modifications mineures du PRG qui me donne des résultats OK chez moi.
J'ai libéré le test sur window et button
Et les contenus des fichiers.ini au premier niveau sont bien traduits
Quant aux fichiers.ini des sous répertoires ils font référence à l'aide Microsoft.
Ci-dessous Le prg modifié.
Le répertoire des fichiers.ini n'est plus déterminé en position absolue mais en position relative:

Code:
;Conversion WIN_API Allemand en Français par PAPIPP
Enumeration
   #F_c_al_fr
   #F_P_al
   #F_p_fr
   #F_Code_al
   #F_Code_FR
   #F_Code_ALFR
   #F_list_F
   #F_non_al
EndEnumeration
Structure AL_fr
   ALrep$
   FRrep$
   FR$
EndStructure
Global NewMap M_Al.s{1}() ; 1=dossier ,2=fichier 3=mot
Global NewMap MAP_AL_FR.al_fr()
Global GpathAL$=""
Global GTRADUC=0
Global G_nom_W_mess.s="Aide du PRG"
Global NBSLAHD.l
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
I=0
While GpathAL$="" And i<4
   GpathAL$=PathRequester("Après MAJ du  PRG allemand Donnez le chemin des codes","L:\program files\")
   i+1
   If i>2
      MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de choix c'est fini")
      End
   EndIf
Wend
   NBSLAHD=CountString(GpathAL$,"\")

Global GpathFR$=Left(GpathAL$,Len(GpathAL$)-1)+"_FR\"
Global Gpath_fil_fr.s
If FileSize(GpathFR$)=-2
   Select MessageRequester(" ATTENTION N°:"+Str(#PB_Compiler_Line) ,"Vous allez détruire tous LES fichiers de:"+GpathFR$,#PB_MessageRequester_YesNo)
      Case #PB_MessageRequester_Yes
         If DeleteDirectory(GpathFR$,"*.*",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
         Else
            MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible Détruire "+#CRLF$+GpathFR$)
         EndIf
      Case #PB_MessageRequester_No
         MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de destruction du répertoire FR:"+#CRLF$+GpathFR$+" alors c'est fini")
         End
   EndSelect
EndIf
If CopyDirectory(GpathAL$,GpathFR$,"",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
   ; #PB_FileSystem_Recursive: Copie d'un répertoire et de tous les sous-répertoires.
   ; #PB_FileSystem_Force    : Remplace également LES fichiers protégés (Lecture seule).
Else
   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de copier "+#CRLF$+GpathAL$+" dans "+GpathFR$)
   End
EndIf

Procedure analyse_fil(path_fil.s)
   Extens$ =UCase(GetExtensionPart(path_fil))
   nbslah.l=CountString(path_fil,"\")-NBSLAHD
   If CreateFile(#F_code_fr,Gpath_fil_fr)
      If ReadFile(#F_Code_al,path_fil)  ; Si le fichier peut être lu , on continue...
         While Eof(#F_Code_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            lign_f.s=ReadString(#F_Code_al)      ; Affiche ligne par ligne le contenu du fichier
            lign_fa.s=lign_f
            If extens$="PB"
               
               nb_q=CountString(lign_f,Chr(34))
               pos_x=0
               imp_s.s=""
               ;***************  Recherche  des mots allemands ou autres dans le PRG  *********
               For i=1 To nb_q Step 2
                  pos_x=FindString(lign_f,Chr(34),pos_x)
                  pos_y=FindString(lign_f,Chr(34),pos_x+1)
                  mot_al.s=Mid(lign_f,pos_x+1,pos_y-pos_x-1)
                  If Len(mot_al)>4
                     m_al(mot_al)="3"
                     
                     If GTRADUC>0
                        If FindMapElement(map_al_fr(),mot_al)>0
                                           If mot_al<>"Window" And mot_al<>"Button" ; Vous pouvez libérer cette ligne
                                             lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
                                           EndIf                                    ; Vous pouvez libérer cette ligne
                        Else
                        ; message si le mot n'est pas trouvé certainement un bidouillage dans le fichier mot allemand ou le fichier de traduction
                        EndIf
                     EndIf
                  EndIf
                  pos_x=pos_y+1
               Next
            ElseIf extens$="INI" And NBSLAH=1 And GTRADUC>0
;              Debug _n(nbslah)+" "+Str(CountString(path_fil,"\"))+_n(NBSLAHD)
               mot_al.s=ReplaceString(lign_f,"."+Extens$,"")
               If FindMapElement(map_al_fr(),mot_al)>0
                  lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
               Else
               EndIf
            EndIf
            If GTRADUC>0
               WriteStringN(#F_code_fr,lign_f)
            EndIf
            
         Wend
         CloseFile(#F_Code_al)               ; Ferme le fichier précédemment ouvert
      Else
         MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier!"+#CRLF$+path_fil)
         End
      EndIf
      CloseFile(#F_code_FR)                       ; ferme le fichier précédemment ouvert et enregistre les données
   Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+Gpath_fil_fr)
   EndIf
EndProcedure

Procedure rech_mots_AL(SOUS_repAL.s)
   flag_f=0
   pathAL.s=GpathAL$+SOUS_repAL
   ; ***** recherche des dossiers
   reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
   If reper
      While NextDirectoryEntry(reper)
         If DirectoryEntryType(reper)=#PB_DirectoryEntry_File
            ;         Type$="   [Fichier]="
            DIR_name.s=DirectoryEntryName(reper)
            fil_ac.s=pathAL+"\"+DIR_name
            fil_ac=ReplaceString(fil_ac,"\\","\")
            
            fil_name.s=ReplaceString(dir_name,".pb","",#PB_String_NoCase )
            fil_name.s=ReplaceString(fil_name,".ini","",#PB_String_NoCase )
            
            m_al(fil_name)="2"
            Gpath_fil_fr.s=ReplaceString(fil_ac,GpathAL$,GpathFR$)
            analyse_fil(fil_ac)
            If GTRADUC>0
               If FindMapElement(map_al_fr(),fil_name)>0
                  Gpath_fil_frN.s=ReplaceString(gpath_fil_fr,fil_name,map_al_fr()\FR$)
                  If RenameFile(Gpath_fil_fr,Gpath_fil_frN)
                  Else
                     MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de renommer fichier :"+#CRLF$+Gpath_fil_fr+" EN "+ Gpath_fil_frN)
                  EndIf
               Else
                  If fil_name<>"Kategorien"
                     MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de trouver le mot allemand :"+#CRLF$+fil_name)
                  EndIf
               EndIf
            EndIf
         Else
            DIR_NAME.s=DirectoryEntryName(reper)
            If dir_name<>"." And dir_name<>".."
               m_al(dir_name)="1"
               RECH_mots_AL(SOUS_repAL+DIR_NAME)
               If GTRADUC>0
                  DIR_AL$=GpathFR$+SOUS_repal+dir_name
                  If FindMapElement(map_al_fr(),dir_name)>0
                     dir_fr$=GpathFR$+SOUS_repAL+map_al_fr()\FR$
                     If RenameFile(DIR_AL$,DIR_FR$)
                     Else
                        MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de renommer répertoire :"+#CRLF$+DIR_AL$+" EN "+ DIR_FR$)
                     EndIf
                  Else
                     MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de trouver le mot allemand :"+#CRLF$+dir_name)
                  EndIf
               EndIf
            EndIf
         EndIf
      Wend
      FinishDirectory(reper)
   EndIf
   
EndProcedure

Procedure FUSION_2_FICHIERS(FICH_AL.s,FICH_FR.s,FICH_ALFR.s) ;=GpathAL$+"file_ALFR.txt")
   nb_e_al.l=0
   nb_e_fr.l=0
   If CreateFile(#F_Code_ALFR,GpathAL$+"file_ALFR.txt")         ; création d'un nouveau fichier texte...
      
      If ReadFile(#F_P_al,FICH_AL)
         If ReadFile(#F_P_fr,FICH_FR)
            While Eof(#F_P_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
               l_al.s=ReadString(#F_P_al)      ; Affiche ligne par ligne le contenu du fichier
               nb_e_al+1
               If Eof(#F_P_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
                  l_FR.s=ReadString(#F_P_fr)      ; Affiche ligne par ligne le contenu du fichier
                  nb_e_fr+1
                  WriteStringN(#F_Code_ALFR,l_al+"||"+l_FR)
               EndIf
            Wend
            CloseFile(#F_P_al)               ; Ferme le fichier précédemment ouvert
            CloseFile(#F_P_fr)               ; Ferme le fichier précédemment ouvert
         Else
            MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_FR)
         EndIf
      Else
         MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_AL)
      EndIf
      
   Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier :"+GpathAL$+"file_ALFR.txt")
   EndIf
   CloseFile(#F_Code_ALFR)                       ; ferme le fichier précédemment ouvert et enregistre les données
   If nb_e_al>nb_e_fr+1 And nb_e_al<>nb_e_fr
      message$="le fichier : "+FICH_AL+" à "+Str(nb_e_al)+#CRLF$+"le fichier : "+FICH_AL+" à "+Str(nb_e_fr)
      ;      message$+#CRLF$+l_al+#CRLF$+l_FR
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),message$)
   EndIf
EndProcedure
; *************** Lecture fichier de conversion **************"
Procedure LECT_CONV_AL_FR(FIL_CONV_AL_FR.s,Map DIC_AL_FR.al_FR())
   Static fl1.b=1
   If ReadFile(#F_c_al_fr,FIL_CONV_AL_FR)  ; Si le fichier peut être lu , on continue...
      While Eof(#F_c_al_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
         TEXTE$=ReadString(#F_c_al_fr,#PB_Ascii)      ; Affiche ligne par ligne le contenu du fichier
         del.l=FindString(TEXTE$,"||",0)
         ;       TEXTAL$=Trim(Mid(texte$,0,del-1))
         ;       textFR$=Trim(Mid(texte$,del+2))
         TEXTAL$=Mid(texte$,0,del-1)
         textFR$=Mid(texte$,del+2)
         
         If fl1=1
            dossf$=TEXTFR$
            fl1=0
         EndIf
         doss$=TEXTAL$
         If AddMapElement(DIC_AL_FR.al_FR(),TEXTAL$)<>0
            DIC_AL_FR()\ALrep$=doss$
            DIC_AL_FR()\FRrep$=dossF$
            DIC_AL_FR()\FR$=textFR$
         Else
            MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de placer le mot allemand :"+#CRLF$+textal$)
         EndIf
         If Len(textal$)=0
            fl1=1
         EndIf
      Wend
      CloseFile(#F_c_al_fr)               ; Ferme le fichier précédemment ouvert
   Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+GpathAL$+FIL_CONV_AL_FR)
   EndIf
   
EndProcedure
Procedure.l FindTargetPIDByWindowName(Name.s,Opt.l=0)
   ;Opt option pour obtenir soit le PID soit Handle
   ;opt=O par defaut donne PID
   ;opt=1 donne le Handle
   ; Name est le nom window
   
   Define.l hWnd,Pid
   hWnd=FindWindow_(#Null,Name)
   If hWnd<>0
      GetWindowThreadProcessId_(hWnd,@Pid)
   EndIf
   If opt=0
      ProcedureReturn Pid
   Else
      ProcedureReturn hWnd
   EndIf
EndProcedure
Procedure AlertThread(Parameter)
   message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
   message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
   message$+#CRLF$+#CRLF$+"Les mots en allemand sont dans clipboard "
   message$+#CRLF$+"     mais aussi dans le fichier :"+GpathAL$+"file_Al.txt de Notepad"+#CRLF$
   message$+#CRLF$+"Collez les mots en allenand dans GOOGLE TRANSLATE en entrée de la traduction"
   message$+#CRLF$+"Convertissez  en une seule fois toute cette liste dans traduction Google translate"
   message$+#CRLF$+"Après traduction Sélectionnez tous les mots Français et seulement les mots français"
   message$+#CRLF$+"Ensuite copiez la partie traduite (clique droit de la souris puis copie) "
   message$+#CRLF$+"Ensuite Collez la partie traduite dans notepad fichier : "+GpathAL$+"file_FR.txt"
   message$+#CRLF$+"LES DEUX NOTEPAD PEUVENT ETRE L'UN SUR L'AUTRE,DEGAGER LES POUR ACCEDER AU FICHIER file_FR.txt"
   message$+#CRLF$+"Quittez Notepad en sauvegardant le fichier : "+GpathAL$+"file_FR.txt"
   message$+#CRLF$+"Quittez définitivement GOOGLE TRANSLATE La traduction est terminée"
   message$+#CRLF$+#CRLF$+"POUR CONTINUER LE PRG TAPER SUR OK MAIS NE LE FAITE QUE LORSQUE LE FICHIER DE MOTS FR EST SAUVE"
   message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
   MessageRequester(G_nom_W_mess,message$)
EndProcedure
Resultat.q=FileSize(GpathAL$+"file_ALFR.txt")
; Valeurs  pour 'Resultat':
; >-1 Taille du fichier
; -1: Fichier inexistant.
; -2: Le fichier est en fait un répertoire.

If resultat>1
   res_mes.l=MessageRequester("Choix","Voulez vous sautez la constitution des fichiers de traduction",#PB_MessageRequester_YesNoCancel)
   Select res_mes
      Case #PB_MessageRequester_Yes
         Goto DEBUT_TRAD
      Case #PB_MessageRequester_Cancel
         End
   EndSelect
EndIf
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************

GTRADUC=0
rech_mots_AL("Codes\")
If CreateFile(#F_list_F,GpathAL$+"file_Al.txt")
   txt_clip.s=""
   
   ForEach M_AL()
      WriteStringN(#F_list_F,MapKey(M_AL()))
      txt_clip+MapKey(M_AL())+#CRLF$
   Next
   CloseFile(#F_list_F) ; ferme le fichier précédemment ouvert et enregistre les donnée
Else
   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_Al.txt")
EndIf
SetClipboardText(txt_clip)
RunProgram("http://translate.google.com/translate_t","","",#PB_Program_Wait) ; Lance GOOGLE TRANLATE
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
; RunProgram("http://translate.google.com/translate_t",txt_clip,"")
ExamineDesktops()
HAUTEUR_W=DesktopHeight(0)
Largeur_W=DesktopWidth(0)

THR1=CreateThread(@AlertThread(),0)
Delay(100)
While HNDL=0 And cpt<100
   cpt+1
   HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
   Delay(50)
Wend

SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS

RUN_PRG_AL=RunProgram("notepad",GpathAL$+"file_al.txt","")
Delay(100)
cpt=0
While HNDL_BLOC=0 And cpt<100
   cpt+1
   HNDL_BLOC=FindTargetPIDByWindowName("file_al.txt - Bloc-notes",1)
   Delay(50)
Wend

Delay(100)
SetWindowPos_(HNDL_BLOC,#HWND_NOTOPMOST,0,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*******************************************************************************************************************
BOUCLE_NON_FIN0:
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
   ;   WriteString(#F_Code_fr,GetClipboardText())
   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
RUN_PRG_FR=RunProgram("notepad",GpathAL$+"file_FR.txt","")
Delay(100)
cpt=0
While HNDL_BLOCfr=0 And cpt<100
   cpt+1
   HNDL_BLOCfr=FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)
   Delay(50)
Wend
Delay(100)
SetWindowPos_(HNDL_BLOCfr,#HWND_NOTOPMOST,Largeur_w/3,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*************************************************************************************************************************
BOUCLE_NON_FIN:
While FindTargetPIDByWindowName(G_nom_W_mess,1)<>0
Wend

Resultat.q=FileSize(GpathAL$+"file_FR.txt")
If resultat=0
   MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Il n'y a rien dans le fichier:"+GpathAL$+"file_FR.txt")
   THR1=CreateThread(@AlertThread(),0)
   Delay(100)
   While HNDL=0 And cpt<100
      cpt+1
      HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
      Delay(50)
   Wend
   SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS
   
   If FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)=0
      Goto BOUCLE_NON_FIN0
   Else
      Goto BOUCLE_NON_FIN
   EndIf
EndIf
; If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
;   WriteString(#F_Code_fr,GetClipboardText())
;   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
; Else
;   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
; EndIf
fusion_2_FICHIERS(GpathAL$+"file_al.txt",GpathAL$+"file_FR.txt",GpathAL$+"file_ALFR.txt")

;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************

debut_trad: ; LABEL PERMETTANT DE SAUTER TOUTE LA PREPARATION DES FICHIERS DE TRADUCTION

GTRADUC=1
messag$="Dernière modification de la traduction avant application"+#CRLF$
messag$+#CRLF$+"Pour terminer la traduction il faut quitter notepad du fichier de traduction"
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messag$)
RunProgram("notepad",GpathAL$+"file_ALFR.txt","",#PB_Program_Wait)

Lect_conv_al_fr(GpathAL$+"file_ALFR.txt", MAP_AL_FR())
rech_mots_AL("Codes\") ;          traduction du répertoire codes
rech_mots_AL("Einstellungen\") ;  traduction du répertoire Einstellungen Ne pas modifier ce nom ainsi que Kategorien.in
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),"La traduction est terminée")


A+

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Dernière édition par PAPIPP le Jeu 23/Aoû/2012 8:03, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Mer 22/Aoû/2012 23:18 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
@Kernadec
Je pense avoir trouvé le PB
sur la ligne 89 ElseIf extens$="INI" And NBSLAH=4 And GTRADUC>0
Le nombre de slah '\' dépend de la structure complète des sous répertoires
Pour chaque structure il faut ajuster le nombre de slah car je ne veux traduire que les fichier.ini
de premier niveau.
Car chacun d'entre nous peut non seulement donner le nom du répertoire qu'il veut mais aussi le placer où il veut.
Il existe certainement une solution plus élégante
il faut compter les slah ou sous répertoires qu'à partir du répertoire de l'application de Rsbasic alors qu'ici je les compte en absolu depuis l'unité

C'est bon le code précédent est réparé
Cela doit être OK
Merci de me le faire savoir
A+

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Jeu 23/Aoû/2012 12:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 1276
bonjour PAPIPP
merci de ta patience :D
je viens de tester ça marche très bien c'est le pied,
mais j'ai remarquer que le treegadget a un problème de rangement :wink:

comme je commençais a plus rien comprendre, j'ai écrit un bout de code
qui fonctionne très bien chez moi sur seven 32 et XP SP2
voilà le code, j'ai réécrit les fichiers ini tout simplement....
comme j'avais pas envie de reprendre tout ton raisonnement,*
j'ai pris un raccourcis :wink:

car comme tu l'as dis les chemins perdaient leur latin :mrgreen:
je poste mon code qui fonctionne aussi, avec le treegadeget trié :)
mais je pense que tu va corrigé ce soucis :D

Cordialement

ps: je viens de corrigé pour le "button", je l'avais complètement oublié celui là :(

Code:
;Conversion WIN_API Allemand en Français par PAPIPP
Enumeration
  #F_c_al_fr
  #F_P_al
  #F_p_fr
  #F_Code_al
  #F_Code_FR
  #F_Code_ALFR
  #F_list_F
  #F_non_al
EndEnumeration
Structure AL_fr
  ALrep$
  FRrep$
  FR$
EndStructure
Global NewMap M_Al.s{1}() ; 1=dossier ,2=fichier 3=mot
Global NewMap MAP_AL_FR.al_fr()
Global GpathAL$=""
Global GTRADUC=0
Global G_nom_W_mess.s="Aide du PRG"
Global Nfichier$
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
I=0
While GpathAL$="" And i<4
  GpathAL$=PathRequester("Après MAJ du  PRG allemand Donnez le chemin des codes","D:\WinAPI Library\")
  i+1
  If i>2
    MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de choix c'est fini")
    End
  EndIf
Wend
Global GpathFR$=Left(GpathAL$,Len(GpathAL$)-1)+"_FR\"
Global Gpath_fil_fr.s
If FileSize(GpathFR$)=-2
  Select MessageRequester(" ATTENTION N°:"+Str(#PB_Compiler_Line) ,"Vous allez détruire tous LES fichiers de:"+GpathFR$,#PB_MessageRequester_YesNo)
    Case #PB_MessageRequester_Yes
      If DeleteDirectory(GpathFR$,"*.*",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible Détruire "+#CRLF$+GpathFR$)
      EndIf
    Case #PB_MessageRequester_No
      MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de destruction du répertoire FR:"+#CRLF$+GpathFR$+" alors c'est fini")
      End
  EndSelect
EndIf
If CopyDirectory(GpathAL$,GpathFR$,"",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
  ; #PB_FileSystem_Recursive: Copie d'un répertoire et de tous les sous-répertoires.
  ; #PB_FileSystem_Force    : Remplace également LES fichiers protégés (Lecture seule).
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de copier "+#CRLF$+GpathAL$+" dans "+GpathFR$)
  End
EndIf

Procedure effaceancien_ini(Dir$,  Pattern$ = "*.*", Id = 0)  ; efface les anciens fichiers ini
  Protected nom$
  Dir$+"Einstellungen\"
  If Right(Dir$, 1) <> "\" : Dir$ + "\" : EndIf
  If ExamineDirectory(Id, Dir$, "")
    While NextDirectoryEntry(Id)
      Nom$ = DirectoryEntryName(Id)
      Type  = DirectoryEntryType(Id)
      Select Type         
        Case #PB_DirectoryEntry_Directory
          If Nom$ <> "." And Nom$ <> ".."
            FullName$ = Dir$ + Nom$
            DeleteFile(FullName$+".ini")
          EndIf
      EndSelect
    Wend
    DeleteFile(dir$+"Kategorien.ini")
    FinishDirectory(Id)
    ProcedureReturn
  EndIf
EndProcedure

Procedure nouveaux_ini(Dir$,  Pattern$ = "*.*", Id = 0)
  If Right(Dir$, 1) <> "\" : Dir$ + "\" : EndIf
  If ExamineDirectory(Id, Dir$, "")
    While NextDirectoryEntry(Id)
      Nom$ = DirectoryEntryName(Id)
      Type  = DirectoryEntryType(Id)
      Select Type         
        Case #PB_DirectoryEntry_File
          FullName$ =Nom$
          If GetExtensionPart(FullName$) = Pattern$
            If OpenFile(0, GpathFR$+"Einstellungen\"+Nfichier$)
              FileSeek(0, Lof(0))
              WriteStringN(0,Left(FullName$,Len(FullName$)-3))
              CloseFile(0)
            EndIf
          EndIf
        Case #PB_DirectoryEntry_Directory
          If Nom$ <> "." And Nom$ <> ".."
            FullName$ = Dir$ + Nom$
            sname.s=Nom$
            Nfichier$=Right(FullName$,FindString(ReverseString(FullName$),"\",1)-1)+".ini"
            If OpenFile(0, GpathFR$+"Einstellungen\"+Nfichier$)
              FileSeek(0, Lof(0))
              CloseFile(0)
            EndIf 
            If OpenFile(0, GpathFR$+"Einstellungen\"+"Kategorien.ini")
              FileSeek(0, Lof(0))
              WriteStringN(0,Left(Nfichier$,Len(Nfichier$)-4))
              CloseFile(0)
            EndIf 
            nouveaux_ini(FullName$, Pattern$, Id + 1)
          EndIf 
      EndSelect
    Wend
    FinishDirectory(Id)
    ProcedureReturn
  EndIf
EndProcedure

Procedure analyse_fil(path_fil.s)
  Extens$ =UCase(GetExtensionPart(path_fil))
  nbslah.l=CountString(path_fil,"\")
  If CreateFile(#F_code_fr,Gpath_fil_fr)
    If ReadFile(#F_Code_al,path_fil)  ; Si le fichier peut être lu , on continue...
      While Eof(#F_Code_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
        lign_f.s=ReadString(#F_Code_al)      ; Affiche ligne par ligne le contenu du fichier
        lign_fa.s=lign_f
        If extens$="PB"
          nb_q=CountString(lign_f,Chr(34))
          pos_x=0
          imp_s.s=""
          ;***************  Recherche  des mots allemands ou autres dans le PRG  *********
          For i=1 To nb_q Step 2
            pos_x=FindString(lign_f,Chr(34),pos_x)
            pos_y=FindString(lign_f,Chr(34),pos_x+1)
            mot_al.s=Mid(lign_f,pos_x+1,pos_y-pos_x-1)
            If Len(mot_al)>4
              m_al(mot_al)="3"
              If GTRADUC>0
                If FindMapElement(map_al_fr(),mot_al)>0
                  If mot_al<>"Window" And mot_al<>"Button"
                    lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
                  EndIf                                   
                Else
                  ; message si le mot n'est pas trouvé certainement un bidouillage dans le fichier mot allemand ou le fichier de traduction
                EndIf
              EndIf
            EndIf
            pos_x=pos_y+1
          Next
        ElseIf extens$="INI" And NBSLAH=4 And GTRADUC>0
          mot_al.s=ReplaceString(lign_f,"."+Extens$,"")
          If FindMapElement(map_al_fr(),mot_al)>0
            lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
          Else
          EndIf
        EndIf
        If GTRADUC>0
          WriteStringN(#F_code_fr,lign_f)
        EndIf
       
      Wend
      CloseFile(#F_Code_al)               ; Ferme le fichier précédemment ouvert
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier!"+#CRLF$+path_fil)
      End
    EndIf
    CloseFile(#F_code_FR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+Gpath_fil_fr)
  EndIf
EndProcedure

Procedure rech_mots_AL(SOUS_repAL.s)
  flag_f=0
  pathAL.s=GpathAL$+SOUS_repAL
  ; ***** recherche des dossiers
  reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
  If reper
    While NextDirectoryEntry(reper)
      If DirectoryEntryType(reper)=#PB_DirectoryEntry_File
        ;         Type$="   [Fichier]="
        DIR_name.s=DirectoryEntryName(reper)
        fil_ac.s=pathAL+"\"+DIR_name
        fil_ac=ReplaceString(fil_ac,"\\","\")
       
        fil_name.s=ReplaceString(dir_name,".pb","",#PB_String_NoCase )
        fil_name.s=ReplaceString(fil_name,".ini","",#PB_String_NoCase )
       
        m_al(fil_name)="2"
        Gpath_fil_fr.s=ReplaceString(fil_ac,GpathAL$,GpathFR$)
        analyse_fil(fil_ac)
        If GTRADUC>0
          If FindMapElement(map_al_fr(),fil_name)>0
            Gpath_fil_frN.s=ReplaceString(gpath_fil_fr,fil_name,map_al_fr()\FR$)
            If RenameFile(Gpath_fil_fr,Gpath_fil_frN)
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de renommer fichier :"+#CRLF$+Gpath_fil_fr+" EN "+ Gpath_fil_frN)
            EndIf
          Else
            If fil_name<>"Kategorien"
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de trouver le mot allemand :"+#CRLF$+fil_name)
            EndIf
          EndIf
        EndIf
      Else
        DIR_NAME.s=DirectoryEntryName(reper)
        If dir_name<>"." And dir_name<>".."
          m_al(dir_name)="1"
          RECH_mots_AL(SOUS_repAL+DIR_NAME)
          If GTRADUC>0
            DIR_AL$=GpathFR$+SOUS_repal+dir_name
            If FindMapElement(map_al_fr(),dir_name)>0
              dir_fr$=GpathFR$+SOUS_repAL+map_al_fr()\FR$
              If RenameFile(DIR_AL$,DIR_FR$)
              Else
                MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de renommer répertoire :"+#CRLF$+DIR_AL$+" EN "+ DIR_FR$)
              EndIf
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de trouver le mot allemand :"+#CRLF$+dir_name)
            EndIf
          EndIf
        EndIf
      EndIf
    Wend
    FinishDirectory(reper)
  EndIf
 
EndProcedure

Procedure FUSION_2_FICHIERS(FICH_AL.s,FICH_FR.s,FICH_ALFR.s) ;=GpathAL$+"file_ALFR.txt")
  nb_e_al.l=0
  nb_e_fr.l=0
  If CreateFile(#F_Code_ALFR,GpathAL$+"file_ALFR.txt")         ; création d'un nouveau fichier texte...
   
    If ReadFile(#F_P_al,FICH_AL)
      If ReadFile(#F_P_fr,FICH_FR)
        While Eof(#F_P_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          l_al.s=ReadString(#F_P_al)      ; Affiche ligne par ligne le contenu du fichier
          nb_e_al+1
          If Eof(#F_P_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            l_FR.s=ReadString(#F_P_fr)      ; Affiche ligne par ligne le contenu du fichier
            nb_e_fr+1
            WriteStringN(#F_Code_ALFR,l_al+"||"+l_FR)
          EndIf
        Wend
        CloseFile(#F_P_al)               ; Ferme le fichier précédemment ouvert
        CloseFile(#F_P_fr)               ; Ferme le fichier précédemment ouvert
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_FR)
      EndIf
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_AL)
    EndIf
   
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier :"+GpathAL$+"file_ALFR.txt")
  EndIf
  CloseFile(#F_Code_ALFR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  If nb_e_al>nb_e_fr+1 And nb_e_al<>nb_e_fr
    message$="le fichier : "+FICH_AL+" à "+Str(nb_e_al)+#CRLF$+"le fichier : "+FICH_AL+" à "+Str(nb_e_fr)
    ;      message$+#CRLF$+l_al+#CRLF$+l_FR
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),message$)
  EndIf
EndProcedure
; *************** Lecture fichier de conversion **************"
Procedure LECT_CONV_AL_FR(FIL_CONV_AL_FR.s,Map DIC_AL_FR.al_FR())
  Static fl1.b=1
  If ReadFile(#F_c_al_fr,FIL_CONV_AL_FR)  ; Si le fichier peut être lu , on continue...
    While Eof(#F_c_al_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      TEXTE$=ReadString(#F_c_al_fr,#PB_Ascii)      ; Affiche ligne par ligne le contenu du fichier
      del.l=FindString(TEXTE$,"||",0)
      ;       TEXTAL$=Trim(Mid(texte$,0,del-1))
      ;       textFR$=Trim(Mid(texte$,del+2))
      TEXTAL$=Mid(texte$,0,del-1)
      textFR$=Mid(texte$,del+2)
     
      If fl1=1
        dossf$=TEXTFR$
        fl1=0
      EndIf
      doss$=TEXTAL$
      If AddMapElement(DIC_AL_FR.al_FR(),TEXTAL$)<>0
        DIC_AL_FR()\ALrep$=doss$
        DIC_AL_FR()\FRrep$=dossF$
        DIC_AL_FR()\FR$=textFR$
      Else
        MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de placer le mot allemand :"+#CRLF$+textal$)
      EndIf
      If Len(textal$)=0
        fl1=1
      EndIf
    Wend
    CloseFile(#F_c_al_fr)               ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+GpathAL$+FIL_CONV_AL_FR)
  EndIf
 
EndProcedure
Procedure.l FindTargetPIDByWindowName(Name.s,Opt.l=0)
  ;Opt option pour obtenir soit le PID soit Handle
  ;opt=O par defaut donne PID
  ;opt=1 donne le Handle
  ; Name est le nom window
 
  Define.l hWnd,Pid
  hWnd=FindWindow_(#Null,Name)
  If hWnd<>0
    GetWindowThreadProcessId_(hWnd,@Pid)
  EndIf
  If opt=0
    ProcedureReturn Pid
  Else
    ProcedureReturn hWnd
  EndIf
EndProcedure
Procedure AlertThread(Parameter)
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+"Les mots en allemand sont dans clipboard "
  message$+#CRLF$+"     mais aussi dans le fichier :"+GpathAL$+"file_Al.txt de Notepad"+#CRLF$
  message$+#CRLF$+"Collez les mots en allenand dans GOOGLE TRANSLATE en entrée de la traduction"
  message$+#CRLF$+"Convertissez  en une seule fois toute cette liste dans traduction Google translate"
  message$+#CRLF$+"Après traduction Sélectionnez tous les mots Français et seulement les mots français"
  message$+#CRLF$+"Ensuite copiez la partie traduite (clique droit de la souris puis copie) "
  message$+#CRLF$+"Ensuite Collez la partie traduite dans notpad fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"LES DEUX NOTEPAD PEUVENT ETRE L'UN SUR L'AUTRE,DEGAGER LES POUR ACCEDER AU FICHIER file_FR.txt"
  message$+#CRLF$+"Quittez Notepad en sauvegardant le fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"Quittez définitivement GOOGLE TRANSLATE La traduction est terminée"
  message$+#CRLF$+#CRLF$+"POUR CONTINUER LE PRG TAPER SUR OK MAIS NE LE FAITE QUE LORSQUE LE FICHIER DE MOTS FR EST SAUVE"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  MessageRequester(G_nom_W_mess,message$)
EndProcedure
Resultat.q=FileSize(GpathAL$+"file_ALFR.txt")
; Valeurs  pour 'Resultat':
; >-1 Taille du fichier
; -1: Fichier inexistant.
; -2: Le fichier est en fait un répertoire.

If resultat>1
  res_mes.l=MessageRequester("Choix","Voulez vous sautez la constitution des fichiers de traduction",#PB_MessageRequester_YesNoCancel)
  Select res_mes
    Case #PB_MessageRequester_Yes
      Goto DEBUT_TRAD
    Case #PB_MessageRequester_Cancel
      End
  EndSelect
EndIf
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************

GTRADUC=0
rech_mots_AL("Codes\")
If CreateFile(#F_list_F,GpathAL$+"file_Al.txt")
  txt_clip.s=""
 
  ForEach M_AL()
    WriteStringN(#F_list_F,MapKey(M_AL()))
    txt_clip+MapKey(M_AL())+#CRLF$
  Next
  CloseFile(#F_list_F) ; ferme le fichier précédemment ouvert et enregistre les donnée
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_Al.txt")
EndIf
SetClipboardText(txt_clip)
RunProgram("http://translate.google.com/translate_t","","",#PB_Program_Wait) ; Lance GOOGLE TRANLATE
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
; RunProgram("http://translate.google.com/translate_t",txt_clip,"")
ExamineDesktops()
HAUTEUR_W=DesktopHeight(0)
Largeur_W=DesktopWidth(0)

THR1=CreateThread(@AlertThread(),0)
Delay(100)
While HNDL=0 And cpt<100
  cpt+1
  HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
  Delay(50)
Wend

SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS

RUN_PRG_AL=RunProgram("notepad",GpathAL$+"file_al.txt","")
Delay(100)
cpt=0
While HNDL_BLOC=0 And cpt<100
  cpt+1
  HNDL_BLOC=FindTargetPIDByWindowName("file_al.txt - Bloc-notes",1)
  Delay(50)
Wend

Delay(100)
SetWindowPos_(HNDL_BLOC,#HWND_NOTOPMOST,0,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*******************************************************************************************************************
BOUCLE_NON_FIN0:
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  ;   WriteString(#F_Code_fr,GetClipboardText())
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
RUN_PRG_FR=RunProgram("notepad",GpathAL$+"file_FR.txt","")
Delay(100)
cpt=0
While HNDL_BLOCfr=0 And cpt<100
  cpt+1
  HNDL_BLOCfr=FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)
  Delay(50)
Wend
Delay(100)
SetWindowPos_(HNDL_BLOCfr,#HWND_NOTOPMOST,Largeur_w/3,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*************************************************************************************************************************
BOUCLE_NON_FIN:
While FindTargetPIDByWindowName(G_nom_W_mess,1)<>0
Wend

Resultat.q=FileSize(GpathAL$+"file_FR.txt")
If resultat=0
  MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Il n'y a rien dans le fichier:"+GpathAL$+"file_FR.txt")
  THR1=CreateThread(@AlertThread(),0)
  Delay(100)
  While HNDL=0 And cpt<100
    cpt+1
    HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
    Delay(50)
  Wend
  SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS
 
  If FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)=0
    Goto BOUCLE_NON_FIN0
  Else
    Goto BOUCLE_NON_FIN
  EndIf 
EndIf
; If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
;   WriteString(#F_Code_fr,GetClipboardText())
;   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
; Else
;   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
; EndIf
fusion_2_FICHIERS(GpathAL$+"file_al.txt",GpathAL$+"file_FR.txt",GpathAL$+"file_ALFR.txt")

;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************

debut_trad: ; LABEL PERMETTANT DE SAUTER TOUTE LA PREPARATION DES FICHIERS DE TRADUCTION

GTRADUC=1
messag$="Dernière modification de la traduction avant application"+#CRLF$
messag$+#CRLF$+"Pour terminer la traduction il faut quitter notepad du fichier de traduction"
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messag$)
RunProgram("notepad",GpathAL$+"file_ALFR.txt","",#PB_Program_Wait)

Lect_conv_al_fr(GpathAL$+"file_ALFR.txt", MAP_AL_FR())
rech_mots_AL("Codes\") ;          traduction du répertoire codes
rech_mots_AL("Einstellungen\") ;  traduction du répertoire Einstellungen Ne pas modifier ce nom ainsi que Kategorien.in
effaceancien_ini(GpathFR$,"ini", 0)
nouveaux_ini(GpathFR$+"Codes","pb", 0); ecriture dans fichier ini
DeleteFile(GpathFR$+"Einstellungen\Codes.ini")
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),"La traduction est terminée")


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Ven 24/Aoû/2012 11:15 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
Bonjour Kernadec
Voici le program avec tri alpha du fichier Kategorien.ini pour bénéficier d’une recherche plus facile
dans le treegadeget.
J’avais plusieurs méthodes pour réaliser cela
Et j’ai opté pour le tri fichier « sort » du MSDOS
Il demande moins de contrôle de lecture, tri en mémoire, écriture etc.. que le tri de tableau ou liste chainée.

Code:
;Conversion WIN_API Allemand en Français par PAPIPP
Enumeration
  #F_c_al_fr
  #F_P_al
  #F_p_fr
  #F_Code_al
  #F_Code_FR
  #F_Code_ALFR
  #F_list_F
  #F_non_al
EndEnumeration
Structure AL_fr
  ALrep$
  FRrep$
  FR$
EndStructure
Global NewMap M_Al.s{1}() ; 1=dossier ,2=fichier 3=mot
Global NewMap MAP_AL_FR.al_fr()
Global GpathAL$=""
Global GTRADUC=0
Global G_nom_W_mess.s="Aide du PRG"
Global NBSLAHD.l
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
I=0
While GpathAL$="" And i<4
  GpathAL$=PathRequester("Après MAJ du  PRG allemand Donnez le chemin des codes","L:\program files\")
  i+1
  If i>2
    MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de choix c'est fini")
    End
  EndIf
Wend
NBSLAHD=CountString(GpathAL$,"\")

Global GpathFR$=Left(GpathAL$,Len(GpathAL$)-1)+"_FR\"
Global Gpath_fil_fr.s
If FileSize(GpathFR$)=-2
  Select MessageRequester(" ATTENTION N°:"+Str(#PB_Compiler_Line) ,"Vous allez détruire tous LES fichiers de:"+GpathFR$,#PB_MessageRequester_YesNo)
    Case #PB_MessageRequester_Yes
      If DeleteDirectory(GpathFR$,"*.*",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible Détruire "+#CRLF$+GpathFR$)
      EndIf
    Case #PB_MessageRequester_No
      MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de destruction du répertoire FR:"+#CRLF$+GpathFR$+" alors c'est fini")
      End
  EndSelect
EndIf
If CopyDirectory(GpathAL$,GpathFR$,"",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
  ; #PB_FileSystem_Recursive: Copie d'un répertoire et de tous les sous-répertoires.
  ; #PB_FileSystem_Force    : Remplace également LES fichiers protégés (Lecture seule).
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de copier "+#CRLF$+GpathAL$+" dans "+GpathFR$)
  End
EndIf

Procedure analyse_fil(path_fil.s)
  Extens$ =UCase(GetExtensionPart(path_fil))
  nbslah.l=CountString(path_fil,"\")-NBSLAHD
  If CreateFile(#F_code_fr,Gpath_fil_fr)
    If ReadFile(#F_Code_al,path_fil)  ; Si le fichier peut être lu , on continue...
      While Eof(#F_Code_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
        lign_f.s=ReadString(#F_Code_al)      ; Affiche ligne par ligne le contenu du fichier
        lign_fa.s=lign_f
        If extens$="PB"
         
          nb_q=CountString(lign_f,Chr(34))
          pos_x=0
          imp_s.s=""
          ;***************  Recherche  des mots allemands ou autres dans le PRG  *********
          For i=1 To nb_q Step 2
            pos_x=FindString(lign_f,Chr(34),pos_x)
            pos_y=FindString(lign_f,Chr(34),pos_x+1)
            mot_al.s=Mid(lign_f,pos_x+1,pos_y-pos_x-1)
            If Len(mot_al)>4
              m_al(mot_al)="3"
             
              If GTRADUC>0
                If FindMapElement(map_al_fr(),mot_al)>0
                  If mot_al<>"Window" And mot_al<>"Button" ; Vous pouvez libérer cette ligne
                    lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
                  EndIf                                    ; Vous pouvez libérer cette ligne
                Else
                  ; message si le mot n'est pas trouvé certainement un bidouillage dans le fichier mot allemand ou le fichier de traduction
                EndIf
              EndIf
            EndIf
            pos_x=pos_y+1
          Next
        ElseIf extens$="INI" And NBSLAH=1 And GTRADUC>0
          ;              Debug _n(nbslah)+" "+Str(CountString(path_fil,"\"))+_n(NBSLAHD)
          mot_al.s=ReplaceString(lign_f,"."+Extens$,"")
          If FindMapElement(map_al_fr(),mot_al)>0
            lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
          Else
          EndIf
        EndIf
        If GTRADUC>0
          WriteStringN(#F_code_fr,lign_f)
        EndIf
       
      Wend
      CloseFile(#F_Code_al)               ; Ferme le fichier précédemment ouvert
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier!"+#CRLF$+path_fil)
      End
    EndIf
    CloseFile(#F_code_FR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+Gpath_fil_fr)
  EndIf
EndProcedure

Procedure rech_mots_AL(SOUS_repAL.s)
  flag_f=0
  pathAL.s=GpathAL$+SOUS_repAL
  ; ***** recherche des dossiers
  reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
  If reper
    While NextDirectoryEntry(reper)
      If DirectoryEntryType(reper)=#PB_DirectoryEntry_File
        ;         Type$="   [Fichier]="
        DIR_name.s=DirectoryEntryName(reper)
        fil_ac.s=pathAL+"\"+DIR_name
        fil_ac=ReplaceString(fil_ac,"\\","\")
       
        fil_name.s=ReplaceString(dir_name,".pb","",#PB_String_NoCase )
        fil_name.s=ReplaceString(fil_name,".ini","",#PB_String_NoCase )
       
        m_al(fil_name)="2"
        Gpath_fil_fr.s=ReplaceString(fil_ac,GpathAL$,GpathFR$)
        analyse_fil(fil_ac)
        If GTRADUC>0
          If FindMapElement(map_al_fr(),fil_name)>0
            Gpath_fil_frN.s=ReplaceString(gpath_fil_fr,fil_name,map_al_fr()\FR$)
            If RenameFile(Gpath_fil_fr,Gpath_fil_frN)
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de renommer fichier :"+#CRLF$+Gpath_fil_fr+" EN "+ Gpath_fil_frN)
            EndIf
          Else
            If fil_name<>"Kategorien"
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de trouver le mot allemand :"+#CRLF$+fil_name)
            EndIf
          EndIf
        EndIf
      Else
        DIR_NAME.s=DirectoryEntryName(reper)
        If dir_name<>"." And dir_name<>".."
          m_al(dir_name)="1"
          RECH_mots_AL(SOUS_repAL+DIR_NAME)
          If GTRADUC>0
            DIR_AL$=GpathFR$+SOUS_repal+dir_name
            If FindMapElement(map_al_fr(),dir_name)>0
              dir_fr$=GpathFR$+SOUS_repAL+map_al_fr()\FR$
              If RenameFile(DIR_AL$,DIR_FR$)
              Else
                MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de renommer répertoire :"+#CRLF$+DIR_AL$+" EN "+ DIR_FR$)
              EndIf
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de trouver le mot allemand :"+#CRLF$+dir_name)
            EndIf
          EndIf
        EndIf
      EndIf
    Wend
    FinishDirectory(reper)
  EndIf
 
EndProcedure

Procedure FUSION_2_FICHIERS(FICH_AL.s,FICH_FR.s,FICH_ALFR.s) ;=GpathAL$+"file_ALFR.txt")
  nb_e_al.l=0
  nb_e_fr.l=0
  If CreateFile(#F_Code_ALFR,GpathAL$+"file_ALFR.txt")         ; création d'un nouveau fichier texte...
   
    If ReadFile(#F_P_al,FICH_AL)
      If ReadFile(#F_P_fr,FICH_FR)
        While Eof(#F_P_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          l_al.s=ReadString(#F_P_al)      ; Affiche ligne par ligne le contenu du fichier
          nb_e_al+1
          If Eof(#F_P_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            l_FR.s=ReadString(#F_P_fr)      ; Affiche ligne par ligne le contenu du fichier
            nb_e_fr+1
            WriteStringN(#F_Code_ALFR,l_al+"||"+l_FR)
          EndIf
        Wend
        CloseFile(#F_P_al)               ; Ferme le fichier précédemment ouvert
        CloseFile(#F_P_fr)               ; Ferme le fichier précédemment ouvert
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_FR)
      EndIf
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_AL)
    EndIf
   
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier :"+GpathAL$+"file_ALFR.txt")
  EndIf
  CloseFile(#F_Code_ALFR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  If nb_e_al>nb_e_fr+1 And nb_e_al<>nb_e_fr
    message$="le fichier : "+FICH_AL+" à "+Str(nb_e_al)+#CRLF$+"le fichier : "+FICH_AL+" à "+Str(nb_e_fr)
    ;      message$+#CRLF$+l_al+#CRLF$+l_FR
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),message$)
  EndIf
EndProcedure
; *************** Lecture fichier de conversion **************"
Procedure LECT_CONV_AL_FR(FIL_CONV_AL_FR.s,Map DIC_AL_FR.al_FR())
  Static fl1.b=1
  If ReadFile(#F_c_al_fr,FIL_CONV_AL_FR)  ; Si le fichier peut être lu , on continue...
    While Eof(#F_c_al_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      TEXTE$=ReadString(#F_c_al_fr,#PB_Ascii)      ; Affiche ligne par ligne le contenu du fichier
      del.l=FindString(TEXTE$,"||",0)
      ;       TEXTAL$=Trim(Mid(texte$,0,del-1))
      ;       textFR$=Trim(Mid(texte$,del+2))
      TEXTAL$=Mid(texte$,0,del-1)
      textFR$=Mid(texte$,del+2)
     
      If fl1=1
        dossf$=TEXTFR$
        fl1=0
      EndIf
      doss$=TEXTAL$
      If AddMapElement(DIC_AL_FR.al_FR(),TEXTAL$)<>0
        DIC_AL_FR()\ALrep$=doss$
        DIC_AL_FR()\FRrep$=dossF$
        DIC_AL_FR()\FR$=textFR$
      Else
        MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de placer le mot allemand :"+#CRLF$+textal$)
      EndIf
      If Len(textal$)=0
        fl1=1
      EndIf
    Wend
    CloseFile(#F_c_al_fr)               ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+GpathAL$+FIL_CONV_AL_FR)
  EndIf
 
EndProcedure
Procedure.l FindTargetPIDByWindowName(Name.s,Opt.l=0)
  ;Opt option pour obtenir soit le PID soit Handle
  ;opt=O par defaut donne PID
  ;opt=1 donne le Handle
  ; Name est le nom window
 
  Define.l hWnd,Pid
  hWnd=FindWindow_(#Null,Name)
  If hWnd<>0
    GetWindowThreadProcessId_(hWnd,@Pid)
  EndIf
  If opt=0
    ProcedureReturn Pid
  Else
    ProcedureReturn hWnd
  EndIf
EndProcedure
Procedure AlertThread(Parameter)
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+"Les mots en allemand sont dans clipboard "
  message$+#CRLF$+"     mais aussi dans le fichier :"+GpathAL$+"file_Al.txt de Notepad"+#CRLF$
  message$+#CRLF$+"Collez les mots en allenand dans GOOGLE TRANSLATE en entrée de la traduction"
  message$+#CRLF$+"Convertissez  en une seule fois toute cette liste dans traduction Google translate"
  message$+#CRLF$+"Après traduction Sélectionnez tous les mots Français et seulement les mots français"
  message$+#CRLF$+"Ensuite copiez la partie traduite (clique droit de la souris puis copie) "
  message$+#CRLF$+"Ensuite Collez la partie traduite dans notepad fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"LES DEUX NOTEPAD PEUVENT ETRE L'UN SUR L'AUTRE,DEGAGER LES POUR ACCEDER AU FICHIER file_FR.txt"
  message$+#CRLF$+"Quittez Notepad en sauvegardant le fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"Quittez définitivement GOOGLE TRANSLATE La traduction est terminée"
  message$+#CRLF$+#CRLF$+"POUR CONTINUER LE PRG TAPER SUR OK MAIS NE LE FAITE QUE LORSQUE LE FICHIER DE MOTS FR EST SAUVE"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  MessageRequester(G_nom_W_mess,message$)
EndProcedure
Resultat.q=FileSize(GpathAL$+"file_ALFR.txt")
; Valeurs  pour 'Resultat':
; >-1 Taille du fichier
; -1: Fichier inexistant.
; -2: Le fichier est en fait un répertoire.

If resultat>1
  res_mes.l=MessageRequester("Choix","Voulez vous sautez la constitution des fichiers de traduction",#PB_MessageRequester_YesNoCancel)
  Select res_mes
    Case #PB_MessageRequester_Yes
      Goto DEBUT_TRAD
    Case #PB_MessageRequester_Cancel
      End
  EndSelect
EndIf
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************

GTRADUC=0
rech_mots_AL("Codes\")
If CreateFile(#F_list_F,GpathAL$+"file_Al.txt")
  txt_clip.s=""
 
  ForEach M_AL()
    WriteStringN(#F_list_F,MapKey(M_AL()))
    txt_clip+MapKey(M_AL())+#CRLF$
  Next
  CloseFile(#F_list_F) ; ferme le fichier précédemment ouvert et enregistre les donnée
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_Al.txt")
EndIf
SetClipboardText(txt_clip)
RunProgram("http://translate.google.com/translate_t","","",#PB_Program_Wait) ; Lance GOOGLE TRANLATE
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
; RunProgram("http://translate.google.com/translate_t",txt_clip,"")
ExamineDesktops()
HAUTEUR_W=DesktopHeight(0)
Largeur_W=DesktopWidth(0)

THR1=CreateThread(@AlertThread(),0)
Delay(100)
While HNDL=0 And cpt<100
  cpt+1
  HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
  Delay(50)
Wend

SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS

RUN_PRG_AL=RunProgram("notepad",GpathAL$+"file_al.txt","")
Delay(100)
cpt=0
While HNDL_BLOC=0 And cpt<100
  cpt+1
  HNDL_BLOC=FindTargetPIDByWindowName("file_al.txt - Bloc-notes",1)
  Delay(50)
Wend

Delay(100)
SetWindowPos_(HNDL_BLOC,#HWND_NOTOPMOST,0,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*******************************************************************************************************************
BOUCLE_NON_FIN0:
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  ;   WriteString(#F_Code_fr,GetClipboardText())
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
RUN_PRG_FR=RunProgram("notepad",GpathAL$+"file_FR.txt","")
Delay(100)
cpt=0
While HNDL_BLOCfr=0 And cpt<100
  cpt+1
  HNDL_BLOCfr=FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)
  Delay(50)
Wend
Delay(100)
SetWindowPos_(HNDL_BLOCfr,#HWND_NOTOPMOST,Largeur_w/3,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*************************************************************************************************************************
BOUCLE_NON_FIN:
While FindTargetPIDByWindowName(G_nom_W_mess,1)<>0
Wend

Resultat.q=FileSize(GpathAL$+"file_FR.txt")
If resultat=0
  MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Il n'y a rien dans le fichier:"+GpathAL$+"file_FR.txt")
  THR1=CreateThread(@AlertThread(),0)
  Delay(100)
  While HNDL=0 And cpt<100
    cpt+1
    HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
    Delay(50)
  Wend
  SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS
 
  If FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)=0
    Goto BOUCLE_NON_FIN0
  Else
    Goto BOUCLE_NON_FIN
  EndIf
EndIf
; If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
;   WriteString(#F_Code_fr,GetClipboardText())
;   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
; Else
;   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
; EndIf
fusion_2_FICHIERS(GpathAL$+"file_al.txt",GpathAL$+"file_FR.txt",GpathAL$+"file_ALFR.txt")

;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************

debut_trad: ; LABEL PERMETTANT DE SAUTER TOUTE LA PREPARATION DES FICHIERS DE TRADUCTION

GTRADUC=1
messag$="Dernière modification de la traduction avant application"+#CRLF$
messag$+#CRLF$+"Pour terminer la traduction il faut quitter notepad du fichier de traduction"
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messag$)
RunProgram("notepad",GpathAL$+"file_ALFR.txt","",#PB_Program_Wait)

Lect_conv_al_fr(GpathAL$+"file_ALFR.txt", MAP_AL_FR())
rech_mots_AL("Codes\") ;          traduction du répertoire codes
rech_mots_AL("Einstellungen\") ;  traduction du répertoire Einstellungen Ne pas modifier ce nom ainsi que Kategorien.ini

;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
params$=Chr(34)+GpathFR$+"Einstellungen\Kategorien.ini"+Chr(34)+" /O "+Chr(34)+GpathFR$+"Einstellungen\Kategorien.ini"+Chr(34)
prg=RunProgram("sort",params$,"",30); param #PB_Program_Hide=2 +PB_Program_Open=4 +#PB_Program_Read=8 #PB_Program_Write=16 = 30
If PRG
  While ProgramRunning(PRG)
    If AvailableProgramOutput(PRG)
      lgn$= ReadProgramString(PRG)
      Sortie$ + lgn$ + Chr(13)
    EndIf
  Wend
  Sortie$ + Chr(13) + Chr(13)
  CODERET=ProgramExitCode(PRG)
  Sortie$ + "Code de retour : " + Str(CODERET)
  CloseProgram(PRG) ; Ferme la connection vers le programme
EndIf
messagef$="   La traduction est terminée"+#CRLF$
If CODERET=0
  messagef$+"Le fichier Kategorien.ini est trié"+#CRLF$
  messagef$+"      TOUT EST OK"
Else
  messagef$+" Mais le fichier Kategorien.ini n'est pas trié"+#CRLF$
  messagef$+Sortie$
EndIf
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messagef$)


Voici mon répertoire traduit ici :http://dl.free.fr/iM7xVPNMr
nom : WinAPI_Library_AL_FR.rar
Il contient entre-autre le fichier WinAPI_libFR.exe en français
A+

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Ven 24/Aoû/2012 18:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 1276
bonsoir PAPIPP
magnifiqueeeee c'est nickel...
mais juste un ptit bémol c'est un peu plus long.......
je dois dire qu' avec mon code a l’arrache c'est plus rapide et tout est trié mrgreen: pas fait exprès. :wink: .

merci beaucoup PAPIPP .. c'est vraiment cool d'avoir pensé a un truc pareil..

Bonne Soirée
Cordialement

Ps : excuse moi, mais dans ton code les dossiers du treegadget sont bien triée,
mais cette fois ci pas les fichiers mince..
même en cliquant sur les icônes catégories pliées et dépliées


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Sam 25/Aoû/2012 16:29 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
Bonjour Kernadec
J’avais dans un premier temps bien analyser ton bout de code

Citation:
Comme je commençais a plus rien comprendre, j'ai écrit un bout de code
qui fonctionne très bien chez moi sur seven 32 et XP SP2
voilà le code, j'ai réécrit les fichiers ini tout simplement....
comme j'avais pas envie de reprendre tout ton raisonnement,*
j'ai pris un raccourcis


Mais j’avais pensé à un pis-aller.J’avais tort car ton dernier post m’a obligé à revoir une remarque au sujet des structures FAT et NTFS
En effet tes fichiers étaient parfaitement triés en ordre alpha alors qu’aucun ordre de tri n’avait été ordonné
Pourquoi ?
Lorsque l’on fait un DIR sans ordre de tri sur une structure de fichiers en NTFS les fichiers sortent toujours triés par ordre alpha par défaut. Ceci n’était pas le cas dans les structures de Fichiers en FAT
Exemple FAT brute sortie du DOS commande dir a: >c:\fichier_fat.txt
Sans l’option OemToChar_(@as$,@as$)

Citation:
Le volume dans le lecteur A s'appelle 890-1116-0B
Le num‚ro de s‚rie du volume est 4C66-9392

Ré‚pertoire de A:\

07/09/2002 01:00 353ÿ792 msinfo.dll
07/09/2002 01:00 40ÿ448 msinfo32.exe
27/06/2004 17:49 6ÿ672 Motion relative aux armes.htm
25/08/2003 22:38 29ÿ696 motdepasse.doc
25/08/2003 22:37 2ÿ324 motdepasse.txt
18/07/2004 11:56 8ÿ507 motsdepasse.doc
11/01/2005 15:52 <REP> Motion relative aux armes_fichiers
22/12/2004 13:05 572 100666.2347.iaf
22/12/2004 13:05 590 compuserve.iaf
22/01/2002 10:30 609 pop.compuserve.com.iaf
02/02/2002 11:38 534 pop0.compuserve.com.iaf
30/10/2003 14:00 860 pop.compuserve.com2.iaf
01/04/2004 23:31 558 pop.free.fr.iaf
22/12/2004 13:04 558 free.iaf
29/05/2006 10:42 181ÿ593 P060529A.zip
29/05/2006 13:00 181ÿ593 P060529D.zip
15 fichier(s) 808ÿ906 octets


Exemple NTFS du même disque A : mais sur c:\fat en NTFS commande dir c:\fat\ >Fichier_NTFS.txt
Sans l’option OemToChar_(@as$,@as$)

Citation:
Le volume dans le lecteur C s'appelle Disque local
Le num‚ro de s‚rie du volume est 84C2-15C4

Répertoire de c:\fat

25/08/2012 16:46 <REP> .
25/08/2012 16:46 <REP> ..
22/12/2004 13:05 572 100666.2347.iaf
22/12/2004 13:05 590 compuserve.iaf
22/12/2004 13:04 558 free.iaf
25/08/2003 22:38 29ÿ696 motdepasse.doc
25/08/2003 22:37 2ÿ324 motdepasse.txt
27/06/2004 17:49 6ÿ672 Motion relative aux armes.htm
25/08/2012 16:46 <REP> Motion relative aux armes_fichiers
18/07/2004 11:56 8ÿ507 motsdepasse.doc
07/09/2002 01:00 353ÿ792 msinfo.dll
07/09/2002 01:00 40ÿ448 msinfo32.exe
29/05/2006 10:42 181ÿ593 P060529A.zip
29/05/2006 13:00 181ÿ593 P060529D.zip
22/01/2002 10:30 609 pop.compuserve.com.iaf
30/10/2003 14:00 860 pop.compuserve.com2.iaf
01/04/2004 23:31 558 pop.free.fr.iaf
02/02/2002 11:38 534 pop0.compuserve.com.iaf
15 fichier(s) 808ÿ906 octets



Ce principe semble se propager aux instructions système de PB
Comme : reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
NextDirectoryEntry(reper)
DirectoryEntryType(reper)=#PB_DirectoryEntry_File
DirectoryEntryName(reper) etc..
Ainsi Il n’est pas nécessaire de trier puisque les fichiers et les répertoires arrivent dans l’ordre alpha

J’ai donc utilisé une de tes procédures.
Pour accélérer encore un peu plus la conversion dans une structure NTFS j’ai profité de la recherche des mots en allemand pour effacer les fichiers *.ini ce qui me fait gagner en temps
(non appel de la procédure effaceancien_ini(…)

Pour ceux qui ont encore des structure FAT je donne le PRG avec TRI
Pour tous les autres voici le PRG avec Modif de Kernadec il va un peu plus vite que le précédent
12119 millisecondes contre 15453 pour le TRI Je n'ai pris le temps que sur la partie différente des 2 PRG et pour ne pas avoir à décompter les temps de réaction de chaque opérateur.

Premier Prg le plus rapide mais le tri ne fonctionne que sur structure NTFS
Code:
;Conversion WIN_API Allemand en Français par PAPIPP
Enumeration
  #F_c_al_fr
  #F_P_al
  #F_p_fr
  #F_Code_al
  #F_Code_FR
  #F_Code_ALFR
  #F_list_F
  #F_non_al
EndEnumeration
Structure AL_fr
  ALrep$
  FRrep$
  FR$
EndStructure
Global NewMap M_Al.s{1}() ; 1=dossier ,2=fichier 3=mot
Global NewMap MAP_AL_FR.al_fr()
Global GpathAL$=""
Global GTRADUC=0
Global G_nom_W_mess.s="Aide du PRG"
Global GNBSLAHD.l
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
I=0
While GpathAL$="" And i<4
  GpathAL$=PathRequester("Après MAJ du  PRG allemand Donnez le chemin des codes","L:\program files\")
  i+1
  If i>2
    MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de choix c'est fini")
    End
  EndIf
Wend
GNBSLAHD=CountString(GpathAL$,"\")

Global GpathFR$=Left(GpathAL$,Len(GpathAL$)-1)+"_FR\"
Global Gpath_fil_fr.s
If FileSize(GpathFR$)=-2
  Select MessageRequester(" ATTENTION N°:"+Str(#PB_Compiler_Line) ,"Vous allez détruire tous LES fichiers de:"+GpathFR$,#PB_MessageRequester_YesNo)
    Case #PB_MessageRequester_Yes
      If DeleteDirectory(GpathFR$,"*.*",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible Détruire "+#CRLF$+GpathFR$)
      EndIf
    Case #PB_MessageRequester_No
      MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de destruction du répertoire FR:"+#CRLF$+GpathFR$+" alors c'est fini")
      End
  EndSelect
EndIf
If CopyDirectory(GpathAL$,GpathFR$,"",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
  ; #PB_FileSystem_Recursive: Copie d'un répertoire et de tous les sous-répertoires.
  ; #PB_FileSystem_Force    : Remplace également LES fichiers protégés (Lecture seule).
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de copier "+#CRLF$+GpathAL$+" dans "+GpathFR$)
  End
EndIf

Procedure nouveaux_ini(Dir$,Pattern$="*.*",Id=0)
Static Nom$ , Nfichier$
   If Right(Dir$,1)<>"\":Dir$+"\":EndIf
   If ExamineDirectory(Id,Dir$,"")
      While NextDirectoryEntry(Id)
         Nom$=DirectoryEntryName(Id)
         Type=DirectoryEntryType(Id)
         Select Type
            Case #PB_DirectoryEntry_File
               FullName$=Nom$
               If GetExtensionPart(FullName$)=Pattern$
                  If OpenFile(0,GpathFR$+"Einstellungen\"+Nfichier$)
                     FileSeek(0,Lof(0))
                     WriteStringN(0,Left(FullName$,Len(FullName$)-3))
                     CloseFile(0)
                  EndIf
               EndIf
   
               
            Case #PB_DirectoryEntry_Directory
               If Nom$<>"." And Nom$<>".."
                  FullName$=Dir$+Nom$
                  sname.s=Nom$
                  Nfichier$=Right(FullName$,FindString(ReverseString(FullName$),"\",1)-1)+".ini"

                  If OpenFile(0,GpathFR$+"Einstellungen\"+Nfichier$)
                     FileSeek(0,Lof(0))
                     CloseFile(0)
                  EndIf
                  If OpenFile(0,GpathFR$+"Einstellungen\"+"Kategorien.ini")
                     FileSeek(0,Lof(0))
                     WriteStringN(0,Left(Nfichier$,Len(Nfichier$)-4))
                     CloseFile(0)
                  EndIf
                  nouveaux_ini(FullName$,Pattern$,Id+1)
               EndIf
         EndSelect
      Wend
      FinishDirectory(Id)
      ProcedureReturn
   EndIf
EndProcedure


Procedure analyse_fil(path_fil.s)
  Extens$=UCase(GetExtensionPart(path_fil))
  nbslah.l=CountString(path_fil,"\")-GNBSLAHD
 
  If CreateFile(#F_code_fr,Gpath_fil_fr)
    If ReadFile(#F_Code_al,path_fil)  ; Si le fichier peut être lu , on continue...
      While Eof(#F_Code_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
        lign_f.s=ReadString(#F_Code_al)      ; Affiche ligne par ligne le contenu du fichier
        lign_fa.s=lign_f
        If extens$="PB"
         
          nb_q=CountString(lign_f,Chr(34))
          pos_x=0
          imp_s.s=""
          ;***************  Recherche  des mots allemands ou autres dans le PRG  *********
          For i=1 To nb_q Step 2
            pos_x=FindString(lign_f,Chr(34),pos_x)
            pos_y=FindString(lign_f,Chr(34),pos_x+1)
            mot_al.s=Mid(lign_f,pos_x+1,pos_y-pos_x-1)
            If Len(mot_al)>4
              m_al(mot_al)="3"
             
              If GTRADUC>0
                If FindMapElement(map_al_fr(),mot_al)>0
                  If mot_al<>"Window" And mot_al<>"Button" ; Vous pouvez libérer cette ligne
                    lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
                  EndIf                                    ; Vous pouvez libérer cette ligne
                Else
                  ; message si le mot n'est pas trouvé certainement un bidouillage dans le fichier mot allemand ou le fichier de traduction
                EndIf
              EndIf
            EndIf
            pos_x=pos_y+1
          Next
        ElseIf extens$="INI" And NBSLAH=1 And GTRADUC>0 And CountString(path_fil,"Einstellungen")>0
          ;**************************** ICI NORMALEMENT NOUS SOMMES DANS LE REPERTOIRE  Einstellungen  ******************
          ;**************************** On en profite pour vider les fichier ini de nom allemand        ******************
          lign_f=""
         
;           Else
;           EndIf
        EndIf
        If GTRADUC>0
          WriteStringN(#F_code_fr,lign_f)
        EndIf
       
      Wend
      CloseFile(#F_Code_al)               ; Ferme le fichier précédemment ouvert
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier!"+#CRLF$+path_fil)
      End
    EndIf
    CloseFile(#F_code_FR)                       ; ferme le fichier précédemment ouvert et enregistre les données
    If lign_f="" And extens$="INI" And NBSLAH=1 And GTRADUC>0
      res=DeleteFile(Gpath_fil_fr)
    EndIf 
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+Gpath_fil_fr)
  EndIf
EndProcedure

Procedure rech_mots_AL(SOUS_repAL.s)
  flag_f=0
  pathAL.s=GpathAL$+SOUS_repAL

  ; ***** recherche des dossiers
  reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
  If reper
    While NextDirectoryEntry(reper)
      If DirectoryEntryType(reper)=#PB_DirectoryEntry_File
        ;         Type$="   [Fichier]="
        DIR_name.s=DirectoryEntryName(reper)

        fil_ac.s=pathAL+"\"+DIR_name
        fil_ac=ReplaceString(fil_ac,"\\","\")
        nbslah.l=CountString(fil_ac,"\")-GNBSLAHD

        fil_name.s=ReplaceString(dir_name,".pb","",#PB_String_NoCase)
        fil_name.s=ReplaceString(fil_name,".ini","",#PB_String_NoCase)
       
        m_al(fil_name)="2"
        Gpath_fil_fr.s=ReplaceString(fil_ac,GpathAL$,GpathFR$)
        analyse_fil(fil_ac)
        If GTRADUC>0 And NBSLAH<>1 And CountString(dir_name,"Einstellungen\")<>1
          If FindMapElement(map_al_fr(),fil_name)>0
            Gpath_fil_frN.s=ReplaceString(gpath_fil_fr,fil_name,map_al_fr()\FR$)
            If RenameFile(Gpath_fil_fr,Gpath_fil_frN)
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de renommer fichier :"+#CRLF$+Gpath_fil_fr+" EN "+Gpath_fil_frN)
            EndIf
          Else
            If fil_name<>"Kategorien"
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de trouver le mot allemand :"+#CRLF$+fil_name)
            EndIf
          EndIf
        EndIf
      Else
        DIR_NAME.s=DirectoryEntryName(reper)
        If dir_name<>"." And dir_name<>".."
          m_al(dir_name)="1"
          RECH_mots_AL(SOUS_repAL+DIR_NAME)
          If GTRADUC>0
            DIR_AL$=GpathFR$+SOUS_repal+dir_name
            If FindMapElement(map_al_fr(),dir_name)>0
              dir_fr$=GpathFR$+SOUS_repAL+map_al_fr()\FR$
              If RenameFile(DIR_AL$,DIR_FR$)
              Else
                MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de renommer répertoire :"+#CRLF$+DIR_AL$+" EN "+DIR_FR$)
              EndIf
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de trouver le mot allemand :"+#CRLF$+dir_name)
            EndIf
          EndIf
        EndIf
      EndIf
    Wend
    FinishDirectory(reper)
  EndIf
 
EndProcedure

Procedure FUSION_2_FICHIERS(FICH_AL.s,FICH_FR.s,FICH_ALFR.s) ;=GpathAL$+"file_ALFR.txt")
  nb_e_al.l=0
  nb_e_fr.l=0
  If CreateFile(#F_Code_ALFR,GpathAL$+"file_ALFR.txt")         ; création d'un nouveau fichier texte...
   
    If ReadFile(#F_P_al,FICH_AL)
      If ReadFile(#F_P_fr,FICH_FR)
        While Eof(#F_P_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          l_al.s=ReadString(#F_P_al)      ; Affiche ligne par ligne le contenu du fichier
          nb_e_al+1
          If Eof(#F_P_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            l_FR.s=ReadString(#F_P_fr)      ; Affiche ligne par ligne le contenu du fichier
            nb_e_fr+1
            WriteStringN(#F_Code_ALFR,l_al+"||"+l_FR)
          EndIf
        Wend
        CloseFile(#F_P_al)               ; Ferme le fichier précédemment ouvert
        CloseFile(#F_P_fr)               ; Ferme le fichier précédemment ouvert
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_FR)
      EndIf
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_AL)
    EndIf
   
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier :"+GpathAL$+"file_ALFR.txt")
  EndIf
  CloseFile(#F_Code_ALFR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  If nb_e_al>nb_e_fr+1 And nb_e_al<>nb_e_fr
    message$="le fichier : "+FICH_AL+" à "+Str(nb_e_al)+#CRLF$+"le fichier : "+FICH_AL+" à "+Str(nb_e_fr)
    ;      message$+#CRLF$+l_al+#CRLF$+l_FR
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),message$)
  EndIf
EndProcedure
; *************** Lecture fichier de conversion **************"
Procedure LECT_CONV_AL_FR(FIL_CONV_AL_FR.s,Map DIC_AL_FR.al_FR())
  Static fl1.b=1
  If ReadFile(#F_c_al_fr,FIL_CONV_AL_FR)  ; Si le fichier peut être lu , on continue...
    While Eof(#F_c_al_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      TEXTE$=ReadString(#F_c_al_fr,#PB_Ascii)      ; Affiche ligne par ligne le contenu du fichier
      del.l=FindString(TEXTE$,"||",0)
      ;       TEXTAL$=Trim(Mid(texte$,0,del-1))
      ;       textFR$=Trim(Mid(texte$,del+2))
      TEXTAL$=Mid(texte$,0,del-1)
      textFR$=Mid(texte$,del+2)
     
      If fl1=1
        dossf$=TEXTFR$
        fl1=0
      EndIf
      doss$=TEXTAL$
      If AddMapElement(DIC_AL_FR.al_FR(),TEXTAL$)<>0
        DIC_AL_FR()\ALrep$=doss$
        DIC_AL_FR()\FRrep$=dossF$
        DIC_AL_FR()\FR$=textFR$
      Else
        MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de placer le mot allemand :"+#CRLF$+textal$)
      EndIf
      If Len(textal$)=0
        fl1=1
      EndIf
    Wend
    CloseFile(#F_c_al_fr)               ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+GpathAL$+FIL_CONV_AL_FR)
  EndIf
 
EndProcedure
Procedure.l FindTargetPIDByWindowName(Name.s,Opt.l=0)
  ;Opt option pour obtenir soit le PID soit Handle
  ;opt=O par defaut donne PID
  ;opt=1 donne le Handle
  ; Name est le nom window
 
  Define.l hWnd,Pid
  hWnd=FindWindow_(#Null,Name)
  If hWnd<>0
    GetWindowThreadProcessId_(hWnd,@Pid)
  EndIf
  If opt=0
    ProcedureReturn Pid
  Else
    ProcedureReturn hWnd
  EndIf
EndProcedure
Procedure AlertThread(Parameter)
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+"Les mots en allemand sont dans clipboard "
  message$+#CRLF$+"     mais aussi dans le fichier :"+GpathAL$+"file_Al.txt de Notepad"+#CRLF$
  message$+#CRLF$+"Collez les mots en allenand dans GOOGLE TRANSLATE en entrée de la traduction"
  message$+#CRLF$+"Convertissez  en une seule fois toute cette liste dans traduction Google translate"
  message$+#CRLF$+"Après traduction Sélectionnez tous les mots Français et seulement les mots français"
  message$+#CRLF$+"Ensuite copiez la partie traduite (clique droit de la souris puis copie) "
  message$+#CRLF$+"Ensuite Collez la partie traduite dans notepad fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"LES DEUX NOTEPAD PEUVENT ETRE L'UN SUR L'AUTRE,DEGAGER LES POUR ACCEDER AU FICHIER file_FR.txt"
  message$+#CRLF$+"Quittez Notepad en sauvegardant le fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"Quittez définitivement GOOGLE TRANSLATE La traduction est terminée"
  message$+#CRLF$+#CRLF$+"POUR CONTINUER LE PRG TAPER SUR OK MAIS NE LE FAITE QUE LORSQUE LE FICHIER DE MOTS FR EST SAUVE"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  MessageRequester(G_nom_W_mess,message$)
EndProcedure
Resultat.q=FileSize(GpathAL$+"file_ALFR.txt")
; Valeurs  pour 'Resultat':
; >-1 Taille du fichier
; -1: Fichier inexistant.
; -2: Le fichier est en fait un répertoire.

If resultat>1
  res_mes.l=MessageRequester("Choix","Voulez vous sautez la constitution des fichiers de traduction",#PB_MessageRequester_YesNoCancel)
  Select res_mes
    Case #PB_MessageRequester_Yes
      Goto DEBUT_TRAD
    Case #PB_MessageRequester_Cancel
      End
  EndSelect
EndIf
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************

GTRADUC=0
rech_mots_AL("Codes\")
If CreateFile(#F_list_F,GpathAL$+"file_Al.txt")
  txt_clip.s=""
 
  ForEach M_AL()
    WriteStringN(#F_list_F,MapKey(M_AL()))
    txt_clip+MapKey(M_AL())+#CRLF$
  Next
  CloseFile(#F_list_F) ; ferme le fichier précédemment ouvert et enregistre les donnée
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_Al.txt")
EndIf
SetClipboardText(txt_clip)
RunProgram("http://translate.google.com/translate_t","","",#PB_Program_Wait) ; Lance GOOGLE TRANLATE
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
; RunProgram("http://translate.google.com/translate_t",txt_clip,"")
ExamineDesktops()
HAUTEUR_W=DesktopHeight(0)
Largeur_W=DesktopWidth(0)

THR1=CreateThread(@AlertThread(),0)
Delay(100)
While HNDL=0 And cpt<100
  cpt+1
  HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
  Delay(50)
Wend

SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS

RUN_PRG_AL=RunProgram("notepad",GpathAL$+"file_al.txt","")
Delay(100)
cpt=0
While HNDL_BLOC=0 And cpt<100
  cpt+1
  HNDL_BLOC=FindTargetPIDByWindowName("file_al.txt - Bloc-notes",1)
  Delay(50)
Wend

Delay(100)
SetWindowPos_(HNDL_BLOC,#HWND_NOTOPMOST,0,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*******************************************************************************************************************
BOUCLE_NON_FIN0:
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  ;   WriteString(#F_Code_fr,GetClipboardText())
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
RUN_PRG_FR=RunProgram("notepad",GpathAL$+"file_FR.txt","")
Delay(100)
cpt=0
While HNDL_BLOCfr=0 And cpt<100
  cpt+1
  HNDL_BLOCfr=FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)
  Delay(50)
Wend
Delay(100)
SetWindowPos_(HNDL_BLOCfr,#HWND_NOTOPMOST,Largeur_w/3,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*************************************************************************************************************************
BOUCLE_NON_FIN:
While FindTargetPIDByWindowName(G_nom_W_mess,1)<>0
Wend

Resultat.q=FileSize(GpathAL$+"file_FR.txt")
If resultat=0
  MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Il n'y a rien dans le fichier:"+GpathAL$+"file_FR.txt")
  THR1=CreateThread(@AlertThread(),0)
  Delay(100)
  While HNDL=0 And cpt<100
    cpt+1
    HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
    Delay(50)
  Wend
  SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS
 
  If FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)=0
    Goto BOUCLE_NON_FIN0
  Else
    Goto BOUCLE_NON_FIN
  EndIf
EndIf
; If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
;   WriteString(#F_Code_fr,GetClipboardText())
;   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
; Else
;   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
; EndIf
fusion_2_FICHIERS(GpathAL$+"file_al.txt",GpathAL$+"file_FR.txt",GpathAL$+"file_ALFR.txt")

;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************

debut_trad: ; LABEL PERMETTANT DE SAUTER TOUTE LA PREPARATION DES FICHIERS DE TRADUCTION

GTRADUC=1
messag$="Dernière modification de la traduction avant application"+#CRLF$
messag$+#CRLF$+"Pour terminer la traduction il faut quitter notepad du fichier de traduction"
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messag$)
RunProgram("notepad",GpathAL$+"file_ALFR.txt","",#PB_Program_Wait)

Lect_conv_al_fr(GpathAL$+"file_ALFR.txt",MAP_AL_FR())
rech_mots_AL("Codes\") ;          traduction du répertoire codes
;**********************************  Mesure du temps d'exécution ***************************
TD1.Q=ElapsedMilliseconds()
rech_mots_AL("Einstellungen\") ;  traduction du répertoire Einstellungen Ne pas modifier ce nom ainsi que Kategorien.ini
nouveaux_ini(GpathFR$+"Codes","pb",0); ecriture dans fichier ini
DeleteFile(GpathFR$+"Einstellungen\Codes.ini")
TD2=ElapsedMilliseconds()-TD1
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),"La traduction est terminée "+#CRLF$+"  En :"+Str(TD2)+" millisecondes ")


Deuxième PRG un peu plus lent mais le tri fonctionne sur toute les structures de FICHIER

Code:
;Conversion WIN_API Allemand en Français par PAPIPP
Enumeration
  #F_c_al_fr
  #F_P_al
  #F_p_fr
  #F_Code_al
  #F_Code_FR
  #F_Code_ALFR
  #F_list_F
  #F_non_al
EndEnumeration
Structure AL_fr
  ALrep$
  FRrep$
  FR$
EndStructure
Global NewMap M_Al.s{1}() ; 1=dossier ,2=fichier 3=mot
Global NewMap MAP_AL_FR.al_fr()
Global GpathAL$=""
Global GTRADUC=0
Global G_nom_W_mess.s="Aide du PRG"
Global NBSLAHD.l
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
;****************************************** Préalable à la traduction ************************************
I=0
While GpathAL$="" And i<4
  GpathAL$=PathRequester("Après MAJ du  PRG allemand Donnez le chemin des codes","L:\program files\")
  i+1
  If i>2
    MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de choix c'est fini")
    End
  EndIf
Wend
NBSLAHD=CountString(GpathAL$,"\")

Global GpathFR$=Left(GpathAL$,Len(GpathAL$)-1)+"_FR\"
Global Gpath_fil_fr.s
If FileSize(GpathFR$)=-2
  Select MessageRequester(" ATTENTION N°:"+Str(#PB_Compiler_Line) ,"Vous allez détruire tous LES fichiers de:"+GpathFR$,#PB_MessageRequester_YesNo)
    Case #PB_MessageRequester_Yes
      If DeleteDirectory(GpathFR$,"*.*",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible Détruire "+#CRLF$+GpathFR$)
      EndIf
    Case #PB_MessageRequester_No
      MessageRequester("Attention N°:"+Str(#PB_Compiler_Line),"Pas de destruction du répertoire FR:"+#CRLF$+GpathFR$+" alors c'est fini")
      End
  EndSelect
EndIf
If CopyDirectory(GpathAL$,GpathFR$,"",#PB_FileSystem_Recursive | #PB_FileSystem_Force)
  ; #PB_FileSystem_Recursive: Copie d'un répertoire et de tous les sous-répertoires.
  ; #PB_FileSystem_Force    : Remplace également LES fichiers protégés (Lecture seule).
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de copier "+#CRLF$+GpathAL$+" dans "+GpathFR$)
  End
EndIf
Procedure TRI_ini(Dir$,Pattern$="*.*",Id=0)  ; efface les anciens fichiers ini
   Protected nom$
   Dir$+"Einstellungen\"
   If Right(Dir$,1)<>"\":Dir$+"\":EndIf
   If ExamineDirectory(Id,Dir$,"")
      While NextDirectoryEntry(Id)
         Nom$=DirectoryEntryName(Id)
         Type=DirectoryEntryType(Id)
         Select Type
            Case #PB_DirectoryEntry_Directory
               If Nom$<>"." And Nom$<>".."
                  FullName$=Dir$+Nom$
;                   DeleteFile(FullName$+".ini")
             params$=Chr(34)+Dir$+nom$+".ini"+Chr(34)+" /O "+Chr(34)+Dir$+nom$+".ini"+Chr(34)
             prg=RunProgram("sort",params$,"",30); param #PB_Program_Hide=2 +PB_Program_Open=4 +#PB_Program_Read=8 +#PB_Program_Write=16
                If PRG
                  While ProgramRunning(PRG)
                    If AvailableProgramOutput(PRG)
                      lgn$= ReadProgramString(PRG)
                      Sortie$ + lgn$ + Chr(13)
                    EndIf
                  Wend
                  Sortie$ + Chr(13) + Chr(13)
                  CODERET=ProgramExitCode(PRG)
                  Sortie$ + "Code de retour : " + Str(CODERET)
                  CloseProgram(PRG) ; Ferme la connection vers le programme
                EndIf
               EndIf
         EndSelect
      Wend
      FinishDirectory(Id)
      ProcedureReturn
   EndIf
EndProcedure

Procedure analyse_fil(path_fil.s)
  Extens$ =UCase(GetExtensionPart(path_fil))
  nbslah.l=CountString(path_fil,"\")-NBSLAHD
  If CreateFile(#F_code_fr,Gpath_fil_fr)
    If ReadFile(#F_Code_al,path_fil)  ; Si le fichier peut être lu , on continue...
      While Eof(#F_Code_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
        lign_f.s=ReadString(#F_Code_al)      ; Affiche ligne par ligne le contenu du fichier
        lign_fa.s=lign_f
        If extens$="PB"
         
          nb_q=CountString(lign_f,Chr(34))
          pos_x=0
          imp_s.s=""
          ;***************  Recherche  des mots allemands ou autres dans le PRG  *********
          For i=1 To nb_q Step 2
            pos_x=FindString(lign_f,Chr(34),pos_x)
            pos_y=FindString(lign_f,Chr(34),pos_x+1)
            mot_al.s=Mid(lign_f,pos_x+1,pos_y-pos_x-1)
            If Len(mot_al)>4
              m_al(mot_al)="3"
             
              If GTRADUC>0
                If FindMapElement(map_al_fr(),mot_al)>0
                  If mot_al<>"Window" And mot_al<>"Button" ; Vous pouvez libérer cette ligne
                    lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
                  EndIf                                    ; Vous pouvez libérer cette ligne
                Else
                  ; message si le mot n'est pas trouvé certainement un bidouillage dans le fichier mot allemand ou le fichier de traduction
                EndIf
              EndIf
            EndIf
            pos_x=pos_y+1
          Next
        ElseIf extens$="INI" And NBSLAH=1 And GTRADUC>0
          ;              Debug _n(nbslah)+" "+Str(CountString(path_fil,"\"))+_n(NBSLAHD)
          mot_al.s=ReplaceString(lign_f,"."+Extens$,"")
          If FindMapElement(map_al_fr(),mot_al)>0
            lign_f=ReplaceString(lign_f,mot_al,map_al_fr()\FR$)
          Else
          EndIf
        EndIf
        If GTRADUC>0
          WriteStringN(#F_code_fr,lign_f)
        EndIf
       
      Wend
      CloseFile(#F_Code_al)               ; Ferme le fichier précédemment ouvert
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier!"+#CRLF$+path_fil)
      End
    EndIf
    CloseFile(#F_code_FR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+Gpath_fil_fr)
  EndIf
EndProcedure

Procedure rech_mots_AL(SOUS_repAL.s)
  flag_f=0
  pathAL.s=GpathAL$+SOUS_repAL
  ; ***** recherche des dossiers
  reper.l=ExamineDirectory(#PB_Any,pathAl,"*.*")
  If reper
    While NextDirectoryEntry(reper)
      If DirectoryEntryType(reper)=#PB_DirectoryEntry_File
        ;         Type$="   [Fichier]="
        DIR_name.s=DirectoryEntryName(reper)
        fil_ac.s=pathAL+"\"+DIR_name
        fil_ac=ReplaceString(fil_ac,"\\","\")
       
        fil_name.s=ReplaceString(dir_name,".pb","",#PB_String_NoCase )
        fil_name.s=ReplaceString(fil_name,".ini","",#PB_String_NoCase )
       
        m_al(fil_name)="2"
        Gpath_fil_fr.s=ReplaceString(fil_ac,GpathAL$,GpathFR$)
        analyse_fil(fil_ac)
        If GTRADUC>0
          If FindMapElement(map_al_fr(),fil_name)>0
            Gpath_fil_frN.s=ReplaceString(gpath_fil_fr,fil_name,map_al_fr()\FR$)
            If RenameFile(Gpath_fil_fr,Gpath_fil_frN)
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de renommer fichier :"+#CRLF$+Gpath_fil_fr+" EN "+ Gpath_fil_frN)
            EndIf
          Else
            If fil_name<>"Kategorien"
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossibel de trouver le mot allemand :"+#CRLF$+fil_name)
            EndIf
          EndIf
        EndIf
      Else
        DIR_NAME.s=DirectoryEntryName(reper)
        If dir_name<>"." And dir_name<>".."
          m_al(dir_name)="1"
          RECH_mots_AL(SOUS_repAL+DIR_NAME)
          If GTRADUC>0
            DIR_AL$=GpathFR$+SOUS_repal+dir_name
            If FindMapElement(map_al_fr(),dir_name)>0
              dir_fr$=GpathFR$+SOUS_repAL+map_al_fr()\FR$
              If RenameFile(DIR_AL$,DIR_FR$)
              Else
                MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de renommer répertoire :"+#CRLF$+DIR_AL$+" EN "+ DIR_FR$)
              EndIf
            Else
              MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de trouver le mot allemand :"+#CRLF$+dir_name)
            EndIf
          EndIf
        EndIf
      EndIf
    Wend
    FinishDirectory(reper)
  EndIf
 
EndProcedure

Procedure FUSION_2_FICHIERS(FICH_AL.s,FICH_FR.s,FICH_ALFR.s) ;=GpathAL$+"file_ALFR.txt")
  nb_e_al.l=0
  nb_e_fr.l=0
  If CreateFile(#F_Code_ALFR,GpathAL$+"file_ALFR.txt")         ; création d'un nouveau fichier texte...
   
    If ReadFile(#F_P_al,FICH_AL)
      If ReadFile(#F_P_fr,FICH_FR)
        While Eof(#F_P_al)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
          l_al.s=ReadString(#F_P_al)      ; Affiche ligne par ligne le contenu du fichier
          nb_e_al+1
          If Eof(#F_P_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
            l_FR.s=ReadString(#F_P_fr)      ; Affiche ligne par ligne le contenu du fichier
            nb_e_fr+1
            WriteStringN(#F_Code_ALFR,l_al+"||"+l_FR)
          EndIf
        Wend
        CloseFile(#F_P_al)               ; Ferme le fichier précédemment ouvert
        CloseFile(#F_P_fr)               ; Ferme le fichier précédemment ouvert
      Else
        MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_FR)
      EndIf
    Else
      MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+FICH_AL)
    EndIf
   
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier :"+GpathAL$+"file_ALFR.txt")
  EndIf
  CloseFile(#F_Code_ALFR)                       ; ferme le fichier précédemment ouvert et enregistre les données
  If nb_e_al>nb_e_fr+1 And nb_e_al<>nb_e_fr
    message$="le fichier : "+FICH_AL+" à "+Str(nb_e_al)+#CRLF$+"le fichier : "+FICH_AL+" à "+Str(nb_e_fr)
    ;      message$+#CRLF$+l_al+#CRLF$+l_FR
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),message$)
  EndIf
EndProcedure
; *************** Lecture fichier de conversion **************"
Procedure LECT_CONV_AL_FR(FIL_CONV_AL_FR.s,Map DIC_AL_FR.al_FR())
  Static fl1.b=1
  If ReadFile(#F_c_al_fr,FIL_CONV_AL_FR)  ; Si le fichier peut être lu , on continue...
    While Eof(#F_c_al_fr)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
      TEXTE$=ReadString(#F_c_al_fr,#PB_Ascii)      ; Affiche ligne par ligne le contenu du fichier
      del.l=FindString(TEXTE$,"||",0)
      ;       TEXTAL$=Trim(Mid(texte$,0,del-1))
      ;       textFR$=Trim(Mid(texte$,del+2))
      TEXTAL$=Mid(texte$,0,del-1)
      textFR$=Mid(texte$,del+2)
     
      If fl1=1
        dossf$=TEXTFR$
        fl1=0
      EndIf
      doss$=TEXTAL$
      If AddMapElement(DIC_AL_FR.al_FR(),TEXTAL$)<>0
        DIC_AL_FR()\ALrep$=doss$
        DIC_AL_FR()\FRrep$=dossF$
        DIC_AL_FR()\FR$=textFR$
      Else
        MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Impossible de placer le mot allemand :"+#CRLF$+textal$)
      EndIf
      If Len(textal$)=0
        fl1=1
      EndIf
    Wend
    CloseFile(#F_c_al_fr)               ; Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible d'ouvrir le fichier :"+#CRLF$+GpathAL$+FIL_CONV_AL_FR)
  EndIf
 
EndProcedure
Procedure.l FindTargetPIDByWindowName(Name.s,Opt.l=0)
  ;Opt option pour obtenir soit le PID soit Handle
  ;opt=O par defaut donne PID
  ;opt=1 donne le Handle
  ; Name est le nom window
 
  Define.l hWnd,Pid
  hWnd=FindWindow_(#Null,Name)
  If hWnd<>0
    GetWindowThreadProcessId_(hWnd,@Pid)
  EndIf
  If opt=0
    ProcedureReturn Pid
  Else
    ProcedureReturn hWnd
  EndIf
EndProcedure
Procedure AlertThread(Parameter)
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  message$+#CRLF$+#CRLF$+"Les mots en allemand sont dans clipboard "
  message$+#CRLF$+"     mais aussi dans le fichier :"+GpathAL$+"file_Al.txt de Notepad"+#CRLF$
  message$+#CRLF$+"Collez les mots en allenand dans GOOGLE TRANSLATE en entrée de la traduction"
  message$+#CRLF$+"Convertissez  en une seule fois toute cette liste dans traduction Google translate"
  message$+#CRLF$+"Après traduction Sélectionnez tous les mots Français et seulement les mots français"
  message$+#CRLF$+"Ensuite copiez la partie traduite (clique droit de la souris puis copie) "
  message$+#CRLF$+"Ensuite Collez la partie traduite dans notepad fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"LES DEUX NOTEPAD PEUVENT ETRE L'UN SUR L'AUTRE,DEGAGER LES POUR ACCEDER AU FICHIER file_FR.txt"
  message$+#CRLF$+"Quittez Notepad en sauvegardant le fichier : "+GpathAL$+"file_FR.txt"
  message$+#CRLF$+"Quittez définitivement GOOGLE TRANSLATE La traduction est terminée"
  message$+#CRLF$+#CRLF$+"POUR CONTINUER LE PRG TAPER SUR OK MAIS NE LE FAITE QUE LORSQUE LE FICHIER DE MOTS FR EST SAUVE"
  message$+#CRLF$+#CRLF$+" ATTENDEZ QUELQUES INSTANTS DE VOIR GOOGLE TRANSLATE MERCI"
  MessageRequester(G_nom_W_mess,message$)
EndProcedure
Resultat.q=FileSize(GpathAL$+"file_ALFR.txt")
; Valeurs  pour 'Resultat':
; >-1 Taille du fichier
; -1: Fichier inexistant.
; -2: Le fichier est en fait un répertoire.

If resultat>1
  res_mes.l=MessageRequester("Choix","Voulez vous sautez la constitution des fichiers de traduction",#PB_MessageRequester_YesNoCancel)
  Select res_mes
    Case #PB_MessageRequester_Yes
      Goto DEBUT_TRAD
    Case #PB_MessageRequester_Cancel
      End
  EndSelect
EndIf
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************
;******************************  Constitution du fichier de traduction *************************************

GTRADUC=0
rech_mots_AL("Codes\")
If CreateFile(#F_list_F,GpathAL$+"file_Al.txt")
  txt_clip.s=""
 
  ForEach M_AL()
    WriteStringN(#F_list_F,MapKey(M_AL()))
    txt_clip+MapKey(M_AL())+#CRLF$
  Next
  CloseFile(#F_list_F) ; ferme le fichier précédemment ouvert et enregistre les donnée
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_Al.txt")
EndIf
SetClipboardText(txt_clip)
RunProgram("http://translate.google.com/translate_t","","",#PB_Program_Wait) ; Lance GOOGLE TRANLATE
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
; RunProgram("http://translate.google.com/translate_t",txt_clip,"")
ExamineDesktops()
HAUTEUR_W=DesktopHeight(0)
Largeur_W=DesktopWidth(0)

THR1=CreateThread(@AlertThread(),0)
Delay(100)
While HNDL=0 And cpt<100
  cpt+1
  HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
  Delay(50)
Wend

SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS

RUN_PRG_AL=RunProgram("notepad",GpathAL$+"file_al.txt","")
Delay(100)
cpt=0
While HNDL_BLOC=0 And cpt<100
  cpt+1
  HNDL_BLOC=FindTargetPIDByWindowName("file_al.txt - Bloc-notes",1)
  Delay(50)
Wend

Delay(100)
SetWindowPos_(HNDL_BLOC,#HWND_NOTOPMOST,0,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*******************************************************************************************************************
BOUCLE_NON_FIN0:
If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
  ;   WriteString(#F_Code_fr,GetClipboardText())
  CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
Else
  MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
EndIf
RUN_PRG_FR=RunProgram("notepad",GpathAL$+"file_FR.txt","")
Delay(100)
cpt=0
While HNDL_BLOCfr=0 And cpt<100
  cpt+1
  HNDL_BLOCfr=FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)
  Delay(50)
Wend
Delay(100)
SetWindowPos_(HNDL_BLOCfr,#HWND_NOTOPMOST,Largeur_w/3,0,Largeur_w/3,HAUTEUR_W,0) ;:
;*************************************************************************************************************************
BOUCLE_NON_FIN:
While FindTargetPIDByWindowName(G_nom_W_mess,1)<>0
Wend

Resultat.q=FileSize(GpathAL$+"file_FR.txt")
If resultat=0
  MessageRequester("ATTENTION N°:"+Str(#PB_Compiler_Line),"Il n'y a rien dans le fichier:"+GpathAL$+"file_FR.txt")
  THR1=CreateThread(@AlertThread(),0)
  Delay(100)
  While HNDL=0 And cpt<100
    cpt+1
    HNDL=FindTargetPIDByWindowName(G_nom_W_mess,1)
    Delay(50)
  Wend
  SetWindowPos_(HNDL,#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE | #SWP_NOSIZE) ; FENETRE TOUJOURS AU-DESSUS
 
  If FindTargetPIDByWindowName("file_FR.txt - Bloc-notes",1)=0
    Goto BOUCLE_NON_FIN0
  Else
    Goto BOUCLE_NON_FIN
  EndIf
EndIf
; If CreateFile(#F_Code_fr,GpathAL$+"file_FR.txt")         ; création d'un nouveau fichier texte...
;   WriteString(#F_Code_fr,GetClipboardText())
;   CloseFile(#F_Code_fr)                       ; ferme le fichier précédemment ouvert et enregistre les données
; Else
;   MessageRequester("Information N°:"+Str(#PB_Compiler_Line),"Impossible de créer le fichier:"+GpathAL$+"file_FR.txt")
; EndIf
fusion_2_FICHIERS(GpathAL$+"file_al.txt",GpathAL$+"file_FR.txt",GpathAL$+"file_ALFR.txt")

;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************
;*******************************  TRADUCTION ***********************************

debut_trad: ; LABEL PERMETTANT DE SAUTER TOUTE LA PREPARATION DES FICHIERS DE TRADUCTION

GTRADUC=1
messag$="Dernière modification de la traduction avant application"+#CRLF$
messag$+#CRLF$+"Pour terminer la traduction il faut quitter notepad du fichier de traduction"
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messag$)
RunProgram("notepad",GpathAL$+"file_ALFR.txt","",#PB_Program_Wait)

Lect_conv_al_fr(GpathAL$+"file_ALFR.txt",MAP_AL_FR())
rech_mots_AL("Codes\") ;          traduction du répertoire codes
;**********************************  Mesure du temps d'exécution ***************************
TD1.Q=ElapsedMilliseconds()
rech_mots_AL("Einstellungen\") ;  traduction du répertoire Einstellungen Ne pas modifier ce nom ainsi que Kategorien.ini

;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
;*********************************  TRI DU fichier Kategorien.ini du répertoire  Einstellungen  ****************************
TRI_ini(GpathFR$,"ini",0)

params$=Chr(34)+GpathFR$+"Einstellungen\Kategorien.ini"+Chr(34)+" /O "+Chr(34)+GpathFR$+"Einstellungen\Kategorien.ini"+Chr(34)
prg=RunProgram("sort",params$,"",30); param #PB_Program_Hide=2 +PB_Program_Open=4 +#PB_Program_Read=8 +#PB_Program_Write=16
If PRG
  While ProgramRunning(PRG)
    If AvailableProgramOutput(PRG)
      lgn$=ReadProgramString(PRG)
      Sortie$+lgn$+Chr(13)
    EndIf
  Wend
  Sortie$+Chr(13)+Chr(13)
  CODERET=ProgramExitCode(PRG)
  Sortie$+"Code de retour : "+Str(CODERET)
  CloseProgram(PRG) ; Ferme la connection vers le programme
EndIf
messagef$="   La traduction est terminée"+#CRLF$
If CODERET=0
  TD2=ElapsedMilliseconds()-TD1
  messagef$+"Le fichier Kategorien.ini est trié"+#CRLF$
  messagef$+"      TOUT EST OK"+#CRLF$
  messagef$+"La traduction est terminée "+#CRLF$+"  En :"+Str(TD2)+" millisecondes "
Else
  messagef$+" Mais le fichier Kategorien.ini n'est pas trié"+#CRLF$
  messagef$+Sortie$
EndIf
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),messagef$)



A+ et merci

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Dernière édition par PAPIPP le Sam 25/Aoû/2012 23:31, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Dim 02/Sep/2012 16:01 
Hors ligne

Inscription: Sam 23/Fév/2008 17:58
Messages: 533
Bonjour à tous.

Toujours préoccupé par les problèmes de traduction, j’ai placé ici, cette information sur la possibilité de télécharger 196 dictionnaires de toute langue vers le français. Et de plus de 250 dictionnaires de toute langue vers l’anglais.
Si un modérateur trouve que cette information n'est pas à sa place ici il peut la déplacer à son gré,

Le site http://www.freelang.com

Vous pouvez installer le prg pour tester comment il fonctionne.et installer aussi un ou plusieurs dictionnaires. Chaque fois que vous installez un dictionnaire le prg d’installation crée 2 dictionnaires.
L’un de la langue d’origine vers la langue cible et réciproquement pour l'autre. Les 2 dictionnaires n’ont pas toujours le même nombre de mots (pour une même entité les mots peuvent être plus riches dans une langue que dans l’autre)

Mais le plus intéressant c’est de pouvoir exploiter ces dictionnaires qui pour certains font plus de 4 mo et comportent plus 50000 mots mais dont la structure est assez simple. Ils se trouvent dans le répertoire ..\Dictionnaire Freelang\langue\*.wb

A titre d’exemple voici un PRG de lecture de ces dictionnaires qui donne les termes principaux de la première langue et les termes principaux de la traduction dans la deuxième langue mot pour mot.

Code:
Structure Term_et_fr  ;structure utilisée pour explorer les  fichiers dictionnaires de FREELANG chaine par chaine
  TERM_ET.s{$1F}
  TERM_FR.s{$35}
EndStructure
Structure EL ; structure utilisée pour explorer les  fichiers dictionnaires de FREELANG octet par octet
  StructureUnion
    Array B.b($54)
    Array C.c($54)
    Array A.a($54)
    Array O.s{1}($54)
  EndStructureUnion
EndStructure
Define buff.el, *trm.term_et_fr
*Trm=@buff\A(0)
cpt=0
Filtre$ = "Dico (*.wb)|*.wb|Tous (*.*)|*.*"
NAMEF$=OpenFileRequester("Choisissez un dictionnaire", "", Filtre$, 0)
If OpenFile(0,NAMEF$)  ; Si le fichier peut être lu , on continue...
  While Eof(0)=0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
    cpt+1
    noct=ReadData(0,*trm,$54)   ; Affiche 84 octets / 84 octets  du buffer de fichier
Debug *TRM\TERM_ET+"||"+*trm\TERM_FR+"    **NBoctets ="+Str(noct)+" N° du mot ="+Str(cpt)
  Wend
  CloseFile(0)               ; Ferme le fichier précédemment ouvert
Else
  MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
End


A+

_________________
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Sam 02/Fév/2013 17:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 1868
salut

Il faut éviter de poster sur free, car les fichiers finissent par disparaitre ;)

Il vaut mieux utiliser host-e.net ou autre chose.

Les fichiers sur free n'existent plus, serait-il possible de les re-poster ailleurs ?

_________________
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: WIN API List - FR - +500 codes sur les API
MessagePosté: Jeu 11/Juil/2013 10:17 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 872
Il y a une mise à jour avec 27 nouveaux codes.

http://www.purebasic.fr/german/viewtopi ... &start=340

Personnellement, je n'arrive pas à télécharger la version WinAPI Library 1.3.1 et vous ?

Mesa.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 79 messages ]  Aller à la page Précédente  1, 2, 3, 4, 5, 6  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye