Introduction
Comment traduire des sections autrement si SPIP ne propose pas nativement un système de traduction pour les rubriques ?
Le plugin Traduction entre rubriques comble cette lacune avec un système inspiré par celui des traductions des articles ; c’est à dire en ajoutant un champ id_trad à la table rubriques, et en liant ainsi les traductions des rubriques.
Le présent plugin modifie simplement la manière de gestion des traductions des rubriques proposé par le plugin Traduction entre rubriques avec un solution similaire au plugin Traductions d’articles autrement, dont l’installation est recommandé (téléchargement ici) afin de pouvoir offrir une approche cohérente des traductions des rubriques et de la navigation entre les traductions des articles et rubriques.
Utilisation
Ce plugin trouve son utilité surtout dans un site avec des langues par secteur.
voici un exemple de liens de traductions pour rubriques, articles et autres (auteurs,sites,...) nécessite le plugin spip bonux
#CACHE{0}
[(#REM) Si on est dans le contexte d'un article, on affiche les langues des articles]
<BOUCLE_article(ARTICLES){id_article}>
<B_traductions>
<p class="traductions">
<BOUCLE_traductions(ARTICLES) {traduction} {par lang}{'|'}>[(#TOTAL_BOUCLE|>{1}|?{' '})
<span lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR"[ class="(#EXPOSE)"]>
[(#EXPOSE{'',<a href="[(#URL_ACTION_AUTEUR{'converser',#LANG&var_lang=#LANG,[(#URL_ARTICLE|parametre_url{lang,'','&'})]}|parametre_url{arg,''})]" rel="alternate" hreflang="#LANG"[ title="(#TITRE|attribut_html|couper{80})"]>})]
[(#LANG|traduire_nom_langue)]#EXPOSE{'',</a>}</span>
]</BOUCLE_traductions>
</p>
</B_traductions>
</BOUCLE_article>
[(#REM) Sinon, si on est dans le contexte d'une rubrique, on affiche les langues des rubriques]
<B_rubrique>
<p class="traductions">
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_traductions_rub(RUBRIQUES) {traduction} {par lang}{'|'}>
<span lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR"[ class="(#EXPOSE)"]>
[(#ENV{lang}|=={#LANG}|non)<a href="[(#URL_ACTION_AUTEUR{'converser',#LANG&var_lang=#LANG,[(#URL_RUBRIQUE|parametre_url{lang,'','&'})]}|parametre_url{arg,''})]" rel="alternate" hreflang="#LANG"[ title="(#TITRE|attribut_html|couper{80})"]>[(#LANG|traduire_nom_langue)]</a>]
[(#ENV{lang}|=={#LANG}|oui)[(#LANG|traduire_nom_langue)]]
</span>
</BOUCLE_traductions_rub>
</BOUCLE_rubrique>
</p>
</B_rubrique>
[(#REM) Sinon, si on on boucle sur les langues disponibles dans le public grâce à spip-bonux]
[(#SET{langues,[(#CONFIG{langues_utilisees}|explode{','}|serialize)]})]
<B_langue_possibles>
<p class="traductions">
<BOUCLE_langue_possibles(POUR){tableau #GET{langues}}{'|'}>
<span lang="#VALEUR" xml:lang="#VALEUR" dir="#LANG_DIR" [(#ENV{lang}|=={#LANG}|oui) class="on"]>
[(#ENV{lang}|=={#VALEUR}|non)<a href="[(#URL_ACTION_AUTEUR{'converser',#VALEUR&var_lang=#VALEUR,[(#SELF|parametre_url{lang,'','&'})]}|parametre_url{arg,''})]" rel="alternate" hreflang="#VALEUR">[(#VALEUR|traduire_nom_langue)]</a>]
[(#ENV{lang}|=={#VALEUR}|oui)[(#VALEUR|traduire_nom_langue)]]
</span>
</BOUCLE_langue_possibles>
</p>
</B_langue_possibles>
<//B_rubrique>
<//B_article>
Affichage squelettes
Il est possible de conditionner l’affichage des squelettes/noisettes en utilisant la balise
#ID_TRAD
par exemple, pour afficher une noisette déterminée seulement si on se trouve dans la rubrique 21 ou dans ses traductions. Il suffit de prendre l’id_rubrique de la rubrique de référence (celle qui a une * a coté du lien traduction - voir ci-haut) et qui est également l’id_trad.
Dans notre exemple, la rubrique de référence est la rubrique 21, donc l’id_trad est également le 21.
on utiliserai donc
[(#ID_TRAD|=={21}|oui)<INCLURE{fond=inc/noisette}/>]
pour afficher inc/noisette.html pour la rubrique 21 et ses traductions
Discussions par date d’activité
5 discussions
J’ai ajouté un modèle de liens de traductions pour les rubriques.
À moins que je ne me trompe, il n’existe pas de modèle SPIP pour les liens entre traductions de rubriques, à l’instar de celui pour les liens entre traductions d’articles.
J’en ai donc créé un :
La différence avec celui pour les articles est minime et se limite à faire référence aux rubriques et non aux articles :
l’insertion dans le squelette article :
Le modèle rubrique_traductions.html à placer dans squelettes/modeles/ :
Reste l’ajout d’entrées dans les fichiers de langues placés dans squelettes/lang/ :
Dans public_fr.php :
'trad_rubrique_traduction' => 'All the versions of this rubrique',
Dans public_en.php :
'trad_rubrique_traduction' => 'Toutes les versions de cette rubrique',
Petite erreur que vous aurez corrigée vous même :
Reste l’ajout d’entrées dans les fichiers de langues placés dans squelettes/lang/ :
Dans public_fr.php :
'trad_rubrique_traduction' => 'Toutes les versions de cette rubrique',
Dans public_en.php :
'trad_rubrique_traduction' => 'All the versions of this rubrique',
Répondre à ce message
Yop,
super, par contre j’ai du mal à saisir le fonctionnement car sur mon blog les articles en anglais et français apparaissent toujours ensemble ! Comment changer cela ?
Bonjour,
Je ne comprends pas tout à fait le problème. Qu’est-ce que ça signifie ils apparaissent ensemble ? C’est un problème de l’interface interne ou du site public ?
Rainer
Salut,
et bien en fait dans l’interface interne j’ai créer mes rub en fr et je les ai traduite en anglais, idem pour mes articles. Mais lorsque je vais sur le site public, les deux articles fr et ang sont affichés sans distinctions.
Bertrand
Tu peux me donner un lien ?
Bonjour,
le menu par défaut de spip ne fonctionne as avec une structure basé sur les secteurs par langue, utilisé par ce plugin.
Il te faut copier le fichier squelettes_dist/inc-entete.html dans ton dossier squelettes puis remplacer
#MENU_LANGUE
par
Attention, il te faut installer le plugin spip-bonux pour que cela fonctionne
Afin de rediriger l’internaute directement sur la bonne rubrique, installe le plugin Langue préférée par l’internaute
Et remplace le contenu de ton squelette sommaire para la balise
#LANGUE_PREFEREE_SECTEUR_REDIRECTION
Dis-moi si cela résous ton problème
Rainer
Bonsoir,
tout d’abord merci de ton aide et patience. Pour l’heure je n’ai pas créé de squelette la notion reste flou pour moi et j’utilise Zpip couplé à Zen Garden (bien que je n’utilise pas encore de thème pour l’instant). J’ai donc modifié le fichier squelettes_dist/inc-entete.html (l’autre occurence entete se trouve être /public_html/spip/plugins/auto/zpip/inclure/entete.html. Mais malheureusement cela ne change pas l’affichage, voici ce que mon fichier contient :
++
Bonjour, alors dans ce cas, crée à la racine de ton site un dossier nommé squelettes, dedans tu crée le dossier inclure dans lequel tu copie le fichier « zpip/inclure/entete.html ».
Ce nouveau fichier squelettes/inclure/entete.html surchargera alors zpip/inclure/entete.html
et maintenant tu peux faire, les modifications décrite ci-haut
Rainer
Bonsoir,
idem... Il y a définitivement quelques choses que je ne comprend pas :-/
Ce week-end j’étais sur ton site et j’ai vue que le menu de langue fonctionnait, donc quel est actuellement ton problème ?
Répondre à ce message
Sur mon site internet, j’ai besoin d’un retour des utilisateurs,
de leur avis sur le site.
Existe t-il un plugin qui réalise cela ?
Celui-ci me donnerait la possibilité de mettre en ligne ou non les commentaires des visiteurs !!
J’ai supprimé le forum public car je recevais des spams en quantité importante d’un site chinois !!
Quelqu’un pourrait-il m’aider ?
Je lui en serait très reconnaissant
Bonjour,
je crois que tu t’est trompé de forum, pose ta question plutôt sur le forum de spip
Mais concernant ton problème.
Normalement le forum de spip est idéal pour ce que tu décris, les problèmes de spam peuvent normalement être résolu corrigé en utilisant la dernière version de spip.
Pour améliorer la protection antispam tu peux installer le plugin NoSpam qui me donne des bons résultat ou bien la lame antispam du couteau suisse
Rainer
Répondre à ce message
Bonjour,
Je viens juste d’installer TAA et TRA pour tester.
Je note que dans ce plugin (TRA), un système d’installation est présent. Deux choses :
sql_alter("TABLE spip_formulaires_reponses DROP page");
, qui doit être une erreur de copier coller je suppose ! Enfin, je ne vois pas le rapport avec ce plugin :)À suivre :)
Tu as tout à fait raison, le plugin tradrub s’en charge déjà.
Je viens d’enlever le système d’installation, ce qui corrige en même temps l’erreur du copier coller de la désinstallation
Parfait...
Je continue mon exploration
Quelques bugs
fr / étendre spip / généralités
. Si « étendre spip » est traduit en espagnol, mais pas généralités, et que dans la rubrique généralités, je clique « espagnol », la rubrique de création de ma nouvelle rubrique espagnole est par défaut la rubrique racine (’es’), et non, disons, la plus proche traduction connue dans la hiérarchie des rubriques.fr / étendre spip / généralités / un article
(page?exec=articles&id_article=xx
), un article fr qui n’a pas de traduction espagnole me retourne une erreur SQL :. Je pensais que c’était la fonction
rubrique_traduction()
qui ne vérifie pas que$id_rubrique
existe bien, mais il semble que ce n’est pas cela. Par ailleurs, la requête devrait utiliser de préférencesql_quote()
:Surcharges
inc/article_afficher_contenu.php
, mais c’est peut-être la seule solution pour réaliser tout ce que tu souhaitais.Bilan
bravo :)
J’ai corrigé l’erreur SQL.
Merci pout tes tests et commentaires exhaustives.
J’ai corrigé le bug concernant la détection des id_parents de traductions et ajouté les sql_quote.
Je vais prendre en compte tes commentaires pour le plugin taa
Merci pour tes modifications du plugin taa.
j’ai mis les langues non-traduites en italique, en plus du background.
le plugin n’affiche le mode « édition seulement » si l’auteur a effectivement les droits d’éditions sur l’article, sinon c’est la prévisualisation par défaut qui s’affiche.
Je ne suis pas sur de comprendre. Le formulaire édition apparaît juste après les liens de langue et avant la date, tu trouverai plus logique de mettre la date en dessus ?
J’ai suivis ton conseil et remplacé le + par l’image deplierbas.gif et le - par deplierhaut.gif puis je les ai mis dans la colonne traductions.
Pour la date de publication, c’est que visuellement, je n’ai pas d’espace entre le bas du formulaire d’édition et le haut du cadre de date de publication. Un margin à ajouter probablement.
ok, j’ai rajouté un marge
Répondre à ce message
Impossible d’activer le plugin ../plugins/traduction_rubriques_autrement
Nécessite le plugin TRADRUB en version [2.1.0 ;] minimum.
On le trouve ou TradRub ?
Tu peux le télécharger ici : http://files.spip.org/spip-zone/tradrub.zip
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |