WIN API List - FR - +500 codes sur les API

Sujets variés concernant le développement en PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: WIN API List - FR - +500 codes sur les API

Message par Backup »

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: )
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Re: WIN API List - FR - +500 codes sur les API

Message par Torp »

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.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: WIN API List - FR - +500 codes sur les API

Message par Ar-S »

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 ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

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.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: WIN API List - FR - +500 codes sur les API

Message par kernadec »

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
Avatar de l’utilisateur
RSBasic
Messages : 16
Inscription : mar. 21/août/2012 21:22
Localisation : Gernsbach (Germany)
Contact :

Re: WIN API List - FR - +500 codes sur les API

Message par RSBasic »

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.
ImageImageImageImageImage
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

@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 : 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")
A+
Dernière modification par PAPIPP le jeu. 23/août/2012 8:03, modifié 2 fois.
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.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

@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.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: WIN API List - FR - +500 codes sur les API

Message par kernadec »

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 : 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 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")
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

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 : 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.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.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: WIN API List - FR - +500 codes sur les API

Message par kernadec »

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
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

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
Dernière modification par PAPIPP le sam. 25/août/2012 23:31, modifié 2 fois.
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.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: WIN API List - FR - +500 codes sur les API

Message par PAPIPP »

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 : Tout sélectionner

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.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: WIN API List - FR - +500 codes sur les API

Message par blendman »

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 ?
Mesa
Messages : 1092
Inscription : mer. 14/sept./2011 16:59

Re: WIN API List - FR - +500 codes sur les API

Message par Mesa »

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.
Répondre