Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Blitz Basic - localisation
(Article écrit par Mathieu Chènebit et extrait d'Amiga News - mai 1997)
|
|
Tout d'abord, mille excuses pour mon absence du mois dernier. Un accident de disque dur (plantage total) est survenu juste avant
que j'envoie mon article, ce qui fait que j'ai absolument tout perdu (sources, programmes et... articles). J'ai donc passé ce
mois en essayant de récupérer tant bien que mal ce que j'ai perdu et je vais tenter de refaire mon article de tête.
Nous allons toujours améliorer notre programme original, en lui adjoignant cette fois-ci la localisation tant attendue.
Localisation
Pour en profiter, il est nécessaire de posséder un Amiga avec Workbench 2.1. Je rappellerai brièvement à ceux qui ne le savent
pas encore que la localisation est un procédé qui permet à un même programme d'être traduit dans de nombreuses langues différentes
sans pour autant être changé en lui-même : il suffit pour cela que des fichiers appelés "catalogues" existent et soient présents
dans le tiroir "SYS:Locale/Catalogs/LangueUtilisateur/". Ils (les catalogues) contiennent en effet toutes les chaînes de caractères
de notre programme dans la langue de l'utilisateur susdit. Seulement, il y a un hic, ces fichiers ne sont pas en ASCII, ça aurait
été trop facile, ils sont dans un format IFF propre (si je ne me trompe pas) et ils ne peuvent donc être édités qu'a l'aide
d'utilitaires spécialisés : personnellement je me sers de CatEdit qui se trouve sur Aminet (et donc dans toutes les bonnes
collections de DP). Notez qu'il existe aussi de nombreux programmes permettant de réaliser la même opération (je pense notamment
aux CatComp et autres).
La première chose à faire est donc d'éditer un catalogue en français, avec l'aide de CatEdit, contenant toutes les chaînes de
caractères de notre programme (menus, gadgets, textes des fenêtres de requête...). Ensuite, il faut de nouveau enregistrer
ces chaînes dans notre programme, mais cette fois-ci en anglais : ce sera notre langage par défaut ("built-in-language" comme
on dit pour faire bien :)). Regardez le source : si je me suis mal fait comprendre, tout deviendra lumineux !
Il suffit ensuite juste de réinifialiser nos noms de variables msg$() avec ce que l'on trouvera dans notre catalogue. Pour
cela trois choix s'offrent à nous :
- Soit on utilise la bibliothèque additionnelle fournie avec le Blitz 2.1 qui permet de faire cela avec de belles
commandes Blitz (c'est ce que je faisais auparavant).
- Soit on utilise des Includes (DTLocale) écrites par le célèbre Peter Traskalik.
- Soit on passe par une autre méthode que j'ai découverte sur Aminet dans un exemple. Certains d'entre vous l'auront déjà
reconnue, il s'agit de l'archive MaVaTi_Blitz.lha de cet auteur français de talent (décidément), j'ai nommé Marc Le Douarain.
Je préfère de loin cette dernière solution car elle offre le double avantage : 1) d'être totalement système, ce qui nous évite
les plantages occasionnels de la bibliothèque, et compacte 2) d'avoir été écrite par un auteur français !
Pour plus d'explications, je vous laisse regarder le source fourni : il correspond à la localisation des menus de Studio FX (Cf
Amiga News 98 de février) en français. Je vous rappelle que la première
chose à faire est de convenablement créer son catalogue avec CatEdit ou similaire. En regardant le source, vous pourrez ainsi
constater que même si le catalogue FX.catalog n'est pas présent, le programme marchera : simplement les menus seront en anglais.
Conclusion
J'espère qu'Aminet fleurira de programmes DP localisés dans les mois qui viennent. J'attends impatiemment vos questions, réactions,
suggestions ou programmes (voir l'encadré plus bas) à l'adresse matc999@spidernettmir ou au journal qui transmettra.
Le code source
WBStartup:NoCli
WbToScreen 0
ShowScreen 0
Dim menu$(6) ; on crée une table pour stocker nos chaînes
; voici les chaînes de caractères par défaut, à mettre de préférence en anglais
; les menus sont ceux de Studio FX - Cf. Amiga News 98
menu$(0)="Project"
menu$(1)="Load"
menu$(2)="Save"
menu$(3)="Save As"
menu$(4)="Show"
menu$(5)="Infos"
menu$(6)="Quit"
; avant de s'attaquer directement au catalogue, quelques mots sur le type pointeur (*variable)
; une variable de type pointeur n'est en fait qu'un mot long (.w) contenant l'adresse mémoire
; de la variable proprement dite (dans notre cas une chaîne de caractères)
; pour plus d'informations, reportez-vous à la page 29 de votre manuel (édition française)
*FXCatalog=OpenCatalogA_(0,"FX.catalog",0) ; on ouvre notre catalogue et on pointe sur son adresse mémoire
If *FXCatalog ; s'il a pu être ouvert avec succès
For nchaine=0 To 6
menu$(nchaine)=PeekTo$(GetCatalogStr_(*FXCatalog,nchaine,0),0) ; on réinitialise les variables des menus avec
les chaînes prises dans le catalogue (PeekTo$ sert à saisir une chaîne de caractères à un emplacement précis
de la mémoire)
Next
CloseCatalog_(*FXCatalog) ; on referme notre catalogue
End If
; pour finir, on ouvre notre fenêtre et on rattache notre menu
Window 0,0,0,200,100,$140E,"Essai de localisation",1,2
MenuTitle 0,0,menu$(0)
MenuItem 0,0,0,0,menu$(1)
MenuItem 0,0,0,1,menu$(2)
MenuItem 0,0,0,2,menu$(3)
MenuItem 0,0,0,3,menu$(4)
MenuItem 0,0,0,4,menu$(5)
MenuItem 0,0,0,5,menu$(6)
SetMenu 0
Repeat
ev.l=Event
VWait
Until
ev=$200
Free Window 0
Forbid_:End
|
Espace lecteur
Voici comme convenu dans l'article précédent, l'espace lecteur de votre rubrique Blitz. Nous allons initier cette mini-série avec
Erwan Fouret, génial créateur de la DoMethodBBLib. Cette bibliothèque vous permet d'avoir accès à la commande DoMethod.
Fabuleux, me direz-vous, mais à quoi cela sert-il ? Eh bien à rien de moins que l'accès à MUI et aux datatypes ! (NB : notez
qu'il existe déjà la bibliothèque RIDatatypesLib fournie avec le Blitz Support Suite permettant d'utiliser les datatypes du
groupe image, avec certes moins de puissance, mais d'une manière relativement plus simple).
La procédure d'installation est un peu rébarbative, mais assez aisée tout de même. Il vous suffit de charger le source fourni,
d'ajouter un numéro à la bibliothèque, de créer un exécutable et enfin de recompiler votre fichier Deflibs avec l'utilitaire
fourni avec le Blitz Basic. Toutes les démarches à suivre sont expliquées dans la documentation AmigaGuide qui n'est malheureusement
proposée qu'en anglais. Quel comble pour un auteur français ! Mais rassurez-vous, Erwan m'a promis de corriger tout cela pour
la prochaine version :-). Et puisque ce garçon est ma foi fort courageux, il nous a proposé peu de temps après la conversion
au format fd (comprenez Blitz) des fichiers includes de MUI, ce qui vous permettra enfin de programmer des interfaces MUI avec
le Blitz Basic. Attention tout de même, la programmation d'une telle interface n'est pas des plus aisées, et ne sera accessible
je pense qu'aux plus chevronnés d'entre vous. La prochaine fois, je vous parlerai de XLabProcess de Xavier Nuel.
|