Carnet Wiki

Multilinguisme

Version 1 — June 2006 — Dan Hetzel — Version initiale

FAQ Multilinguisme

Où trouver la documentation officielle du multilinguisme?

— http://www.spip.net/fr_article2124.html
— http://www.spip.net/fr_article2128.html

Comment activer le multilinguisme sur mon site ?

Lire l’article http://www.spip-contrib.net/article...

[Error...7]Comment passer la langue dans l’URL ?

[Error...9]Tu peux passer le critère lang dans les urls à la main, mais si tu règles $forcer_lang à true dans mes_options.php3, alors SPIP le fera
pour toi. Il passera la langue choisie par l’utilisateur avec #MENU_LANG.

Si tu utilises la version 1.7.1, il faut aussi mettre !lang_select en critère de chacune de tes boucles.
A partir de la 1.7.2, ce n’est plus necessaire.

Tu peux aussi faire des boucles qui listent les articles(ou rubriques) seulement dans une langue, en utilisant le critère lang dans les boucles. Elles seront alors filtrées avec la langue passée dans l’url.

Si tu veux que ton site soit encore plus dynamique tu peux utiliser le critère lang?, alors les boucles seront filtrées s’il y a la
variable lang dans l’url, sinon elles afficheront tout le contenu.

Comment accéder à la langue en cours dans un filtre perso ?

[Error...15][Error...16]c’est <?php echo lire_meta('langue_site'); ?>

Contexte, boucle et changement de langue courante

[Error...19][Error...20]A quoi sert $forcer_lang=true ?

[Error...22][Error...23]$forcer_lang=true et Inclusion de code (INCLURE)

[Error...25][Error...26] multilinguisme : $forcer_lang=true et #MENU_LANG

