Exécutable Multilangage

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Exécutable Multilangage

Message par Droopy »

Ces procédures permettent de créer un exécutable multilangage.
On peut facilement fournir le même exécutable à des français et des anglais. :wink:

Code : Tout sélectionner

;/ Return the default primary language identifier ( 0 system / 1 User )
ProcedureDLL GetLanguage(wich)
  If wich
    ProcedureReturn GetUserDefaultLangID_() & 511
  Else
    ProcedureReturn GetSystemDefaultLangID_() & 511
  EndIf
EndProcedure

;/ Initialise the LocalText function with a Primary language identifier
;/ German = 7 / English 9 / French 12 / Spanish = 10 / Italian = 16 / Portuguese = 22 
ProcedureDLL LocalTextInit(LocalLanguageIdentifier)
  Global LocaltextIsLocal
  LocaltextIsLocal=0
  If GetLanguage(1)=LocalLanguageIdentifier
    LocaltextIsLocal=1
  EndIf
EndProcedure

;/ Return the correct text regarding the user language 
ProcedureDLL.s LocalText(Local.s,International.s)
  If LocaltextIsLocal
    ProcedureReturn Local
  Else
    ProcedureReturn International
  EndIf
EndProcedure


;/ Test
LocalTextInit(12) ;/ French Language as local

WindowsTitle.s=LocalText("Version Française","English Version")
OpenWindow(0,0,0,200,120,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,WindowsTitle) 
CreateGadgetList(WindowID())

CreateStatusBar(0,WindowID())
StatusBarText(0,0,LocalText("C'est juste un test","It's just a test"),#PB_StatusBar_Center)

ButtonGadget(0, 10, 10, 180, 80, LocalText("Cliquez Moi","Clic Me"))
GadgetToolTip(0,LocalText("Ce texte est en Français","This text is in English"))

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Je préfère gérer ça avec des fichiers INI ou PREFS. Car en cas de faute de frappe, faut réuploader/rediffuser tout un exe. Or un fichier texte ça prend que dalle en place (si ya des UseJPEGDec()... l'exe passe à 100Ko voir le double/triple...(pareil si ya des média inclus dans l'exe...)
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Interessant et pas mal du tout :)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

ca pourrait devenir intéressant avec des resources (et on sait tous que tu connais les resources ^^)... tel-quel ca tend à rendre le code beaucoup trop compliqué. Avec des stringtable multilingue ca serait beaucoup mieux. Sinon y'a toujours cette solution pour choisir parmi plusieurs langues :
http://purebasic.hmt-forum.com/viewtopic.php?t=3783

Y'a plusieurs fonctions qui gèrent les langues (mais pas les sous-langues comme par exemple l'anglais british ou américain)

Dri ;)
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Je ne connais que le français et l'anglais --> Deux langues me suffisent.

On peut rendre le code plus lisible en détaillant plus :

Code : Tout sélectionner

SBText.s=LocalText("C'est juste un test","It's just a test")
StatusBarText(0,0,SBText)
J'ai regardé ton code sur les Langues/SubLangues (Nickel dailleurs :wink: ) mais le sous-langage ne m'interesse pas dans ce cas.

Les ressources, je vais regarder ça, mais cela oblige à un fichier externe, alors que là tout est dans le même fichier ( le code source ) ce qui je trouve me simplifie pas mal la vie.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Moi non plus je ne gère pas les sous-langues lol
pour les resources, c'est comme ca que les professionnels font ^^

Dri ;)
Répondre