Testez le, et dites moi ce que vous en pensez

Code : Tout sélectionner
;- Utilisation :
;-
;- Le Fichier s'appelle MultiLangue.pb
;-
;- Créer un dossier pour les tests. Y mettre le fichier MultiLangue.pb
;- Dans ce dossier, créer un dossier "Lang". Dans le dossier "Lang",
;- créer trois dossiers au nom de la langue, par ex. "Français", "English",
;- "Deutch" et y mettre les fichiers "Test.catalog"
;-
;- La traduction en Anglais doit être à peu près correcte, par contre, la
;- traduction en Allemand à été faite sur un site Internet. Donc, pas la peine
;- de vous moquer de moi si elle n'est pas bonne, je ne parle pas un mot d'allemand ;o)
;-
;- Si vous connaissez une autre langue, il suffit d'ajouter un dossier avec un
;- fichier .catalog, et il apparaitra dans le menu.
;-
;- Si il n'y a pas de dossier "Lang", l'exemple démarre sur les datas, et donc,
;- il est uniquement en français
;- Declarations
Declare GetFolders(Chemin.s)
Declare Open_Main_Window()
Declare Update()
Declare ReadCatalog(Filename$)
Declare DefaultLanguage()
;- Constantes fenêtre
Enumeration
#Main_Window
EndEnumeration
;- Constantes Menu
Enumeration
#M_Options
EndEnumeration
Enumeration
;#M_French
#M_Quit = 100
EndEnumeration
;- Constantes Gadgets
Enumeration
#ListIcon
#Text
#Radio_0
#Radio_1
#Bouton
#Chk_0
#F3D_0
EndEnumeration
NewList Menu.s()
Dim Language$(12)
;- Variables globales
Global AppPath.s, hList, hwnd
;- Recherche du dossier de l'application
AppPath = Space(#MAX_PATH)
GetCurrentDirectory_(#MAX_PATH,@AppPath)
If Right(AppPath,1)<>"\" : AppPath + "\" : EndIf
AppPath + "Lang\"
;- Procedures
Procedure GetFolders(Chemin.s)
If ExamineDirectory(0,Chemin,"*.*") = 0
;DefaultLanguage()
ProcedureReturn #False
Else
Repeat
Type = NextDirectoryEntry()
If Type = 2
Nom.s = DirectoryEntryName()
If Nom <> "." And Nom <> ".."
AddElement(Menu())
Menu() = Nom
EndIf
EndIf
Until Type = 0
EndIf
ProcedureReturn #True
EndProcedure
Procedure Open_Main_Window()
If OpenWindow(#Main_Window, 384, 214, 310, 365, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , Language$(0))
hwnd = WindowID()
If CreateGadgetList(hwnd)
hList = ListIconGadget(#ListIcon, 5, 5, 300, 200, Language$(4), 145, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#ListIcon, 2, Language$(5), 145)
TextGadget(#Text, 5, 215, 300, 20, Language$(6), #PB_Text_Center | #PB_Text_Border)
OptionGadget(#Radio_0, 10, 265, 120, 20, Language$(7))
OptionGadget(#Radio_1, 10, 285, 120, 20, Language$(8))
ButtonGadget(#Bouton, 5, 315, 300, 25, Language$(9))
CheckBoxGadget(#Chk_0, 140, 290, 160, 15, Language$(10))
Frame3DGadget(#F3D_0, 5, 240, 120, 70, Language$(11))
EndIf
AddGadgetItem(#ListIcon,-1,"Premiere colonne"+Chr(10)+"Seconde colonne")
EndIf
EndProcedure
Procedure UpdateGadget()
Titre.LV_COLUMN
SetWindowText_(hwnd, Language$(0))
FreeMenu(#M_Options)
If CreateMenu(#M_Options, hwnd)
MenuTitle(Language$(1))
OpenSubMenu(Language$(2))
For i = 0 To CountList(Menu())-1
SelectElement(Menu(),i)
MenuItem(i + 3,Menu())
Next
CloseSubMenu()
MenuBar()
MenuItem(#M_Quit, Language$(3))
EndIf
Titre\mask = #LVCF_TEXT
Titre\pszText = @Language$(4)
SendMessage_(hList,#LVM_SETCOLUMN,0,@Titre)
Titre\pszText = @Language$(5)
SendMessage_(hList,#LVM_SETCOLUMN,1,@Titre)
SetGadgetText(#Text, Language$(6))
SetGadgetText(#Radio_0, Language$(7))
SetGadgetText(#Radio_1, Language$(8))
SetGadgetText(#Bouton,Language$(9))
SetGadgetText(#Chk_0, Language$(10))
SetGadgetText(#F3D_0, Language$(11))
EndProcedure
Procedure ReadCatalog(Fichier.s)
If ReadFile(0, Fichier)
If ReadString() = "Catalog"
For k=0 To 12
Language$(k) = ReadString()
Next
EndIf
CloseFile(0)
EndIf
EndProcedure
Procedure DefaultLanguage()
Restore BaseLanguage
For k=0 To 12
Read Language$(k)
Next
EndProcedure
If GetFolders(AppPath) = #True
SelectElement(Menu(), 2)
Path.s = AppPath + Menu()+"\Test.catalog"
ReadCatalog(Path)
Else
DefaultLanguage()
EndIf
Open_Main_Window()
UpdateGadget()
;- Boucle principale
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
If EventMenuID() <> 100
ResetList(Menu())
SelectElement(Menu(), EventMenuID() -3)
Path.s = AppPath + Menu()+"\Test.catalog"
ReadCatalog(Path)
UpdateGadget()
EndIf
Select EventMenuID()
Case #M_Quit
quit = 1
EndSelect
Case #PB_EventGadget
Select EventGadgetID()
Case #Bouton
quit = 1
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
End
;
;- Datas par défaut
DataSection
BaseLanguage:
Data$ "Exemple d'un Logiciel Multi-Langue"
Data$ "Options"
Data$ "Changer la langue"
Data$ "Quitter"
Data$ "Colonne 1"
Data$ "Colonne 2"
Data$ "Texte dans un TextGadget()"
Data$ "Premier choix"
Data$ "Second choix"
Data$ "Cliquez pour Quitter"
Data$ "Selectionner une option"
Data$ "Groupe"
EndDataSection
Fichier Anglais:
Code : Tout sélectionner
Catalog
Example of a Multi-language software
Options
Change language
Quit
Column 1
Column 2
Text in a TextGadget()
First choice
Second choice
Click for quit
Select an option
Group

Code : Tout sélectionner
Catalog
Beispiel einer Software Multi- Sprache
Optionen
Die Sprache ändern
Verlassen
Spalte 1
Spalte 2
Text in einem TextGadget()
Erste Wahl
Zweite Wahl
Klicken Sie für verlassen
Wählen Sie eine Auswahl aus
Gruppe
Code : Tout sélectionner
Catalog
Exemple d'un Logiciel Multi-Langue
Options
Changer la langue
Quitter
Colonne 1
Colonne 2
Texte dans un TextGadget()
Premier choix
Second choix
Cliquez pour Quitter
Selectionner une option
Groupe
