Obligement - L'Amiga au maximum

Mercredi 20 septembre 2017 - 07:44  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


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]