SPIP Forums

[ar] [ca] [cpf] [de] [en] [es] [fr] [it]

Ce forum d’entraide est recommandé pour les utilisateurs et utilisatrices occasionnels de SPIP (système de publication pour l’Internet). Avant de poser une question, faites une recherche sur ce site, consultez les liens utiles. Si vous ne trouvez pas de réponse, postez votre message dans la rubrique appropriée, avec un titre explicite.


Accueil du site> Forums de discussion >  Création de squelettes > [multilinguisme] gerer la traduction du nom des rubriques

[multilinguisme] gerer la traduction du nom des rubriques

4 mai 2004 18:31 - Réponse(s) : 9

Bonjour,

Je voudrais faire un site multilingue francais anglais et je me pose quelques questions. J’ai analysé la methode "creation de squelettes -en ...Etc", mais je ne crois pas que cela va resoudre mon probleme : En effet, dans mon site, le menu est generé à partir des noms des rubriques de mon site SPIP. aussi, le squelette en anglais va continuer à afficher ces noms de rubriques qui sont en francais. Comment faire pour gerer une traduction de ces noms de rubrique ?


Indiquez l'intérêt que vous portez à cette question
1 vote

Suivre la vie du site

> [multilinguisme] gerer la traduction du nom des rubriques

5 mai 2004 13:39

je precise ma question : une solution envisageable est il de nomer ses rubriques <:nomdelarubrique :> et d’ecrrie leur traduction dans un fichier de lang.

mis a part ca, je vois comment connaitre la langue courament utilisée par le site ($GLOBALS["spip_lang"]), mais je n’arrive pas à la modifier ($GLOBALS["spip_lang"]="en" par exemple ne marche pas).

De la doc sur la mise en place concrete du multilinguisme existe elle ? c’est tres mal documenté sur le site spip.net pour l’instant malheureusement.


> [multilinguisme] gerer la traduction du nom des rubriques

15 mai 2004 10:49 - par mathieu à bidon.ca

Je ne suis pas sûr si je comprends bien le problème, mais sur mon site multilingue je fais la chose suivante, mais c’est un peu tordu :

Quand je lis un article ou une rubrique, j’utilise la boucle suivante :

<BOUCLE_ma_rubrique(RUBRIQUES){id_rubrique}>
 <BOUCLE_mon_secteur(RUBRIQUES){id_secteur}{racine}>
   <BOUCLE_mon_menu(RUBRIQUES){id_parent}{par num titre}>
       .... éléments du menu ...
   </BOUCLE_mon_menu>
 </BOUCLE_mon_secteur>
</BOUCLE_ma_rubrique>

Il y a plusieurs problèmes avec cette solution :

  1. Il n’y a pas toujours un id_rubrique disponible, par exemple, si tu es sur recherche.php3, auteur.php3, etc.
  2. Si tu es dans article.html, tu dois extraire le id_rubrique explicitement pour aller chercher le id_secteur, ce qui donne une des 3 boucles imbriquées ci-dessus.

J’ai réglé le premier problème en forçant la présence d’un id_rubrique ou id_article peu importe où je suis dans le site. Cela inclue recherche.php3, et j’ai tout simplement supprimé auteur.php3, mot.php3, etc. par paresse, mais on peut leur passer un id_rubrique eux aussi (idéalement, le secteur, question d’avoir la langue et supprimer le contexte de la rubrique).

Je ne suis pas très fier de cette solution, et si quelqu’un a quelque chose de mieux à proposer, je suis preneur.. mais ça fonctionne :-)

mathieu


> [multilinguisme] gerer la traduction du nom des rubriques

1er août 2005 19:49 - par Vincent

Bonjour, je crois que Mathieu n’a pas compris la question. Il s’agit d’éviter d’avoir à dupliquer l’arborescence d’un site pour chaque langue, ce qui est très contraignant. Certains suggèrent d’utiliser le tag <multi>[lang1].... [lang2]....</multi> directement dans le titre des rubriques, mais je trouve ça aussi assez lourd - et je ne suis pas le seul.