[Error...28][Error...29][Error...30] Mots-clés et multilinguisme
Voir par exemple MultiLinguismeExemple1, site test bilingue 1.7.2 (http://franck.saintgermain.free.fr) où les mots clés et les articles correspondants sont affichés dans la langue choisie par le visiteur.
Les squelettes utilisés sont disponibles dans le répertoire : http://franck.saintgermain.free.fr/...
Voir aussi la VariantePour3langues de cet exemple, avec mots-clés, qui utilisent les mêmes squelettes et le même ensemble d’articles (et de mots-clés) pour tester le fonctionnement

[Error...32]

<BOUCLE_principale(ARTICLES){id_article}>
    <BOUCLE_artmots(ARTICLES){traduction}{origine_traduction}{lang_select=non}>
        <BOUCLE_mots(MOTS){id_article}>
            #TITRE
        </BOUCLE_mots>
    </BOUCLE_artmots>
</BOUCLE_principale>

[Error...34]La combinaison des critères {traduction}{origine_traduction} {lang_select=non} permet donc de sélectionner les articles originaux, et de ne pas utiliser leur langue.

La boucle(MOTS) suivante permet donc de trouver les mots clés de chaque article, et de les afficher dans la langue de l’article en cours d’affichage (et non dans la langue originale). (on suppose bien sûr que les mots clés ont été décrits en plusieurs langues grâce aux blocs multi).

Cette imbrication de boucles permet donc d’afficher la liste de tous les mots clés utilisés dans les articles originaux, traduits dans la langue de l’article affiché.
En principe, puisque cela ne fonctionne pas sur la 1.7.2. Mais cela fonctionne sur la version Spip CVS, selon Fil.
J’en confirme le bon fonctionnement sur la CVS du 13/12/04


variante
Comment faire bénéficier une traduction des mots-clé de l’article original ?
mais avec lien sur le mot dans la langue de l’article courant
Votre site est multilingue, vous utilisez pour vos articles traduits les mot-clefs de l’article “de référence”

[Error...39][Error...40]_ Et pour que cette boucle renvoie vers le mot-clef mais dans la langue de l’article (en anglais si votre article est anglais) :

en début de votre page html, juste au-dessous de la ligne <html lang="#LANG">
ajouter :
<?php $lalangue = '[(#LANG)]'; ?>

[Error...43][Error...44][Error...45]la boucle articles_selection_mot appelle tous les articles “d’origine” liés à ce mot, et la boucle articles_langue demande d’en afficher les traductions qui correspondent à la langue passée dans l’url.

rappels :
-  Avec cette série de boucles, nous n’avons affecté des mot-clefs qu’aux articles d’origine, les articles traduits n’en ont “en réel” aucun.
-  Il est absolument indispensable pour que ces boucles fonctionnent, pour chaque article, de ne pas oublier de spécifier le n° de l’article d’origine dans le cadre “LANGUE ET TRADUCTIONS DE L’ARTICLE” de l’espace privé au moment de la validation de l’article.

par Soÿ le 7/06/04


Comment utiliser les critères {traduction} et {origine_traduction} ?

[Error...51]En résumé : le critère {traduction} permet de sélectionner les articles qui ont OU sont une traduction.
Le critère {origine_traduction} permet de sélectionner les articles qui sont des originaux (à l’origine)
Combiner ces deux critères {traduction}{origine_traduction} sélectionne donc les articles originaux (“de référence” selon la terminologie utilisée dans Spip).
Et l’ajout de {exclus} exclut du résultat l’article déjà affiché.

Complément d’info qui peut aider à comprendre le fonctionnement : les articles qui ont ou sont une traduction sont repérés comme faisant partie d’un “groupe de traduction”. (analogie avec les mots-clés et les groupes de mots-clés)

[Error...54][Error...55]Insérer dans votre boucle d’article le code suivant :

[Error...57]Comment faire une page d’accueil dynamique?

[Error...59]Peut-on utiliser la langue des auteurs?

Lorsqu’un auteur a choisi sa langue dans l’espace privé, on peut vouloir utiliser cette donnée pour afficher sa page auteur.php3?id_auteur=xx dans la langue en question. Par défaut, ce n’est pas le cas: la boucle AUTEURS ne modifie pas la langue du contexte. On peut inverser cela en ajoutant le critère {lang_select} ou {lang_select=oui} dans la boucle.

Comment fait le site www.spip.net pour avoir ces URLs contenant la langue ?

— On utilise un fichier inc-urls.php3 particulier, www.spip.net/inc-urls-spipnet.php3.

Des infos de synthèse (voir à la fin de cette page) : DocMulti

[Error...65]On crée le fichier lang/perso.php3 dans lequel on associe à chaque clé ses différentes traductions.
Exemple, si la chaine clé “login_login2” doit être traduite par “Give me your ID” en Anglais et par “C’est quoi ton blaze” en Français,
on trouvera dans ce fichier :

$GLOBALS[“i18n_spip_en”][’login_login2’] = “Give me your ID:”;
$GLOBALS[“i18n_spip_fr”][’login_login2’] = “C’est quoi ton blaze:”;

[Error...68]Mise à jour : Il s’agit alors de créer des fichiers de langue personnels, sur le modèle des fichiers public.... Pour créer ses propres fichiers, on installera, dans votre répertoire de squelette ou dans le répertoire /ecrire/lang :

— local_fr.php3 pour définir les chaînes en français,
— local_en.php3 en anglais,
— ... (extrait de http://www.spip.net/fr_article2128.html)

Moteur de recherche et Multilinguisme

— La partie indexation des articles peut varier selon la langue de l’article considéré : voir par exemple http://www.spip.net/fr_article2102.html pour l’indexation de l’allemand et du vietnamien.

[Error...73]----

Utiliser {lang?} pour lister les résultats d’une recherche

Paolo: Sur notre site (test), lorsque le visiteur utilise ce formulaire de recherche

[Error...77]La ligne <input type='hidden' name='lang' value='#LANG'>
insère la valeur de la langue en cours dans l’URL quand le formulaire est déclenché.

[Error...79][Error...80]

<a name='formulaire_recherche'></a>
<form action='t_recherche.php3' method='get' name='form_rech'>
<input type='text' name='recherche' value="&nbsp;<:search:>" size='20' onClick="this.value=''">
</form>

[Error...82][Error...83][Error...84]Notes
-  Dans la page, en-dehors de toute boucle, il est toujours possible d’utiliser la balise #LANG; par exemple: <html lang="#LANG">. Si {lang} n’a pas été passé dans l’URL, #LANG prendra la valeur de la langue principale du site;
-  De la même façon, il est possible d’utiliser les textes <: xxx :>;

Encore une chose:

Je veux encore pouvoir placer le formulaire de recherche sur la page qui affiche les résultats - le visiteur va vouloir peut-être refaire une autre recherche.

Problème: je ne sais pas d’avance si la page résultats est en “mode monolingue” ou “mode multilingue”. Le formulaire suivant a l’air de marcher. La ligne qui placera lang=… est inclus dans le formulaire seulement si la page a été appelé dans une langue particulière au départ.

[Error...89](testé avec Spip 1.7.2)


[Error...92]_



  - (#LANG    - (#LANG 



[Error...95][Error...96][Error...97][Error...98][Error...99]Dans l’aide en ligne pour les rédacteurs , il n’y a aucune explication de la traduction

voici un brouillon, MultilinguismeExplicationRedacteur


lire aussi