! [spip-dev] [spip-trad] Le principe des "modules" de traduction

Salut,

Puisque Peggy demande quelques précisions, je suppose que c'est pas inutile de faire une petite explication. Parce que le principe des "modules" n'a effectivement rien d'évident.

-> La principale difficulté à laquelle on se retrouve lorsqu'on fait les squelettes d'un site multilingue, c'est la présence de "mots" qu'on a l'habitude d'ajouter "à la main" pour indiquer les principes de navigation dans le site. (Les autres éléments du multilinguisme reposent sur les automatismes fournis par SPIP: traduction des dates, traduction des formulaires...)

Par exemple, quand on fait ses squelettes, on y insÚre "à la main" des phrases explicatives, du genre: "Afficher le plan du site", "Derniers articles publiés", "Les brÚves", "Les articles de la même rubrique", "Articles du même auteur"... Parce que sinon, évidemment, on n'aurait que des listes d'articles sans que le visiteur sache à quoi cela correspond. Tant que le site est dans une seule langue, c'est facile.

Mais si le site est en plusieurs langues, on est coincé: il faudrait faire un squelette spécifique pour chaque langue, uniquement pour que "Les articles de la même rubrique", dans la partie en anglais, soit affiché "Latest articles of ze section". Idem pour les autres langues. C'est rapidement ingérable, et cela implique de faire des squelettes séparés alors que seuls de petits éléments textuels sont à modifier.

Donc SPIP propose un autre systÚme, basé sur des "modules" de traduction: plutot que d'insérer à la main dans différents squelettes les diverses traduction de la phrase "Les articles de la même rubrique", je décide que cette phrase porte le nom "articles_meme_rubrique". Dans mon squelette, à l'endroit où, habituellement, j'aurais insérée la phrase en toutes lettres, j'insÚre désormais:
<:articles_meme_rubrique:>
Et dans un fichier spécifique, j'indique la signification de cette chaîne en français, dans un autre fichier, j'indique sa signification en anglais, etc. Idéalement, in fine, SPIP propose une interface specifique qui permet aux participants du site (admins parlant plusieurs langues) de réaliser les différentes traductions; pour l'heure, il est nécessaire de passer par la création de fichiers PHP dans un format trÚs spécifique, ça n'est pas ultra-simple; à terme, l'idée est qu'il ne sera pas nécessaire d'aller bidouiller des fichiers, mais d'utiliser une interface graphique dans SPIP.

-> Dans un deuxiÚme temps, ce principe de modules de traduction, qui permettent de faire un squelette unique qui s'affiche correctement dans toutes les langues, bute encore sur quelques difficultés:

     A. Si je dois réaliser l'interface d'un site multilingue allemand, anglais, espagnol, français, italien, je vais perdre beaucoup de temps à créer le module en français (voire commencer celui en anglais) et à attendre que des bonnes volontés effectuent les traductions pour l'espagnol, l'italien et l'allemand. Et si un jour le site ajoute des articles en arabe, il y a encore du boulot en plus.

     B. Il y a le problÚme des squelettes qu'on s'échange (sans parler des squelettes fournis directement avec SPIP). Il serait particuliÚrement pratique que ces squelettes ne soient plus liés à une seule langue. De cette façon, si un graphiste allemand fournit des jolis squelettes, l'idéal est que je puisse directement les récupérer sur mon site en arabe et qu'ils fonctionnent immédiatement sans que j'ai à traduire tous les éléments de texte. Ce qui nous ramÚne au principe des modules: il faudrait que le graphisme allemand fournisse les fichiers de traduction des élements textuels de ses squelettes. Evidemment, on peut attendre longtemps...

La solution consiste, du cÎté de SPIP, à fournir à tout le monde un module "standard" de chaînes utilisées habituellement sur les sites Web. Et que ce module soit traduit, dans le plus grand nombre de langues possible, par les traducteurs de SPIP. De cette façon, le webmestre n'a pas à savoir comment on dit "Articles de la même rubrique" en arabe et en italien: SPIP lui fournit déjà les traductions.