Ne trouvant pas de solution en ligne à ce problème, j’ai finalement essayé qq chose, et ça marche. J’ai aussi cherché désespérément à contribuer cette solution à un endroit un peu logique et facile à trouver, mais je ne comprends pas comment contribuer facilement en tant que français moyen non développeur. C’est un peu triste, mais bon.

Voici donc la solution, qui consiste à créer deux fonctions avant_typo et apres_typo dans mes_fonctions.php3 :

/***************************************************************
*        METHODE POUR TRADUIRE LES CHAMPS DES RUBRIQUES
*        SANS AVOIR A CREER UNE ARBORESCENCE PAR LANGUE
*
*        Date : 28 juillet 2005
*        Auteur : Vincent Henderson
*
*        On utilise la fonction apres_typo() pour insérer
*        la traduction dans le contenu du champ
*        qui va s'afficher. Il faut s'arranger pour
*        créer l'expression _T('public/spip/ecrire:xxxxxx')
*        à ce moment là, où 'xxxxxx' est une entrée des
*        fichiers local_xx.php3. On utilisera les champs
*        des rubriques pour y mettre les balises de trad.
*        On part du principe que l'on voudra parfois
*        mettre un titre de rubrique en traduction
*        dynamique, et parfois non. Il suffira donc
*        de donner comme titre aux rubriques à traduire
*        une balise de traduction, mais en utilisant des
*        '[:xxxxxx:]' plutôt que des '<:xxxxxx:>', sinon
*        ça met le menu rollover de l'espace privé en
*        vrac.
*        Par exemple, donc, [:toto:].
*        Histoire de garder le bénéfice de la
*        numérotation qui sert à ordonner ses rubriques
*        (on peut donc intituler une rubrique '03. [:toto:]')
*        on passe le filtre supprimer_numero. Ceux qui
*        voudraient garder le numéro à l'affichage devront
*        regarder ça de plus près et trouver la solution
*        pour réintégrer le numéro à l'affichage.
*        De plus, noter que le classement alphabétique
*        ne se fera plus correctement pour les rubriques
*        ainsi traduites.
****************************************************************/

// On met la balise de traduction à l'abri avant traitement de la typo par SPIP

function avant_typo($texte) {
        $texte = str_replace("[:","CHAMP_A_TRADUIRE",$texte);
        $texte = str_replace(":]","CHAMP_A_TRADUIRE",$texte);
        return $texte;
}


// Après le traitement typo, on peut
// maintenant mettre dans notre champ ce qu'on veut

function apres_typo($texte) {

// Si on trouve cette balise, on la retire

        if(strpos($texte,"CHAMP_A_TRADUIRE") !== false) {
                $texte = str_replace("CHAMP_A_TRADUIRE","",$texte);

// On peut toujours mettre un numéro
// de titre avant la balise pour le tri
// mais maintenant il faut le retirer s'il y en a un
                $texte = supprimer_numero($texte);

// On rajoute à la main ce qu'il faut pour aller
// chercher la valeur de la traduction
// Pour ceux qui savent faire ça automatiquement
// et contextuellement, ne vous gênez pas

                $texte = "public/spip/ecrire:".$texte;

// Et on retourne le terme grâce à la fonction _T()

                return _T($texte);
        } else {
                return $texte;
        }
}

Voilà. Exemples de sites où ce procédé est utilisé :

www.infomotel.com

www.analysefreudienne.com

En espérant que cela pourra aider d’autres à résoudre ce problème.


> [multilinguisme] gerer la traduction du nom des rubriques

2 août 2005 09:14 - par Vincent

A propos, ça marche pour n’importe quel champ, pas seulement le titre des rubriques. On pourrait aussi faire un traitement un peu plus détaillé en isolant la partie taguée, et de façon récursive, de façon à pouvoir même utiliser ce tag dans le corps d’un article. Ca permettrait de gérer une terminologie standard, par exemple, ou de faire des raccoucis texte, par le biais des local_xx.php3.

Moi je n’ai pas le temps.


> [multilinguisme] gerer la traduction du nom des rubriques

22 août 2005 11:19

