J’ai terminé la traduction semi-automatique.
Pour les détails voyez le premier post.
Avec cette traduction le PRG WinAPI_Library.exe fonctionne parfaitement.
Toutefois les commandes de ce PRG sont en allemand.
Pour les remarques j’ai essayé d’en tenir compte.
Quant à la traduction il peut y avoir des différences si on laisse le traducteur Google translate
détecter automatiquement la langue. J’ai donc forcé Allemand comme langue en entrée dans le traducteur Google translate.
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"
;****************************************** 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
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,"\")
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=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
MessageRequester(" Fin de PRG N°:"+Str(#PB_Compiler_Line),"Dernière modification de la traduction avant application")
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
ainsi que le nom du fichier Kategorien.ini.