Bonjour Kernadec
J’avais dans un premier temps bien analyser ton bout de code
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$)
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$)
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 : Tout sélectionner
;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 : Tout sélectionner
;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