Bon, finalement, je l’ai fait. Maintenant, ça remplace [:toto :] n’importe où dans n’importe quel champ par la valeur de ’toto’ dans local_xx.php3.

/**************************************************
*        METHODE POUR TRADUIRE LES CHAMPS DES RUBRIQUES       
*        SANS AVOIR A CREER UNE ARBORESCENCE PAR LANGUE       
*        Date : 02 août 2005       
*        Auteur : Vincent Henderson       
*        On utilise la fonction apres_typo() pour insérer
*        la traduction dans le contenu du champ       
*        qui va s'afficher. Il faut s'arranger pour
*        créer l'expression _T('public/spip/ecrire:xxxxxx')
*        à ce moment là. Pour des raison de cohérence
*        on utilisera les champs des rubriques pour y
*        mettre les balises. On part du principe que l'on
*        voudra parfois mettre un titre de rubrique en
*        traduction dynamique, et parfois non. Il suffira donc
*        de donner comme titre aux rubriques à traduire la
*        balise de traduction que l'on souhaite, mais en       
*        utilisant des '[' plutôt que des '<', sinon ça met
*        le menu rollover de l'espace privé en vrac.
*        Par exemple, donc, [:toto:].
*        En plus, on garde le bénéfice des autres
*        filtres. C'est bien fait SPIP, quand même.
*        En revanche, noter que le classement alphabétique
*        ne se fera plus correctement pour les rubriques       
*        ainsi traduites.
**********************************************/

// On met la balise de traduction à l'abri avant traitement de la typo par SPIP

function avant_typo($texte) {
        $texte = str_replace("[:","CHAMP_A_TRADUIRE_G",$texte);
        $texte = str_replace(":]","CHAMP_A_TRADUIRE_D",$texte);
        return $texte;
}


// Après le traitement typo, on peut maintenant mettre dans notre champ ce qu'on veut

