PureBasic

Forums PureBasic
Nous sommes le Lun 20/Jan/2020 21:28

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Multi Language Tout simple
MessagePosté: Mar 02/Sep/2014 6:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1689
Localisation: Belgique
Image
Voila un module tout simple pour faire vos programme multi-langue

Le code du module
Code:
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////
;TRS
;Module de traduction
;Vers 1.0
;© AllDev /MicrodevWeb  2014
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DeclareModule Trs
      Declare$ Send(Txt$)
      Declare SetLanguage(Language)
      Declare  GetLanguage()
EndDeclareModule

Module Trs
      Global MyLanguage
     Procedure SetLanguage(Language)
           MyLanguage=Language
     EndProcedure
      Procedure.i  GetLanguage()
            ProcedureReturn MyLanguage
      EndProcedure
      Procedure$ Send(Txt$)
            Protected TxtReturn$
            TxtReturn$=StringField(Txt$,MyLanguage,"@")
            ProcedureReturn TxtReturn$
      EndProcedure
EndModule


Le code pour le teste

Code:
Enumeration FormWindow
      #MainForm
EndEnumeration

Enumeration FormGadget
      #Text_1
      #Text_2
      #Str1
      #Str2
      #Text_3
      #Str3
      #Text_4
      #Str3_Copy1
      #Text_5
      #Str3_Copy1_Copy1
      #Button_0
      #Button_1
      #Button_3
      #Button_4
      #Button_5
EndEnumeration

Enumeration FormFont
      #Font_MainForm_0
EndEnumeration


#FR=1
#EN=2
#NL=3


LoadFont(#Font_MainForm_0,"Arial", 12)


Procedure OpenMainForm(x = 0, y = 0, width = 380, height = 320)
      OpenWindow(#MainForm, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      TextGadget(#Text_1, 15, 5, 225, 25, Trs::Send("Nom du client@Customer Name@Naam van de klant"))
      SetGadgetFont(#Text_1, FontID(#Font_MainForm_0))
      TextGadget(#Text_2, 15, 65, 225, 25, Trs::Send("Adresse@Address@Adres"))
      SetGadgetFont(#Text_2, FontID(#Font_MainForm_0))
      StringGadget(#Str1, 15, 30, 225, 25, "")
      StringGadget(#Str2, 15, 100, 225, 25, "")
      TextGadget(#Text_3, 15, 125, 225, 25, Trs::Send("Code postal@zip code@Postcode"))
      SetGadgetFont(#Text_3, FontID(#Font_MainForm_0))
      StringGadget(#Str3, 15, 150, 225, 25, "")
      TextGadget(#Text_4, 15, 185, 225, 25, Trs::Send("Localité@locality@lokalisatie"))
      SetGadgetFont(#Text_4, FontID(#Font_MainForm_0))
      StringGadget(#Str3_Copy1, 15, 210, 225, 25, "")
      TextGadget(#Text_5, 15, 245, 225, 25, Trs::Send("Pays@country@land"))
      SetGadgetFont(#Text_5, FontID(#Font_MainForm_0))
      StringGadget(#Str3_Copy1_Copy1, 15, 270, 225, 25, "")
      ButtonGadget(#Button_0, 260, 30, 100, 25, Trs::Send("Valider@Submit@valideren"))
      ButtonGadget(#Button_1, 260, 60, 100, 25, Trs::Send("Fermer@Close@Close"))
      ButtonGadget(#Button_3, 290, 100, 40, 25, "FR")
      ButtonGadget(#Button_4, 290, 140, 40, 25, "EN")
      ButtonGadget(#Button_5, 290, 180, 40, 25, "NL")
EndProcedure
Global gEvent
Trs::SetLanguage(#FR)
OpenMainForm()
Repeat
      gEvent=WaitWindowEvent()
      Select gEvent 
            Case #PB_Event_Gadget
                  Select EventGadget()
                        Case #Button_3
                              Trs::SetLanguage(#FR)
                              CloseWindow(#MainForm)
                              OpenMainForm()
                        Case #Button_4
                              Trs::SetLanguage(#EN)
                              CloseWindow(#MainForm)
                              OpenMainForm()
                        Case #Button_5
                              Trs::SetLanguage(#NL)
                              CloseWindow(#MainForm)
                              OpenMainForm()
                  EndSelect
      EndSelect
Until gEvent=#PB_Event_CloseWindow

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Multi Language Tout simple
MessagePosté: Mar 02/Sep/2014 8:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4230
Localisation: Arras, France
Tiens c'est pas bête ! Et puis c'est un bon exemple d'utilisation des modules !
Par contre, ce n'est pas très extensible car ça oblige à modifier le code et à recompiler pour tout nouveau langage. Mais j'aime bien ;)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Multi Language Tout simple
MessagePosté: Mar 02/Sep/2014 8:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8801
L'idée du module est sympa en effet.
Je préfère tout de même un fichier pref. C'est simple à mettre en place et à modifier sans avoir à recompiler le prog.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Multi Language Tout simple
MessagePosté: Mar 02/Sep/2014 11:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1689
Localisation: Belgique
Bonjour Djes,

djes a écrit:
Tiens c'est pas bête ! Et puis c'est un bon exemple d'utilisation des modules !
Par contre, ce n'est pas très extensible car ça oblige à modifier le code et à recompiler pour tout nouveau langage. Mais j'aime bien ;)


Tu ajoute autant de langue que tu veux
Code:
#FR=1
#EN=2
#NL=3
#ES=4
#GE=5


Tu la défini avec

Code:
Trs::SetLanguage(#FR)


Et quant tu crée ta fenêtre tu sépare les différentes langues par un @ et fait comme ceci
Code:
TextGadget(#Text_4, 15, 185, 225, 25, Trs::Send("Français@Anglais@Néerlandais@Espagnol@Allemand"))


A chaque changement de langue tu réutilise par exemple
Code:
Trs::SetLanguage(#ES)


La seule contrainte, il faut fermer et ré ouvrir la fenêtre

--> Ar-S tu peux sauver le langage dans le fichier préférence tu récupère le langage courant comme ceci
Code:
myLanguage=Trs::GetLanguage()


J'aurais peu faire plus compliqué avec un fichier texte et les différentes langues, et puis reprendre l'id de la fenêtre du gadget et modifier automatiquement, j'ai simplement trouvé cette méthode simple, quant à la contrainte de ré ouvrir la fenêtre. Si le choix de la langue est dans le menu, toutes les fenêtres ouvertes après aurons la bonne langue.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye