SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Multilinguisme > Structures de site multilingue

Liste multilingue d’articles

samedi 7 janvier 2006, par dani. Dernier ajout samedi 24 mars 2007


Boucles pour un site multilingue, mais sans multilinguisme structuré a priori.


Le contexte tour de Babel et langue de référence

Les boucles présentées ont été conçues pour un site multilingue, mais sans multilinguisme structuré a priori. Les traductions et articles en différentes langues peuvent être un peu partout. Plutôt tour de Babel, donc.

Néanmoins, le visiteur qui arrive peut exprimer sa langue de préférence. Spip, alors, essayera autant que possible de lui montrer le site dans la langue choisie. Outre l’utilisation des techniques habituelles intrinsèques à SPIP (blocs <multi>, <:chaines:> d’internationalisations, ...) on utilise ici la traduction d’articles pour sélectionner dans une liste d’articles autant que possible, la version dans la langue de préférence.

Mais puisqu’on est dans une tour de Babel il est fort possible que bon nombre d’articles ne soient pas dans la langue de préférence, et aussi que notre visiteur soit un peu polyglotte. Ainsi, si un article n’existe pas dans la langue du visiteur, SPIP montrera la langue de référence de l’article.

La suite de boucles ci-dessous affiche les dix derniers si possible dans la langue du contexte où elles sont appelées, tel que décrit ci-dessus. On peut voir le fonctionnement d’une boucle de ce type dans mon site http://abuelo.belvil.net/.

Le code

Il vous faudra mettre un code comme le suivant à l’endroit où vous voulez voir la liste d’articles.

Pour finir l’exemple

Essayez simplement cette boucle dans un squelettes basique de sommaire, sans la mettre dans une autre boucle.

Techniquement, c’est mieux de configurer notre site avec la variable $forcer_lang = true; dans mes_options.php3.

Pour que le visiteur puisse exprimer sa langue de préférence, on mettra une balsie #MENU_LANG un peu n’importe où sur la page.

Dans le squelette article_une.html on mettra ce que l’on souhaite pour les élements de la liste. Par exemple :

Ainsi, quoi qu’il en soit, on construira des liens vers toutes les traductions d’un article.

Explication de l’idée de développement

Comme dans beaucoup de cas pour appliquer des critères de sélection avec des relations logiques complexes, on utilisera avantageusement les critères {doublons} et {exclus} : on fait une première série de boucles sans rien afficher, seulement pour exclure ce qu’on ne souhaite pas afficher.

On tirera profit du nouveau paramètre optionnel pour faire des {doublons} « nommés », permettant de constituer plusieurs listes de résultats à exclure ailleurs.

On va donc d’abord sélectionner les 10 les plus récents articles dans la langue préférée [1]. Disons que la langue préférée est l’espagnol. On va exclure les traductions de ces articles en d’autres langues. On constituera deux fois cette liste d’exclusions (pour l’utiliser deux fois : trad_lang_pref et trad_lang_pref2).

En utilisant une première fois l’exclusion ci-dessus, on selectionnera les 10 articles les plus récents dans d’autres langues que l’espagnol. Et on ira examiner l’existence de traductions de ces articles en espagnol pour constituer une troisième liste d’exclusions (trad_lang_autres) :
- si l’article est traduit en espagnol on excluera toutes ses traductions,
- si l’article n’existe pas en espagnol alors on excluera toutes ses traductions, sauf l’article de référence (seul ou origine des traductions).

On fera ensuite une sélection qui sera celle des dix articles les plus récents sauf ceux de l’union de la première exclusion (trad_lang_pref) et de cette troisième (trad_lang_autres). Cela devrait devrait nous choisir, dans l’ordre anté-chronologique, dix articles parmis l’union des 10 articles les plus récents en espagnol et les dix les plus récents dans les autres langues (qui peuvent être ou non traduits en espagnol).

Après, pour chacun de ces articles, on l’affiche en espagnol s’il est disponible, et sinon dans la langue de l’article d’origine. Et dans le squelette inclus, on fait affiche toutes les autres traductions.

Notes

[1] en fait la langue du contexte. hors toute autre boucle il s’agit de la langue choisie dans l’URL ou à défaut la langue principale du site.


Répondre à cet article

  • Liste multilingue d’articles

    23 février 2007 17:42, par Hugues

    Je voudrais utiliser votre contrib pour réaliser un menu qui contient tous les articles de la rubrique, p.ex.

    - first
    - second
    - third

    Supposons qu’il y a aussi primo et premier (traductions de first), et qu’il n’y a pas de traductions de second et third.

    Si le visiteur choisit ’primo’ comme version de l’article, je voudrais que le menu change en

    - primo
    - second
    - third

    Est-ce possible ? Comment faire avec spip 1.9.1 ?

    Merci.

    Répondre à ce message

    Retour au début des forums



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et fonctionnement SPIP-Contrib | SPIP | L'autre.net