function apres_typo($texte) {

        // Si on trouve cette balise, on lance la procédure

        if(strpos($texte,"CHAMP_A_TRADUIRE") !== false) {
// je n'ai pas vraiment compris comment accéder à ce paramètre par le code.
// je le mets donc à la main. C'est le chemin des entrées de local_xx.php3,
// et ça marche comme ça sur les deux sites où j'ai appliqué ça.

                $acces_local = "public/spip/ecrire:";

// Bon, ensuite, on remplace en utilisant preg_replace_callback().
// Noter que les balises ne peuvent
// contenir que des lettres, des chiffres et des '_'.
// On remplace ce qu'il y a entre les balises par l'entrée correspondante
// dans local_xx.php3, ce qui est possible avec la fonction _T().
// preg_replace_callback() ne marche qu'avec PHP 3.0.9 et supérieurs, si j'ai bien lu.

                $texte = preg_replace_callback(
                                '/(CHAMP_A_TRADUIRE_G)([A-Za-z0-9_]*)(CHAMP_A_TRADUIRE_D)/',
                                create_function(
                                        '$matches',
                                        '$remplacement = _T($acces_local.$matches[2]);
                                        return $remplacement;'),
                                $texte);
        }
// et zou.                                                       
        return $texte;
}

> [multilinguisme] gerer la traduction du nom des rubriques

22 août 2005 11:56 - par James

Y a un endroit super qui s’appelle spip-contrib, vous le saviez ?


> [multilinguisme] gerer la traduction du nom des rubriques

23 août 2005 14:56

Ben oui, mais je n’arrivais pas à trouver le bouton "Contribuer" sur spip-contrib. C’est chose faite.

J’avais posté un lien vers ce thread de forum dans la faq Multilinguisme du spikini de spip contrib, mais je viens seulement de comprendre comment contribuer directement un article à spip-contrib. C’est donc chose faite également.


> [multilinguisme] gerer la traduction du nom des rubriques

24 août 2005 02:55

Voici la contrib publiée sur spip-contrib :

http://www.spip-contrib.net/Multilinguisme-traduire-les-champs


> [multilinguisme] gerer la traduction du nom des rubriques

2 septembre 2005 00:02 - par Thierry Bothorel

Voir mon ’guide pas à pas’ pour un site personnel


Répondre à la question


Un message, un commentaire ?
  • (Pour créer des paragraphes, laissez simplement des lignes vides.)

  • Vous pouvez étiqueter cette page de forum avec les mots-clés qui vous semblent les plus appropriés ; ils permettront aux prochains visiteurs du site de mieux se repérer :
  • Installation, mise à jour

    Utilisation de l’espace privé

    Administration, gestion, configuration du site

    Créer ses squelettes

Qui êtes-vous ? (optionnel)
  • [Se connecter]

  • par denisb - 19:10

    Condition de tri dans une boucle

    Réponse(s) : 1 - Résolu

    effectivement. dans ce cas là il te faut utiliser : <INCLUREfond=inc-forum, var_pagination=2, ordre=date_heure, env, ajax> et <BOUCLE_forums(FORUMS) pagination #ENVvar_pagination !par #ENVordre> ps : j’utilise pour (...)

  • par lalou - 17:47

    pagination d'un ensemble de rubriques et articles

    Pas de réponse

    Bonjour à tous J’ai mon gabarit rubrique avec les rubriques parentes et les articles de la rubrique (une boucle article et une boucle sous rubrique) On me demande de faire une pagination de cet ensemble ( articles et sous rubriques) Je sais le (...)

  • par Emmanuel - 15:15

    Boucle de menu - sous-rubrique présente sinon...

    Réponse(s) : 1

    Ben, j’ai l’impression de ne pas comprendre le problème ? Si j’ai bien compris, voilà comment il faut faire : <boucle(RUBRIQUES)racine> <h1 <sousrubrique(RUBRIQUES)id_parent0,1>class(css)</sousrubrique(RUBRIQUES)>> (...)

  • par anic - 11:27

    couleur affichee hexa au lieu de la couleur demandée

    Réponse(s) : 1

    Bonjour, C’est normal, en effet ce plugin via le raccourcis [(#ID_RUBRIQUE|couleur_rubrique)] renvoie le code couleur sans le dièse (pour une intégration facilitée pour les filtres SPIP. Donc il te faut ajouter ton dièse, (...)

  • par levonnos - 11:07

    masquer l'affichage du titre d'un article

    Réponse(s) : 7

    Merci beaucoup pour toutes ces infos. Je vais tester ça.

  • par Benji - 10:10

    Rajouter des champs lors de l'inscription d'un visiteur

    Réponse(s) : 2

    ll y a des liens vers la doc sur les formulaires ici : http://www.spip.net/spip.php?page=r.... C’est un peu compliqué en effet, mais pas insurmontable vu la doc disponible. En outre, pour que tes infos supplémentaires soient stockées dans la base (...)

  • par s t i | g a r d - 08:49

    Formulaire visible que par admin

    Réponse(s) : 7

    Cache vidé et page recalculée (encore une fois) ce coup-ci ça ne me met rien, même déconnecté. J’en perds mon latin. Au moins j’ai plus l’erreur dans le squelette. Je peux pas m’y remettre tout de suite là maintenant j’ai un autre problème à résoudre (...)

  • par Suske - 16 mars 17:44

    Banniere, lien vers page accueil

    Réponse(s) : 6

    En tatonnant, tu trouveras le bon "header"... J’aime bien multiflex mais le modifier tient du jeu de piste, c’est comme ça :-)

  • par Suske - 16 mars 16:27

    Lister les articles avec un même mot clé

    Réponse(s) : 14 - Résolu

    Merci à toi pour ce que tu partages sur le web ! J’en ai pris pour 60 minutes d’entraide et reçu pour des heures de lectures passionnantes :-) (Je viens notamment de me "refaire" le fil du procès de J-C Romand... Il y a matière à (...)

  • par Suske - 16 mars 16:23

    Image_recadre et pourcentage

    Réponse(s) : 1

    Cela doit pouvoir se faire en spip... Il y a des filtres qui permettent de récupérer les dimensions d’images et des filtres qui permettent le calcul. En stockant et récupérant les valeurs avec #SET et #GET, c’est jouable ? Il me semble que oui (...)


squelettes-dist/spip.png voir le squelette de cette page