1) Rechercher tous les expressions allemandes et les traduire avec Google translate
2)Traduire les textes et renommer les fichiers et les répertoires avec les mots ou expressions françaises avec l’aide de Google Translate
L’automatisation n’est pas complète car l’introduction des expressions allemandes et l’extraction des expressions françaises dans Google translate se font à la main en copier coller
Elle peut être sautée si le fichier de traduction est OK ou modifiée manuellement.
Vous pourrez ensuite utiliser le Prg de Kernadec sur le répertoire Codes traduit en français
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 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")