Joel HATSCH wrote:
Bonsoir,
j'ai installe la 1.7.2 et j'essaie de me depatouiller avec le
multilinguisme.
mon site devra gerer 3 langues en //. la langue principale sera le
franacis, langue dans laquelle seront ecrits la plupart des articles.
Dans les autres 2 langues (de, en), seulement certains articles seront
traduits (cad certaines rubriques ne seront pas traduites du tout).
J'ai lu les articles 2124 et 2128 de spip.net, ainsi que le wiki
multilinguisme, mais il me semble que dans chacun des cas, les auteurs
changent de sujet des qu'il s'agit de devenir concret quand a
l'implementation :-(((
Dans les articles sus-cites, 2 concepts differents sont abordes :
1) mettre toutes les traductions dans la meme rubrique
c'est ce que je fais (j'ai écrit un des exemples sur le wiki) sur le site 6v8.gamboni.org
mais cette méthode est pas vraiment prévue dans spip et s'apparente plus de la bidouille si on ne sait pas vraiment ce qu'on fait.
2) faire une hierarchie parallele, avec un secteur par langue.
ça c'est ce qui est fait par spip.net par exemple. Tres facile à implementer avec spip.
Si je fais 2), mis a part les problemes avec les breves,
le seul moyen de traduire les brêves, c'est les balises multi, où d'essayer d'en faire une partie dans chaque secteur (traduction gérée à la main). Sinon, tu peux faire une boucle compliqué qui récupère les breves dans tous les articles et affiches celles qui ont une traduction comme il faut.
je ne peux pas
reutiliser les squelettes, puisqu'ils sont specifiques a une rubrique
(et j'en ai 3, une par langue). Donc je perds le principe "un squelette
multilingue pour tous", a moins de copier a chaque fois les squelettes
de fr vers de et en (pas marrant a force)
Mais pourquoi donc? il y a le paramêtre {lang} ou {?lang} dans chaque boucle qui te permet de faire un seul squelette par langue, ainsi que les balises <:blabla:>. Voir par exemple une discution là dessus sur cette même liste:
"une adaptation du menu dynamique et contextuel au multilinguisme"
(cherche dans les archives, il n'y a pas 1 pointeur unique que je puisse cité)
Quelle partie est dépendant de la langue dans ton squelette exactement? si tu expliquais plus précisément, on pourrait peut être aider.
Si je fais 1) j'ai le probleme que le #TEXTE de ma rubrique n'est pas
traduit
Alors là il faut utiliser à outrance les balises multi.
, et que si je navigue en allemand, certaines rubriques seront
vides (pas de traductions),
alors que 3 sous-rubriques plus profond se
trouve un article traduit... pas top niveau navigation !
là je ne comprend pas pourquoi? c'est justement le but de la méthode 1), ne jamais avoir de rubriques "vide". On affiche, s'il n'y a pas de traduction, la langue par défaut
En plus, le choix de la langue se fait par le #MENU_LANG, ce qui a pour
effet de rajouter un &lang=... dans l'URL de la page.
Et la, du coup, rien ne va plus ! spip semble chercher un autre
squelette, ne le trouve pas, et prend donc le article-dist.html, meme si
e lang=fr et que l'article a pour langue fr :-((
Je sais qu'il y avait un bug avec la 1.7.2 qui faisait que si la langue était passée dans l'url, les squlettes article-14.html (avec le numeros de la rubrique) étaient courcircuités, mais je pense qu'il a été corrigé dans cette version. Enfin, tu as dis plus haut ne pas vouloir de squlette spécifique au langues, non?
Dans tous les cas, si le bug subsite, il faudrait que tu le décrives un peu mieux.
D'ailleurs je ne comprends pas tres bien en quoi id_article=251&lang=de
devrait me faire afficher l'article 252 qui est la traduction en
allemand de l'article 251 qui est lui en Francais. Dans la pratique
cette manip a plus pour effet de me basculer mes textes <multi> dans la
langue souhaitee, mais ca s'arrete la.
ce n'est pas le cas. id_article=251&lang=de (dans la méthode 1) que je décris) affiche le texte dans la langue de l'article 251 et les chaînes localisé (<:blabl:>) ansi que les textes entre balises <multi> dans la langue donnée dans l'url. On peut alors juste montrer qu'il existe une traduction dans la langue de l'utilisateur (fait des essais sur 6v8 pour voir)
J'en conclus donc qu'il y a 2 multilinguismes :
- celui qui concerne les articles et leur traductions
ça c'est spip qui gère, tu n'as donc pas de choix.
- celui qui concerne la page affichant l'article et les bouts de texte
qu'elle contient.
Evidemment, il y a plusieurs façon de faire son squelette. A la base, ça se résume comme cela (IMHO):
1:
- les traductions ne sont pas séparées par secteurs, les textes des rubriques et brêves sont géré par multi,
- la langue est choisie par #MENU_LANG et passée dans l'url grâce à $forcer_lang=true,
- avec des boucles et du php (voir "liste d'articles" ici: http://www.spip-contrib.net/spikini/index.php?wiki=MultilinguismeExemple4), on "mélange" les langues:
* si une traduction existe on l'affiche,
* sinon on affiche la langue par défaut.
- la page d'article affiche l'article choisi et donne un lien vers la traduction dans la langue de l'utilisateur
2:
- les traductions sont séparées par secteurs (rubrique à la racine) de langue. On a ainsi une duplication en N langues de la structure du site en dessous des secteurs,
- la langue est choisie par la selection du secteur. Elle est donc passée au boucle grâce au contexte des boucles englobantes.
- les boucles n'affichent que les articles d'une rubrique, donc, pas de mélange de langue, si la rubrique A en français contient 10 articles, mais la rubrique A allemande est vide, alors il n'y aura aucun articles affichés pour les allemands (http://raforum.apinc.org s'arrange tout de même pour afficher la liste d'autre langue, voir le wiki)
- la page de l'article 251 en français affiche le texte + les localisations + les balise multi en francais. Et la traduction de l'article 251 en allemand affiche le texte + les localisations + les balise multi en allemand
Et j'avoue que je suis un peu perdu entre les deux et la maniere
d'ecrire les boucles ...
Ce que je voudrais :
- un site fr, un site de, un site en, chacun browsable a part.
voir discution citée plus haut, squelettes de spip.net et bien d'autre
- pour chaque article, des liens vers les traductions (ca j'ai trouve
sur spip-contrib, avec le spetits drapeaux)
<BOUCLE_trad(ARTICLES){traductions}>
#TITRE
</BOUCLE_trad>
devrait suffire 
- une structure de preference avec tout dans la meme rubrique pour
retrouver mes petits plus facilement.
ça c'est une question de goût. mais il faudra alors utilisé la méthode 1)
Quelqu'un aurait-il une bonne adresse ou tout ca est documente, ou alors
de squelettes implementant ces fonctionnalites ?
http://6v8.gamboni.org/article.php?id_article=45
fournis les squelettes pour la méthode 1) par exemple. (si tu les tests sur la 1.7.2, ça m'interesse)
Merci & bonne nuit
fait de beaux rêves dans toutes les langues 
Joel
PS : quid de la 1.8 evoque dans certains articles ? c'est la CVS ou bien
la zone de download n'est pas a jour ???
PS: C'est la version en developpement sur le cvs. Elle apporte beaucoup, mais pas "tant" que ça sur le côté multilingue je pense. On s'y référe souvent par son nom plus officiel: 1.8a3cvs pour ne pas embrouiller tout le monde. Va voir sur spip-contrib, c'est la version qu'ils utilisent (sur 6v8 aussi, mais tu peux pas voir l'interface privée).
Pierre
--
Andrews Pierre
pierre.andrews@epfl.ch
Eng. Computer Science
Swiss Federal Institute of Technology (EPFL)
http://6v8.gamboni.org