Depuis de nombreuses années, je fais le ménage dans les fichiers de langue que je n'utilise pas dans les logiciels que j'utilise.
Cela peut représenter plus d'un millier de fichiers et plusieurs dizaines de Mo d'espace disque.
Quand j'ai commencé a utiliser PB, je me suis créé un utilitaire pour automatiser la recherche, l'affichage et éventuellement l'effacement de ces fichiers.
Voici le code très simplifié qui fonctionne directement dans l'IDE de PB et dont j'ai retiré tout ce qui est log, demande de confirmation et effacement des fichiers.
Tous les programmes listés dans ce code n'ont aucun problème de fonctionnement une fois les fichiers des langues non utilisés effacés.
Ce code utilise une DataSection pour lister les fichiers.
Dans mon application, les datas sont contenus dans un fichier externe lu au démarrage pour nourrir la DataSection.
Afin d'améliorer ce bout de code, n'hésitez a le critiquer (dans le bon sens du terme)
Merci.
Code : Tout sélectionner
EnableExplicit
OnErrorGoto(?ErrorHandler)
;; https://www.science.co.il/language/Locale-codes.php
;; en en-us 0x0409 1033 English - United States
;; fr fr-fr 0x040C 1036 French - France
Global PF1$ = "C:\Program Files\"
Global PF2$ = "C:\Program Files (x86)\"
Global ADL$ = "C:\Users\admin\AppData\Local\"
Global ADR$ = "C:\Users\admin\AppData\Roaming\"
DataSection
ListeApplications:
Data.s "DesktopCal\language !*.xml !eng.xml|fra.xml"
Data.s "Spotify\locales !*.mo !en.mo|fr.mo|fr-CA.mo"
Data.s "Spotify\locales !*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "Molotov\app-3.1.0\locales !*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "Programs\metube\locales !*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "Programs\somafm\locales !*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "Programs\youtube-music-desktop-app\locales!*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "CCleaner\Lang !*.dll !lang-1033.dll|lang-1036.dll"
Data.s "Defraggler\Lang !*.dll !lang-1033.dll|lang-1036.dll"
Data.s "Recuva\Lang !*.dll !lang-1033.dll|lang-1036.dll"
Data.s "Speccy\Lang !*.dll !lang-1033.dll|lang-1036.dll"
;
Data.s "adslTV\VLC\locale !*.* !en_GB|fr"
Data.s "VideoLAN\VLC\locale !*.* !en_GB|fr"
;
Data.s "AirLiveDrive\Language !*.xaml!strings_en-GB.xaml|strings_en-US.xaml|strings_fr-FR.xaml"
Data.s "Alt-Tab Terminator\lang !*.xml !French.xml"
Data.s "Bandizip\langs !*.ini !English.ini|French.ini"
Data.s "CherryPlayer\languages !*.ini !english.ini|french.ini"
Data.s "DVBViewer\Language !*.lng !English.lng|French.lng"
Data.s "FreeFileSync\Languages !*.lng !english_uk.lng|french.lng"
Data.s "Honeyview\langs !*.ini !English.ini|French.ini"
Data.s "Icecream PDF Editor\translations !*.qm !icepdfeditor_en.qm|icepdfeditor_fr.qm"
Data.s "Icecream PDF Split and Merge\translations !*.ini !icecreamshell_en.ini|icecreamshell_fr.ini"
Data.s "Icecream PDF Split and Merge\translations !*.qm !pdftool_en.qm|pdftool_fr.qm"
Data.s "JustRadio\Locales !*.pak !en-GB.pak|en-US.pak|fr.pak"
Data.s "KC Softwares\SUMo !*.spk !SUMo_00000409.SPK|SUMo_0000040C.SPK"
Data.s "MPC-BE\Lang !*.dll !mpcresources.fr.dll"
Data.s "MPC-HC\Lang !*.dll !mpcresources.en_GB.dll|mpcresources.fr.dll"
Data.s "MyPhoneExplorer\languages !*.lng !English.lng|French.lng"
Data.s "TomTom HOME 2\Translations !*.* !en_GB|en_US|fr"
Data.s "Vistumbler\Languages !*.ini !English.ini|French.ini"
Data.s "Wise\Wise Force Deleter\Languages !*.ini !English.ini|French.ini"
Data.s "Wise\Wise JetSearch\Languages !*.ini !English.ini|French.ini"
Data.s #Null$
EndDataSection
Procedure searchLang()
Protected ligne$
Protected separateur$="!"
Protected dossier$, fichier$, langue$, modele$
Protected count, n, taille, tailleTotale, nombreDeFichiers
Restore ListeApplications
Repeat
Read.s ligne$
If ligne$ <> #Null$
count = CountString(ligne$, separateur$)
If count
dossier$ = Trim(StringField(ligne$,1,separateur$)) ;: Debug "Dossier: "+dossier$
modele$ = Trim(StringField(ligne$,2,separateur$)) ;: Debug "Modéle: " +modele$
langue$ = Trim(StringField(ligne$,3,separateur$)) ;: Debug "Langue: " +langue$ : Debug ""
Else
Continue
EndIf
NewList folder.s()
AddElement(folder())
folder() = PF1$ + dossier$ + "\"
AddElement(folder())
folder() = PF2$ + dossier$ + "\"
AddElement(folder())
folder() = ADL$ + dossier$ + "\"
AddElement(folder())
folder() = ADR$ + dossier$ + "\"
ForEach folder()
If ExamineDirectory(0, folder(), modele$)
Debug UCase(folder()) : Debug ""
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
fichier$ = DirectoryEntryName(0)
If Not FindString(langue$, fichier$, 1, #PB_String_NoCase)
taille = FileSize(folder()+fichier$)
tailletotale + taille
nombredefichiers + 1
Debug folder()+fichier$+" ---> "+taille
EndIf
EndIf
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
dossier$ = DirectoryEntryName(0)
Select Left(LCase(dossier$), 12)
Case ".", ".."
Default
If Not FindString(langue$, dossier$, 1, #PB_String_NoCase)
If ExamineDirectory(1, folder()+dossier$, "*.*")
While NextDirectoryEntry(1)
If DirectoryEntryType(1) = #PB_DirectoryEntry_File
fichier$ = DirectoryEntryName(1)
taille = FileSize(folder()+dossier$+"\"+fichier$)
tailletotale + taille
nombredefichiers + 1
Debug folder()+dossier$+"\"+fichier$+" ---> "+taille
EndIf
Wend
EndIf
EndIf
EndSelect
EndIf
Wend
Debug ""
FinishDirectory(0)
EndIf
Next
EndIf
Until ligne$ = #Null$
Debug "NOMBRE DE FICHIERS : " + NOMBREDEFICHIERS
Debug ""
Debug "TAILLE TOTALE: " + FormatNumber(TAILLETOTALE,3,".",".")
Debug ""
EndProcedure
searchLang()
ErrorHandler:
End