! [spip-dev] un peu plus de multilinguisme

Coucou,

je viens d'entrer dans la CVS un nouveau mécanisme de multilinguisme, qui
permet d'en glisser partout où il n'y en a pas à l'heure actuelle, et surtout
où il serait très lourd d'en ajouter à la façon des articles - notamment
dans les fiches auteur ou dans les mots-clés (pour les rubriques, ça se
discute, mais voyez plutôt...).

L'idée est la suivante : lorsqu'un texte quelconque est "nettoyé" pour être
affiché, il est d'abord filtré, *partout dans SPIP*, par un script qui
recherche tous les "blocs multis", et qui récupère dans chacun de ces blocs
la chaîne correspondant à la langue courante (langue du contexte, dans
l'espace public, langue de l'interface, dans l'espace privé).

Un "bloc multi", c'est simplement un morceau de texte encadré par
<multi>...</multi> ; ce bloc peut contenir des séparateurs de langue sous la
forme [xx]. Le plus simple est de donner des exemples :

Whaou, éptant...

Cependant, la syntaxe me fait un poil tiquer... :slight_smile:

=> D'abord, "fermer les balises" serait mieux. Les raccourcis SPIP étant en fait un système de balises, il faudrait vraiment vraiment mieux conserver l'habitude de fermer les balises. En plus, en cas de traitement spécifique par la suite, ça sera certainement plus simple à utiliser (rechercher un code "<en>...</en>" est très simple; rechercher "<en>...n'importe quoi pour finir" est moins fastoche).

=> Dans l'idée des balises, rester dans l'habitude des raccourcis spécifiques de SPIP, et utiliser donc des balises façon XML (ou HTML), avec des chevrons et non des crochets. Surtout que les crochets, c'est potentiellement utilisé dans un texte sans encodage spécifique (alors que "<" et ">", dans un éditeur wysiwyg, ça deviendra "&lt;", "&gt;".

=> De plus, le principe de texte "par défaut" m'apparaît très peu pratique et incomplet:
      - d'un point de vue mnémotechnique, l'idée que le premier texte est celui par défaut est bizarre;
      - on peut très bien imaginer des cas où l'on ne veut pas afficher du tout de texte parce qu'on est déjà dans la langue qui va bien...

Je propose donc une règle différente: le texte par défaut est indiqué directement sans spécification de langue à l'intérieur de <multi></multi>.

Ces trois remarques ensemble, cela donne la syntaxe:

<multi>
      Texte par défaut
      <en>En anglais</en>
      <fr>En français</fr>
</multi>

De cette façon, on a:
      - une structure typée XML, classique à traiter, cohérente pour la mémorisation,
      - l'identification nette d'un texte par défaut (ou de son absence si on ne veut rien afficher).

=> Par ailleurs, je n'ai pas regardé, mais il serait très intéressant de traiter selon la langue:
      - règles typographiques de la langue,
      - direction de la langue.

=> Par ailleurs, je n'ai pas regardé, mais il serait très intéressant de
traiter selon la langue:
     - règles typographiques de la langue,
     - direction de la langue.

A priori non, car le multi sera pris dans un flux de sa propre langue.

Le cas difficile c'est quand la langue demandée n'est pas présente dans le
multi, et que la langue par défaut est dans l'autre sens. Mais comme le bloc
multi ne sait pas quelle est la langue par défaut (surtout avec ta nouvelle
syntaxe !)... D'un autre côté, c'est pas trop la peine de finasser sur cette
question, car si on veut un truc parfait on tapera la bonne traduction, ce
qui réglera le problème !

-- Fil