Nicolas Germain a écrit :
Nicolas Germain a écrit :Nicolas Germain a écrit :J'ai lu quelque part que SPIP attribue une seule réécriture d'URL par identifiant de rubrique et d'article. Je comprends donc pourquoi la réécriture ne fonctionne pas correctement sur un site multilingue,tout dépend de la structure du site.En gros, y'a 2 structures possibles, soit on sectorise par langue, y'a des avantages et des inconvénients, soit on définit une seule hiérarchie de rubriques valable pour toutes les langues, et les articles sont des traductions d'articles de référence. Cette 2ème façon de faire est la plus souple, et c'est ce que j'ai adopté.donc on parle bien uniquement des url propres des rubriques, pour les autres pas de probleme.Et c'est précisément là-dessus que la réécriture d'url coince en n'interprétant pas la balise multi des rubriques.il faut bien comprendre qu'il n'y a rien d'interprété. A un instant T, on definit une url pour la rubrique, et au moment de l'acces à une url propre, Spip cherche dans la base à quel type d'objet ca correspond et son id et appelle le squelette correspondant en ajoutant l'id dans le contexte.Or il n'y a aucun inconvénient en principe à définir plusieurs urls pour une seule rubrique15 par exemple, s'il y a changement de langue.Et comment est connue la langue correspondant à l'url ? Pour faire ce que tu veux, il faudrait ajouter un champ lang à spip_urls et au moment de la génération, créer plusieurs entrées quand on a un champ de type multi. Ca pourrait faire un beau plugin, mais c'est pas un petit developpement...Je crois qu'on est d'accord sur le constat, ce serait super si SPIP gérait ça en natif, où s'il y avait un plugin, car connaissant l'importance de la réécriture d'url pour le référencement et sachant que la langue est généralement un des grands critères de réécriture, je m'étonne simplement que ça n'ait pas été pensé comme ça dès l'origine. Alors gros développement, je ne sais pas, car au moment où on construit la table des urls, on connaît forcément le numéro de la rubrique et la langue de l'utilisateur (ou la langue par défaut du site), et ensuite, quand on appelle l'url "Qui-sommes-nous", par exemple, on connaît l'id rubrique et la langue associée, et même chose dans les autres langues... Il faut aussi prévoir une option pour vider la table spip_urls, ce que le couteau suisse propose déjà. En tout cas, merci Stéphane pour tes idées et pistes, bien que celle de l'article virtuel me semble délicat à manipuler par les rédacteurs en cas de changement de hiérarchie du contenu.Les urls libres ne permettent pas de définir plusieurs url pour une seule rubrique, et rajouter directement dans la table mysql les 2 url pour la même rubrique ne marche pas.ben, en fait, si, normalement. Sinon, j'ai fait un petit plugin urledit il y a quelques temps de ca qui permet la definition manuelle d'une ou plusieurs url (mais comme je le disais, en l'etat, ca fera unue redirection sur la dernière url entrée) mais ca n'orientera pas forcement sur la bonne langue (ca, ca depend aussi des squelettes, de l'utilisation ou pas de lang_select et/ou forcer_lang)Bref, mon problème reste entier : avoir une url en russe sur une rubrique russe, et une url en français sur une rubrique française. J'ai l'impression qu'il n'y a pas de solution à ce jour.ben je t'ai quand meme donné unue piste : faire un article virtuel avec l'url souhaitée qui pointe sur ?rubrique15&lang=ru @++ _______________________________________________
Bonjour,
(je poste aussi ce message sur spip-dev car les spécialistes auront peut-être une suggestion sur comment gérer ça mieux et plus proprement, voire l’envie de le faire de base dans une future version de spip)
J’ai eu exactement le même problème avec mon site franco-chinois qui utilise la même structure (la structure « un secteur par langue » est trop contraignante pour les contributeurs car elle oblige à choisir la nouvelle rubrique à chaque traduction → beaucoup trop d’opérations).
Résultat, j’ai dû forker le fichier « propre.php » pour que l’url unique intègre à la fois le titre en chinois et le titre en français.
C’est pas idéal, je préfèrerais en effet que spip gère une url par langue, ce qui est parfaitement possible vu la structure de la table spip_url, et de plus ne crée pas de duplicate content puisque de fait, quand on change de langue, on change de content.
Toujours est-il que ça a permis à mon site de se voir bien mieux référencé en chinois qu’avant.
Voici les modifications à apporter à propre.php (copier le ficher dans (dossier_squelette)/url et éditer le contenu de la copie, spip 2 gère la surcharge) :
//---------------------------1) augmentation de la longueur maximale de l’url (pour les langues à alphabet non latin, ça augmente vite à coup de %truc)
ligne 85
- @define(‹ _URLS_PROPRES_MAX ›, 35);
- @define(‹ _URLS_PROPRES_MAX ›, 100);
//---------------------------2) désactivation de la limite inférieure de caractères latins pour générer l’url propre
commenter les lignes 107 à 113
- // S’il reste trop peu, on retombe sur article12
- if (strlen($url) < _URLS_PROPRES_MIN) {
- $url = $objet[‹ type ›].$objet[‹ id_objet ›];
- }