Obligement - L'Amiga au maximum

Mercredi 24 avril 2024 - 18:56  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


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.


[Retour en haut] / [Retour aux articles]