Interface du projet Antibabel Dans le cadre du projet Antibabel, je me suis attaché à développer l'interface graphique. Dans la suite de ce document, j'explique les objectifs et les choix faits pour sa mise en oeuvre. Ce document est un brouillon des idées pour le développement de cette application et est ouvert à toute modification améliorant son efficassité. But --- Ce projet étant plutôt lourd, il est souhaitable de traiter séparément l'interface du traducteur. On peut en définir le but ainsi : Permettre la saisie des informations sémantiques et grammaticales d'une phrase en deux dimensions en vue d'être postérieurement utilisées pour une traduction dans une langue différente, cela dans une optique fonctionnelle, c'est-à-dire que l'application doit avant tout fournir les moyens de la saisie. A noter que ce programme peut être utilisé de trois façon différente : - pour traduire un texte que l'on rédige soit même - pour formater un texte en vue d'une traduction future - pour traduire un texte déjà formaté. Objectifs --------- Les objectifs principaux à atteindre sont - développer des outils de saisie simples et robustes - transmettre ses informations au traducteur, dont les langues de rédaction et de traduction - récupérer et afficher le résultat - généraliser ses tâches à des fichiers source et destination. Pour cela, comme on le vera par la suite, il faut définir : - les informations nécessaires au traducteur - lesquelles peuvent ne pas être fournies par l'utilisateur - quels sont les liens entre ces informations - lesquelles seront affichées et de quelle manière - comment accéder à et modifier ces informations - les structures informatives interne, d'échange et de stockage, en particulier concernant les données communes et l'affichage. - la gestion des langues - si les phrases sont perdues ou conservées, saisies à la volée ou extraites d'un fichier - comment sont conservées les phrases, à la fois dans la langue d'origine et la traduction (format). Quelques définitions -------------------- Dans la suite, j'appelle un élément de la phrase, tout mot ou locution ou tout regroupement de ces éléments. Ainsi un nom, un groupe du nom ou un sujet sont des éléments. La liste des données grammaticales communes sera parfois appelées "phrase" puisqu'elle centralise l'accès à tous les éléments de la phrase. Description ----------- Interface Elle doit donner les moyens de la saisie ainsi que son résultat. Ainsi l'interface se répartie entre les espaces suivants : - accès aux fonctions de rédaction - la majorité de l'espace disponible est utilisée pour la saisie des données et leur affichage - un espace plus petit est réservé à l'affichage de la traduction et/ou de l'état de la rédaction en cours. - le reste est à la disposition de commandes et raccourcis Le premier regroupe la barre de menu, les éventuels raccourcis vers les fonctions et la liste de langues de traduction. Les autres commandes, telles que la navigation dans les phrases ou les fichiers, sont regroupées dans le dernier espace. Le second est le plus important. Il montre les éléments de la phrase et les liens qui les lient, ainsi que la structure grammaticale de la phrase. Afin que celle-ci soit claire, elle est disposée en deux dimensions plutôt que de façon linéraire. De plus, un code de forme, de couleur, d'aspect des éléments renseigne sur leurs attributs et leur fonctions dans la phrase. D'autre part, cet espace permet de sélectionner les éléments et fourni un autre moyen d'accèder à leur attributs. Le dernier espace est utilisé pour un traditionnel affichage linéaire de la phrase en construction, ou traduite. Il permet aussi d'indiquer les erreurs dans la phrase. Ces erreurs ainsi que les problèmes et omissions doivent être indiquées de manière claire. La manière selon laquelle et le moment (à la traduction ou durant la rédaction) où elles sont affichées seront à définir. Saisie La simplicité de la saisie implique que l'on ait le moins d'informations à fournir et que l'on doit faire le meilleur usage des possibilités d'une interface graphique. Aussi, les choix suivants sont faits : - extraire le maximum d'informations d'autres sources : . des dictionnaires (dont la nature du mot ?) . propagation des informations déjà fournies à travers les liaisons - utilisation de la souris comme médium principal : . sélection d'un élément . déplacement . liaison . modifications des informations - accès à tout ou partie des fonctions par des menus et des boutons. . menu général . menus déroulants . accès direct aux fonctions les plus utiles par des boutons - langues . accès rapide à la sélection de la langue de traduction . sélection possible des autres langues (voir § sur les langues) Traducteur Cet article ne traite pas de la traduction. Cependant il est nécessaire de définir comment l'interface interagit avec le traducteur. - fonctionnement du traducteur . en continu après la saisie de chaque nouvel élément, ou sur commande, lorsque la rédaction est achevée ? . est-ce une application indépendante, ou une extention de l'application (dll, unité, etc. ) ? Le traducteur peut être utilisé conjointement avec l'interface de saisie, mais aussi indépendemment pour traduire un texte déjà formaté. Cette dernière application est cruciale dans l'environnement d'internet. - communication . moyen. Selon que le traducteur est une application ou une extension, l'envoi et la réception des phrases peut se faire plus ou moins difficilement. N'oublions pas que sous un système multitâche, les procédures ont tendance à retourner avant que les procédures qu'elles ont appelées n'aient retourné. La synchronisation, la simplicité de programmation, et champ d'application du traducteur vont déterminer ce moyen. On peut imaginer de communiquer à travers la mémoire vive, ou via un fichier. Cela reste encore à définir. Une solution intéressante est d'utiliser un minuteur pour suivre à intervalles réguliers l'état de la traduction, par exemple en surveillant si le fichier d'échange est créé. . format. La phrase doit être transmise avec les informations sur sa structure. Le plus simple est d'utiliser le format d'archivage utilisé dans les fichiers, d'autant plus qu'ils risquent d'être utiliser pour le transfert. Je discuterai de cela plus loin, dans la section concernant les fichiers. . erreurs. Certaines des erreurs ayant lieu durant la traduction ne peuvent pas être corrigées ou ignorées par le traducteur. Néanmoins, une traduction peut parfois être retournée (élément manquant, traduction ou sens manquant) et il faut alors indiquer ces erreurs à l'interface. Le mieux est de rajouter des marques de format dans la phrase. . réception. Au problème du moyen et du format de communication déjà évoqué pour l'envoi de la phrase, la phase de retour de la phrase pose un autre problème, la synchronisation. L'interface et le traducteur peuvent fonctionner en parallèle plutôt que de façon séquentielle, et l'interface a besoin de savoir quand la traduction est disponible. Cela dépend encore du moyen utilisé pour la communication. Un minuteur peut être utilement mis à profit ici. Langues Il convient de pouvoir choisir les langues de rédaction, de traduction et des termes de l'interface. Cela va de soi pour la langue de traduction. Quant à la saisie, les dictionnaires ne seront pas disponibles dans toutes les langues aussi il ne sera pas toujours possible d'écrire dans sa langue maternelle. Mais surtout puisque l'application pourra lire un fichier formaté pour la traduction, la langue d'origine pourra être quelconque. C'est en fait la langue maternelle qui sera la langue de traduction. Comme il est relativement simple de traduire seulement les termes codés dans l'application sans passer par les dictionnaires, la langue dans laquelle ces termes sont écrits peut être choisie. Non seulement la langue de traduction mais aussi la langue de rédaction doivent pouvoir être choisies. Ainsi, une seule version de l'application sera disponible, mais pour les utilisateurs dont la langue n'est pas implémentée, cela leur permet de choisir la langue la plus adaptée à leur utilisation ou celle qu'ils maîtrisent le mieux. La langue étant étroitement liée à sa grammaire, les règles de grammaire ne doivent par conséquent pas être programmées, mais stockées dans un fichier propre à cette langue. La structure de stockage et la méthode d'application de ces règles à la phrase restent encore à établir. La langue de traduction doit être d'accès facile. En cliquant un symbole facilement identifiable disposé dans la fenêtre ou la fenêtre de traduction, un menu peut apparaitre avec les langues disponibles. Remarque : la langue de rédaction et la langue de l'application peuvent être différentes. Si la langue maternelle de l'utilisateur n'est pas implémentée, une autre langue qu'il maîtrise peut être utilisée tout en laissant le texte des commandes et des messages de l'application dans la langue maternelle. Fichiers La traduction peut être ponctuelle (une phrase), ou concerner un texte entier. Le texte formaté peut être enregistré ou perdu. Cet enregistrement formaté peut alors servir de source pour la traduction. Il peut alors être destiné à la diffusion. La gestion des fichiers est donc importante. - distribution, objectif L'objectif de ce projet est de fournir un outil de traduction à la fois au niveau de l'individu (celui-ci peut rédiger et formater son texte pour en faire une traduction pour lui-même), mais aussi d'un large public. En effet, un texte une fois formaté peut être traduit par tout lecteur. Il est donc destiné à la diffusion par internet. D'autre part, il faut noter que la gestion du fichier contenant l'original (entrée) est en partie indépendante de celle du fichier contenant la traduction (sortie), puisque l'utilisateur peut choisir de ne conserver que la traduction, ou de seulement afficher la traduction d'un fichier. Il faut rendre la gestion des sorties aussi indépendante que possibles de celle des entrées. Cependant, on peut prévoir un mode selon lequel toutes les phrases seront enregistrées. - format La question du format des fichiers est très importante. Un format natif est bien entendu évident, mais l'intérêt des documents est de les diffuser prêts pour être traduits ailleurs. Cela soulève une question : comment faire pour que ces documents soient reconnus ? Une idée simple apparait. Ces fichiers contiennent surtout du texte qui peut être lu à l'écran par un navigateur internet. Or le format majeur d'internet, le html, a la particularité d'être formaté et de posséder la balise qui permet d'insérer des commentaires. Ceux-ci peuvent être utilisés afin de mettre nos propres marques, alliant ainsi la diffusion et la présentation d'un texte sur internet, et la disponibilité pour traduction. A noter qu'un format natif reste intéressant car il peut faire gagner une place considérable, en particulier parce qu'il ne contient pas les marques de présentation. Cela a aussi son intérêt, par exemple dans la communication entre l'interface et le traducteur pour minimiser les ressources nécessaires. Enfin, il ne faut pas oublier que l'utilisateur en bout de chaine peut ne pas avoir besoin des informations grammaticales et sémantiques. Il peut ne souhaiter avoir que le texte traduit et compréhensible. Les formats texte seul et html sans marque (commentaires) sont donc à ajouter à la liste des formats après traduction. En fait, on peut se demander si les textes traduits doivent aussi comporter des balises sémantiques. En effet, la traduction n'étant évidemment pas parfaite, les balises insérées risquent d'être incorrectes et de rapidement mener à une traduction totalement erronée. Cependant, les marques déjà insérées pourraient permettre de remettre à jour le format plus rapidement, évitant ainsi d'avoir à conserver à la fois le texte d'origine, et la traduction - manipulation Le fait d'avoir deux fichiers, l'un pour l'original, l'autre pour une traduction pose plusieurs problèmes. En particulier, entre deux traduction d'un même original, celui-ci a pu être beaucoup modifié et la correspondance entre les phrases ne plus être respectée. On peut aussi imaginer que le fichier de traduction ne soit pas le bon et que l'enregistrement ne détruise une autre traduction. Il y a plusieurs solutions à ce problème. On peut réduire les ***pouvoirs *** que l'utilisateur a sur le fichier de traduction, par exemple en n'autorisant que l'ajout ou même la création d'un nouveau fichier. On peut aussi indiquer dans les fichiers la date de dernière modification et surtout le fichier d'origine. Ainsi, la traduction d'un autre document ne sera pas effacée. D'autres solutions sont encore envisageables. Cependant, il faut rendre aussi indépendantes que possible la gestion des entrées et sorties : une saisie ponctuelle peut aboutir à l'enregistrement de la traduction comme la traduction d'un fichier peut n'être qu'affichée. D'autre part, il ne faut pas forcément perdre les phrases saisies s'il n'y a pas de fichier de destination. On peut créer pour cela deux fichiers tampon de rédaction et de traduction. Pour le fichier de rédaction, on doit pouvoir : . l'ouvrir pour modification + correction + ajout. C'est utile lorsqu'on a rédigé des phrases sans avoir ouvert de fichier au préalable. . l'ouvrir pour lecture seule et traduction . créer un nouveau . naviguer dedans + phrase par phrase, cela permet de vérifier si la phrase est correcte + en totalité, pour atteindre rapidement la fin du fichier ou faire une traduction automatique de tout le document. Le fichier de traduction a une gestion légèrement différente. On doit pouvoir : . l'ouvrir pour modification + correction. Seulement si on est capable de dire qu'on ne détruit pas une précédente traduction (ou que l'on n'en a rien à faire) + ajout . créer un nouveau . naviguer dedans. Cela se fait en conjonction avec la navigation dans le fichier de rédaction et est soumis aux mêmes restrictions concernant la correction de la traduction. A noter que la navigation dans les fichiers n'est que l'image de la navigation dans les phrases. Ce thème sera traitée plus tard. - contraintes . compatibilité de la langue au sein du fichier. Si on ouvre un fichier écrit dans une langue, pour y ajouter des phrases écrites dans une autre langue, on risque de créer des problèmes. Cela peut arriver lorsqu'on cite un texte dans une autre langue. Si le fichier est ouvert avant toute rédaction, il peut alors imposer sa langue. Dans le cas contraire, il faut définir la réaction du programme. Pour les citations, on peut les signaler par une marque particulière. . affichage du fichier lu : il faut pouvoir gérer la disposition des éléments entre eux afin qu'il ne s'affichent pas n'importe où et se recouvrent. Cela est aussi valable pour les phrases. Information Il faut maintenant définir quelles informations on doit collecter afin de pouvoir traduire et gérer l'affichage à l'écan. Les informations peuvent être regroupées en trois catégories : - information grammaticale commune à tous les éléments (nature, numéro dans la classe nature, etc.) -> Tmot - propre à l'interface (position, couleur, forme, mot ...) -> Tzone - propre à la nature de l'élément (tout ce qui permet de décrire ce type d'élément : genre, nombre, liens, fonction, sens, etc.) ->Tverbe, Tnom, etc. Les deux premières catégories rassemblent tous les éléments, mais pour plus de clarté, on les a séparées. Ces informations changent pour chaque élément même si elles portent le qualificatif "communes". Un classement selon la nature est nécessaire car chaque élément n'a pas les mêmes informations (un verbe n'a pas de déterminant, par exemple). La description de cette dernière catégorie est basée sur le Becherelle. On les regroupe dans des classes, une pour chaque nature d'élément, parmi lesquelles : - Tverbe - Tnom - Tdet déterminant - Tadj adjectif qualificatif - Tdegre comparatif ou superlatif - Tadv - TGN groupe nominal - Tprep préposition Ces classes seront décrites plus loin. Parmi ces informations sont des liens vers d'autres éléments. Ces liens pourraient être soit un indice dans la liste des éléments, soit un pointeur. Le pointeur semble plus adapté ici, d'autant plus que certains éléments peuvent avoir plusieurs éléments de même classe associés à eux; un nom peut avoir plusieurs adjectifs. Comme ce nombre n'est pas défini à l'avance, il est préférable que le lien soit en fait une liste de liens vers tous les éléments d'une même classe associés au même élément propriétaire de ce lien. - origine Ces informations peuvent avoir de multiples origines : . utilisateur (mot, temps, etc.) . interface (position, forme, etc.) . dictionnaire (genre, invariance, régulier, etc.) . autres éléments (liens, genre et nombre d'un adjectif issus du nom qualifié, etc.) Les trois dernières sont là pour faciliter la tâche de l'utilisateur d'une part, mais aussi pour réduire les risques d'erreur et de conflit que l'utilisateur pourrait occasionner, tel le choix d'un genre différent pour le nom et l'adjectif. Cela implique aussi de définir des règles de priorité et d'interdire l'accès à certains paramètres de certains éléments. - structure Les données communes sont regroupées dans une structure appelée Tmot et contient principalement le mot, sa classe, un lien sur les informations de cette classe et le sens. D'autres informations comme les dimensions, le niveau dans la représentation en cercles, et un lien sur les données communes de l'élément suivant de même nature peuvent être ajoutées. La liste des données communes porte le nom "phrase" Les données propres à l'interface sont regroupées dans une structure de nom Tzone. Elle porte ce nom car elle définie entre autre la portion de l'écran qui réagit à la souris. Pour cela elle contient les limites de la zone cliquable (rectangle), le type de zone, un lien sur l'élément dans la phrase et ses dimensions. On peut y ajouter d'autre éléments comme la classe, qui permet de déterminer l'aspect du cadre entourant l'élément à l'écran (forme, couleur, etc.), les liens, les autres informations affectant l'aspect de l'élément (genre, nombre ...), mais ceux-ci sont redondant avec les données stockées dans les autres structures (Tmot et les classes). Le type de la zone cliquable est important car il défini comment réagir face à un groupe. Un groupe nominal par exemple contient d'autres éléments, nom, déterminant, adjectif. Il convient de pouvoir accéder à ceux-ci. Le type de zone permet ainsi au groupe de ne réagir à la souris que si l'action se fait sur le cadre, et de laisser libre le centre pour son contenu. Un mot encore sur les groupes nominaux. le contenu de ceux-ci peut être complexe; il peut par exemple contenir deux mots eux mêmes qualifiés par un adjectif qui leur est propre, etc. : "le jeune garçon et la petite fille". Pour simplifier les choses, nous allons imposer pour l'instant qu'un groupe nominal ne puisse contenir qu'un seul noyau. - traitement Lors de la saisie d'un nouvel élément, le maximum d'information sera retiré du dictionnaire. La liste des informations succeptibles d'être extraites du dictionnaire sera dressée pour chaque classe plus loin. Ensuite, si l'élément a été lié à un autre élément dès la création, les informations pertinentes seront propagées via ce lien si la hiérarchie le permet. Si un paramètre ne peut pas être fixé, il doit alors pouvoir l'être par l'utilisateur. Une rubrique de la structure Tzone peut contenir la liste des paramètres modifiables (drapeaux). Lors de la liaison de deux éléments entre eux, après avoir vérifié que cette liaison est possible, les informations pertinentes seront propagées à l'élément de plus faible poids (adjectif pour un nom). Lorsqu'on change une propriété d'un élément, celle-ci doit être propagée aux éléments liés de plus faible poids si elle leur est pertinentes. Composants de l'application Dans les paragraphes précédents, on a évoqué certains éléments de l'application Antibabel. Bien qu'il ne s'agit ici que de l'interface, celle-ci utilise les autres composants et il est nécessaire de les évoquer ici. Antibabel peut être décomposée ainsi : . une interface utilisateur (IUG) . un traducteur . des dictionnaires et des index des sens dans chaque langue. L'index permet de déterminer le (ou les) mot ayant un sens déterminé. Il peut aussi servir de dictionnaire des synonymes. . une (ou des) grammaire ? Comme les règles de grammaire changent d'une langue à l'autre, il est souhaitable de ne pas les programmer directement dans l'application, mais de les charger en fonction de la langue. Cela pourrait être une liste de règles interprétées, mais cela peut ralentir la traduction, ou une bibliothèque de routines, une application, etc. chargée en cours de fonctionnement. Mise en oeuvre -------------- Dans la suite, je vais décrire les solutions choisies pour la mise en oeuvre. Pour comprendre ces choix, reportez-vous aux paragraphes précédents qui expliquent les besoins et les contraintes de l'application. Actions de la souris sur les éléments - déplacement : souris déplacée avec le bouton gauche enfoncé. Le nouvel emplacement est défini par la position de la souris lorsque ce bouton est relaché. - liaison : souris déplacée avec le bouton droit enfoncé. Le lien est crée lorsque ce bouton est relaché quand la souris pointe sur un autre élément, à la condition que ce lien soit possible. - modification du mot : un double clic gauche permet de modifier le mot. - autres actions : un clic droit fait apparaitre un menu groupant toutes les actions valables pour cet élément. Ce menu apparait aussi dans le menu principal aussi il sera décrit plus loin (*** propriétés, ajouts internes, ajouts externes***). Dans le cas où la souris ne pointerait pas sur un élément au départ (abaissement du bouton), seul le clic droit est pris en compte. Le menu regroupe alors la liste des éléments que l'on peut ajouter à la phrase. Actions - menus Menu principal Il doit regrouper toutes les commandes de l'application : . Fichier : gestions des fichiers, navigation, quitter ... - nouveau document réinitialise les fichiers et la langue de rédaction - destination ouvre une traduction pour modification - source ouvre un document pour modification - traduit lit et traduit un document formaté - sauver enregistre le/les fichier(s) - sauver sous enregistre le/les fichier(s) sous le format choisi - quitter . Edition : - copier copier le mot - couper couper le mot - coller coller le mot - copier spécial copier l'élément ou la phrase - couper spécial couper l'élément ou la phrase - coller spécial coller l'élément ou la phrase - supprimer supprimer l'élément . Nouveau/élément : éléments à ajouter ***redondant avec Propriétés *** - liste de tous les éléments possibles . Propriétés : propriétés de l'élément (à modifier) ou de la phrase (menu surgissant - modifier modifier l'élément - supprimer supprimer l'élément - paramètres modifier les paramètres propre à l'élément > liste des paramètres propres - ajout interne ajout d'un élément dans le groupe local > liste des éléments pouvant être ajoutés à ce groupe - ajout externe ajout et liaison d'un élément au groupe local > liste des éléments pouvant être liés à ce groupe - sens sens du mot - fonction liste des fonction possibles de l'élément . Naviguer : naviguer parmi les phrases - nouvelle phrase créé une nouvelle phrase après la phrase courante - citation insérer une citation - insérer insérer une phrase - supprimer supprimer la phrase - phrase précédente navigation dans le fichier - phrase suivante par phrase - page précédente ou par plusieurs - page suivante phrases - liste liste des phrases - début première phrase - fin dernière phrase . Options : divers - langue de traduction parmi les dicos disponibles. S'applique à tout le fichier. - langue de l'interface parmi les traductions disponibles. - défaut langues par défaut . Aide : aide à l'utilisation du logiciel Menu surgissant . Modifier les propriétés . Ajouter un élément au groupe . Ajouter un élément lié au groupe - commandes . phrase suivante . phrase précédente . liste des phrases . traduire maintenant - liste des langues Liste toutes les langues disponibles. La sélection d'une langue lance une traduction de la phrase en cours de rédaction. - réaction d'un élément et de la zone de rédaction ***redondant*** . clic droit : menu surgissant adapté à l'élément . tirer-lacher droit : tenter de créer un lien entre deux éléments. . tirer-lacher gauche : déplacement de l'élément. Peut aussi être mis en oeuvre pour la zone de rédaction afin de faire apparaitre des éléments cachés à l'extérieur de cette zone en agissant sur les ascenseurs. . double clic gauche : modifier l'élément . (à voir) souris immobile : commentaire de l'élément. Langues Une liste dans le menu "options" permet de sélectionner la langue dans laquelle apparaissent les labels et messages de l'interface. Cette liste est indépendante du choix des autres langues et peut offrir un plus large choix. Un changement peut avoir lieu immédiatement. Tous les termes utilisés seront regroupés dans un fichier par langue et archivés dans le même ordre. Le premier terme et le nom du fichier seront le nom de la langue dans sa propre langue. On impose la contrainte que la langue de rédaction soit déterminée à la création du nouveau document (même si non conservé plus tard), ou lors de l'ouverture d'un document déjà existant. Dans les deux cas, pour changer de langue, il faut fermer le document puis en ouvrir un autre. Le document impose donc sa langue, ce qui garantie la compatibilité au sein du fichier. Si on veut insérer une citation en langue étrangère, il faut le signaler; ici, on se contentera de sélectionner la commande "insérer une citation" puis de rédiger la phrase sous sa forme linéaire. La langue de traduction est déterminée parmi les langues d'une liste surgissante. La traduction se fait lorsque cette langue change, ou sur commande. Il n'y a pas de traduction en continue pour l'instant. Dans le cas ou le langage ne distingue pas entre un changement de langue et une langue quelconque est sélectionnée, la commande "traduire maintenant" n'est pas nécessaire; en effet, il suffit alors de sélectionner la même langue pour lancer la traduction. Gestion de la zone de rédaction - Aspect des éléments La forme, la couleur et l'épaisseur du cadre de l'élément symbolise certains de des paramètres communs : . forme : nature . couleur : fonction dans la phrase . épaisseur : contenant/contenu Les formes envisagées sont le rectangle, le rectangle troncqué, l'ellipse. Les couleurs sont quelconques mais devront être bien contrastées entre elles afin de ne pas induire en erreur. Par exemple, bleu, rouge, vert, mauve, gris, etc. L'épaisseur est soit simple, un seul cadre, soit double, deux cadres enchassés. L'aspect du mot peut symboliser d'autres paramètres : gras, italique, souligné. Ces marques sont très pratiquent lorsqu'il ne s'agit que d'un paramètre de type booléen (sing/pluriel). Les informations restantes peuvent être présentées de plusieurs manières en les abréviant : - entre parenthèses, tel le sens, - à l'aide d'une bulle d'aide lorsque la souris reste sur l'élément - sous le mot, dans le même cadre, dans une écriture différente (plus petite et en italique) - la couleur et le motif de fond peuvent aussi être pris en compte. En particulier, le mot peut être écrit sous son orthographe finale (genre et nombre, temps et mode ...) et laisser l'aspect des caractères pour d'autres paramètres. Comme l'interprétation change d'un élément à l'autre, chaque code sera donné lors de la description des structures. - Liaisons Une ligne entre éléments marque une relation entre eux. Cette relation doit pouvoir être créée ou détruite. - Groupes Dans un premier temps, le positionnement des éléments entre eux est laissé au choix de l'utilisateur, à l'exception des éléments au sein d'un groupe puisqu'ils doivent tenir tous dedans. La gestion de l'affichage des éléments d'un groupe peut être le point de départ pour la gestion de l'affichage de la phrase entière. Un groupe est représenté comme un rectangle d'épaisseur double dont la couleur de cadre correspond à la fonction du groupe. Un groupe ne possède qu'un noyau. Dans un premier temps, s'il possède plusieurs adjectifs, ceux-ci ne devront pas être reliés par une conjonction de coordination. Il est préférable de se contenter d'un seul. Informations - Eléments - Structures Les déclarations des structures sont montrées ci-dessous. Les intervales de valeurs des rubriques seront indiquées dans un autre documents. Les types de données sont : - chaine une chaine de caractères - Tlien un pointeur ou un indice, selon implémentation - nbre un nombre dont la taille dépend de l'implémentation et de la fonction peu remplir le rôle de valeurs énumérées - nbres deux nombres regroupés en un - ptr un pointeur ou une liste de pointeur - bits un ensemble de drapeaux (bit) ou de petits nombres (qq bits) - drap. un drapeau : deux valeurs - ? indéterminé Quelques remarques. Certaines rubriques pourraient n'avoir que deux valeurs, mais il peut être intéressant dans l'application d'ajouter la valeur "indéterminé". Certaines remarques dans les déclarations sont en référence à l'application fournie dans le site. Certaines ne le sont pas et cette application ne les implémente pas (c'est en particulier vrai pour les pointeurs). Enfin, certaines rubriques sont propres à la grammaire française, mais on parfois un équivalent dans d'autre langues (on ~ we, vous ~ el/usted). Elle peuvent par conséquent être réutilisée. A l'inverse, d'autres rubriques devront être ajoutées au cours du développement de cette application. + Données communes : Tmot mot chaine contient le mot quand nécessaire cat chaine renseigne sur la classe de l'élément lien Tlien contient l'indice de l'élément dans cette classe l,h nbre dimensions de l'élément sens dword contient l'indice du sens dans la table des sens niv nbre niveau dans la représentation en cercle suite ptr vers l'élément suivant de même classe lié au même noyau + Données propres à l'interface : Tzone x1,y1,x2,y2 nbre limites de la zone cliquable mot Tlien l'indice de l'élément dans la phrase (utile si est un pointeur) l,h nbre les dimensions de la zone typ nbre le type de zone, pour réagir correctement à la souris (on doit pouvoir atteindre un élément dans un groupe) + Types d'éléments (tous ne sont pas encore implémentés ni même définis) * Tverbe Le verbe est le centre de la phrase, ou de la proposition. Il possède des informations sur l'action (temps, personne ...) le sujet, l'objet et les conditions de l'action. mot ptr l'élément dans la liste d'éléments (=phrase ?) temps nbre situe l'action par rapport à l'instant où l'on parle (cf mode) aspect nbre marque une liaison étroite avec le moment où l'on parle. En français il y a une marque passé (p. composé) et futur (aller au futur + infinitif), les autres se confondent avec le temps mode nbre forme du verbe, dépend du temps pers nbres indique le nombre et la relation à celui qui parle type bits rassemble : transitivif, réfléchit ... neg nbre indique la négation (pas, plus, aucun ...) etat drap. mis si c'est un verbe d'état (dans type ?) passif drap. mis à la voix passive (dans type ?) copule ? notion liée aux verbes d'état et aux groupes verbaux sujet ptr le GN sujet cpt ptr les compléments du verbe (ou GV) genre nbre en complément à "pers". Utile pour l'accord du participe. * TNom Le nom est habituellement le centre du groupe nominal (GN). Il possède des informations liées à l'accord (genre et nombre) et d'autre liées aux autres éléments du GN (adjectif, déterminant ...) mot ptr l'élément dans la liste d'éléments (=phrase ?) genre nbre indique le genre du nom nombre nb/drap indique le nombre du nom det ptr le(s) déterminant(s) du nom adj ptr le(s) adjectif(s) du nom cpt ptr le(s) complément(s) du nom cat bits rassemble : propre/commun, animé ou non, marque du pluriel ... GN ptr le GN contenant ce nom. suite ptr vers le prochain nom du GN (non utilisé) * TDet mot ptr l'élément dans la liste d'éléments (=phrase ?) genre et nombre voir nom type nbre type du déterminant (ex : ...) poss nbre marque de personne pour l'adjectif possessif neg drap. déterminant négatif nécessitant la négation ne. ens drap. catégorie à laquelle appartient le déterminant art/poss/dém ou adj/n.card/int/excl def drap. autre catégorie : défini/indéfini nom ptr le nom déterminé (les noms ?) * TAdj mot ptr l'élément dans la liste d'éléments (=phrase ?) fonct nbre la fonction de l'adjectif : att sujet, att cod, épithète, apposé genre et nombre voir nom type bits indicateurs : type d'épithète, invariance, adjectif simple ou composé cpl ptr un GN complément de l'adj. apposé (non utilisé) (*) nom ptr le nom ou pronom qualifié GN ptr le cod qualifié par l'attribut (*) degre ptr un comparatif ou superlatif accord drap. indique si l'adjectif s'accorde. En double emploi. (*) Dans la version présentée sur le site, cpl et GN ne sont pas correctement implémentés à l'heure actuelle. GN pointe parfois sur le GN contenant l'adjectif. * TAdv mot ptr voir plus haut mod ptr l'élément modifié type nbre indique la nature de l'élément modifié. renvoi drap. indique le renvoi après l'adj qualificatif cat nbre ? classement sémantique de l'adverbe * Tprep mot comme d'habitude fonct nbre la fonction du GN lié dans la phrase : type de cpl. circ. des ptr l'élément auquel se rapporte le GN (désigné) lie ptr l'élément (GN) qualifiant (le complément du désigné) sens nbre le sens de la préposition. Proche de la fonction loc drap. mis si la préposition est un mot simple, éteind si c'est une locution prépositionnelle * Tpronom pers nbre indique la personne et le nombre genre nbre indique le genre du pronom fonct nbre indique la fonction du pronom accent drap. mis s'il y a accentuation formel drap. mis si le pronom 'vous' a un sens formel on drap. mis si le pronom est 'on' sens nbre le sens du pronom (typique de 'on') * Tdeg mot voir plus haut. adj ptr l'adjectif comparé type nbre indique s'il s'agit d'un comparatif de supériorité, d'infériorité ou d'égalité, ou d'un superlatif relatif ou absolu. comp ptr le comparant qui peut être un GN ou un adj (*) place drap. mis si le comparant est situé avant l'adjectif sup ptr un superlatif irrégulier (non utilisé) * TGN mot voir plus haut noyau ptr un nom ou un verbe det ptr le(s) déterminant(s) du nom adj ptr le(s) adjectif(s) du GN cpt ptr le(s) complément(s) du nom du GN prop ptr une proposition subordonnée relative ou un GN en d'apposition (qui pourrait être remplacé par une prop. sub. ) fonct nbre indique la fonction du GN suiv ptr vers le GN suivant lié par une conjonction de coordination (non utilisé) prep ptr la préposition Conclusion ---------- Ce document n'est encore qu'à l'état de brouillon et demande des compléments et des retouches. D'autres documents seront joints ultérieurement pour décrire certains thèmes de façon plus approfondie. Néanmoins, je le rends dès maintenant disponible afin que toute personne intéréssée puisse travailler à l'amélioration de cette application et de sa documentation.