Pour reprendre les deux difficultés A et B, cela se résoud ainsi:

     A. Pour le site de mon association internationale, je me contente d'utiliser les phrases déjà traduites d'origine avec SPIP. Là où j'ai besoin d'afficher "Articles de la même rubrique", j'insÚre dans le squelette: <:articles_meme_rubrique:>. DÚs qu'on active les parties du site dans n'importe quelle langue, cette phrase s'affiche avec la bonne traduction, qui a déjà été réalisée, en amont, par les traducteurs de SPIP. Je gagne un temps fou, et je ne suis pas dépendant d'un gentil contributeur allemand qui, malgré sa bonne volonté, fait encore plus de fautes d'orthographe que moi.

     B. Je distribue un squelette que les gens peuvent récupérer sur leur propre site. Là encore, je n'ai plus besoin de fournir des traductions, et/ou eux n'ont pas besoin de modifier les squelettes dans leur propre langue. J'insÚre <:articles_meme_rubrique:> dans mon squelette, que j'ai personnellement l'habitude d'utiliser sur un site en français; le webmeste qui installe mon squelette sur son site en serbo-croate, sans aucune modification, il aura les éléments de navigation de son site public directement affichés en serbo-croate (parce que le travail de traduction a été réalisé en amont par les équipes de traduction de SPIP).

Voilà ...

Amicalement,
ARNO*

Salut à tou-te-s,
  

Mais si le site est en plusieurs langues, on est coincé: il faudrait
faire un squelette spécifique pour chaque langue, uniquement pour
que "Les articles de la même rubrique", dans la partie en anglais,
soit affiché

Je rebondis là dessus et sur vos discussions il y a quelques jours au sujet du
degré d'abstraction supplémentaire, qui est en effet une difficulté potentielle
pour le webmestre/spipeur débutant.

Qu'il faut internationaliser les squelettes par défaut, je suis absolument
d'accord, mais :
Pourquoi pas faire un jeu de squelettes par langue?

Quitte à automatiser la production de ces squelettes et, en effet, à traduire
les chaînes dans le traduteur de modules (made in Florent, si je comprends
bien), mais pour ce qui est du livrable, un bon vieux jeu de squelettes spip
habituel pour chaque langue.

Il y a déjà le mécanisme de squelette par langues: article.es.html,
rublrique-dist.ar.html, etc. qui, si je comprends bien, permet à spip de choisir
le squelette qpproprié contextuellement.
Ce mécanisme a le grand avantage d'être de la même trempe que ce qui se fait
déjà pour l'arborescence de rubriques (article=56.html, rubrique-3.html, etc)

Pour l'automatisation, sur la liste spip-es Vicente racontait (cf:
Discuter chez rezo.net) comment il a
utilisé WML (pas Wireless Markup Language, mais http://thewml.org) pour
développer des 'plantillas' (modèles, 'templates') à partir desquelles il
discrimine en fonction de la langue.
Cela fait une sorte de "meta squelette", à partir desquels, en utilisant les
chaines traduites en différentes langues, on construit chaque jeu de squelettes
par langue.

Dans ces meta-squelettes, si la syntaxe est un peu plus complexe ce n'est pas si
grave.

Un point tout de même: le(s) nouveau(x) jeux de squelettes par défaut (et les
meta-squelettes) devraient utiliser largement la fonction <INCLURE>, pour toutes
les parties 'muettes' des squelettes.

Après, c'est un problème de distribution, et de toute manières, squelettes ou
pas, la maîtrise de la taille des archives de distribution av ec le multilingue
est en soi un sujet à traiter.

A la limite, on pourrait distribuer les deux: les jeux de squelettes classiques
par langue, et les meta-squelette avec les outils de construtcion des squelettes.

voilà. A+,

daniel

--
Daniel
dani@belvil.net

Qu'il faut internationaliser les squelettes par défaut, je suis absolument
d'accord, mais :
Pourquoi pas faire un jeu de squelettes par langue?

Pour ne pas alourdir l'archive de base : et il faut quand même que celui qui
débarque dans SPIP comprenne un peu de quoi il s'agit. Par contre, il
devrait être possible (si quelqu'un s'y colle) de faire un script qui
produit automatiquement les squelettes "dé-multilinguisés" dans les archives
dites "monolingues".

-- Fil