J'utilise les urls personnalisés pour un article dont le titre contient un "Umlaut", dans ce cas il s'agit du "ä" dans "Radioaktivität". SPIP en déduit que l'URL devrait se construire ainsi:
"http://www.sowieso.de/zeitung/Radioaktivitat.html"
Un lecteur allemand averti remarque qu'ici une faute s'est introduite. Et c'est ca ce qui empêche l'utilisation des urls personnalisés SPIP pour des publications professionelles.
J'aimerais donc obtenir
"Radioaktivitaet.html" au lieu de "Radioaktivitat.html"
et généraliser ce comportement ainsi:
ä -> ae
Ä -> Ae
ö -> oe
Ö -> Oe
ü -> ue
Ü -> Ue
ß -> ss
etc.
En introduisant cette fonctionnalité la question des titres en majuscules uniquement se pose. Je vois deux solutions:
- On introduit une fonction qui examine si la lettre suivante est également une majuscule (et si c'est un chiffre ...? Alors on regarde la lettre qui suit le chiffre etc. Et si c'est la derniere lettre? On prend les lettres précédents également en considération? S'il n'y a qu'une seule minuscule avant, qu'est-ce qu'on fait?) et choisit Ä -> AE si oui, autrement Ä -> Ae.
- On refuse de se compliquer la vie et remplace simplement tous les majuscules par des minuscules avant la transformation. Ca passe, on a l'habitude des noms en minuscules dans les noms de fichier et urls. Mais peut-être il y a une question de compatibilité avec le comportement actuel. La sortie de SPIP 2.0 serait une prétexte bienvenu pour la faire sauter
Vous avez une opinion par rapport à cette question?
Alors comment est-ce que je m'y prends?
- plugin "Umlaute allemands" ?
- modif de spip core ?
- fonction pour mes_fonctions.php
- fonction pour mes_options.php
- ?
Puis il y a peut-être aussi des choses à améliorer pour d'autres langues ...
J'utilise les urls personnalisés pour un article dont le titre contient un "Umlaut", dans ce cas il s'agit du "ä" dans "Radioaktivität". SPIP en déduit que l'URL devrait se construire ainsi:
"sowieso.de - Ce site web est à vendre ! - Ressources et information concernant CBD Resources and Information.;
Un lecteur allemand averti remarque qu'ici une faute s'est introduite. Et c'est ca ce qui empêche l'utilisation des urls personnalisés SPIP pour des publications professionelles.
J'aimerais donc obtenir
"Radioaktivitaet.html" au lieu de "Radioaktivitat.html"
Pourquoi ne pas tout simplement laisser les accents, soit tels quels (à priori tous les navigateurs et serveurs Web comprennent) soit encodés ?
Tu pourrais ainsi avoir ceci :
(sachant qu'ici, "%E4" représente un a avec tréma et non avec Umlaut)
Certes, c'est moins élégant que ta proposition, mais c'est encore plus juste au niveau de la langue, non ?
J'aimerais donc obtenir
"Radioaktivitaet.html" au lieu de "Radioaktivitat.html"
Je pense qu'il suffit de remplacer dans ecrire/urls/propres.php la
fonction translitteration( ... ) par translitteration_complexe( ... )
; si ton site est multilingue il y aura éventuellement une instruction
de plus à mettre juste avant, mais déjà dis-nous si ça marche ainsi.
- On introduit une fonction qui examine si la lettre suivante est également
une majuscule (et si c'est un chiffre ...? Alors on regarde la lettre qui
suit le chiffre etc. Et si c'est la derniere lettre? On prend les lettres
précédents également en considération? S'il n'y a qu'une seule minuscule
avant, qu'est-ce qu'on fait?) et choisit Ä -> AE si oui, autrement Ä -> Ae.
pour cette partie (à mon avis secondaire) il faudra améliorer
translittération complexe ou bien passer en plus un filtre qui gère
les majuscules/minuscules, comme par exemple mb_strtolower
ta proposition est techniquement correcte - mais ne change rien au problème de base : les caractères spéciaux, dans le cas précis les "Umlaute" ne sont pas transformés de la même manière comme un être humain le ferait avec un clavier américain.
Les Umlaute allemands étaient à l'origine des combinaisons de ae oe ue et sz, les deux points sur les Umlaute voyels représentant le e disparu. La transformation d'un "ä" en "ae" constitue donc une orthographie presque correcte et correspond aux attentes du lecteur. Le cas du ß est moins logique mais plus simple - il suffit de le remplacer per deux s.
L'utilité des URLs personnalisés ici est surtout contituée par la possibilité de les citer dans un message ou un article où ces liens sont lus et interprétés par des non-techniciens d'un certain niveau culturel. Le manque des point sur un "a"-Umlaut ne passe pas inaperçu et fait très mauvaise impression, comme si l'expéditeur du message ne maîtrisait pas notre belle langue allemande.
Alors je vais suivre le conseil de Fil et me lancer dans l'exploration de la fonction translitteration_complexe. Je vous tiendrai au courant des résultats.
Salut Nicolas,
ta proposition est techniquement correcte - mais ne change rien au problème de base : les caractères spéciaux, dans le cas précis les "Umlaute" ne sont pas transformés de la même manière comme un être humain le ferait avec un clavier américain.
OK, je disais effectivement que c'était moins élégant...
Les Umlaute allemands étaient à l'origine des combinaisons de ae oe ue et sz, les deux points sur les Umlaute voyels représentant le e disparu. La transformation d'un "ä" en "ae" constitue donc une orthographie presque correcte et correspond aux attentes du lecteur. Le cas du ß est moins logique mais plus simple - il suffit de le remplacer per deux s.
OK, de vieux souvenirs de mes cours d'allemand...
L'utilité des URLs personnalisés ici est surtout contituée par la possibilité de les citer dans un message ou un article où ces liens sont lus et interprétés par des non-techniciens d'un certain niveau culturel. Le manque des point sur un "a"-Umlaut ne passe pas inaperçu et fait très mauvaise impression, comme si l'expéditeur du message ne maîtrisait pas notre belle langue allemande.
merci, je vais me lancer dans les test des fonctions de translittération.
Je profite de l'occasion pour attirer votre attention sur une utilisation particulière des urls personnlisés :
Nous devon migrer un site sous SPIP 1.83 (donc en PHP3) vers SPIP 1.93/2.0 (donc en PHP seulement) ce que normalement nécessite un changement de la syntaxe des URLs et provoque une perte de visibilité - tous les liens vers des pages spécifiques deviennent obsoletes, les bookmarks des visiteurs ne marchent plus et les moteurs de recherche doivent réindexer tout le site.
J'ai maintenant introduit les urls_propres2 et le tour est joué - changement de version SPIP sans perdre les URLs. C'est magnifique. Il faudrait seulement que j'évite "d'améliorer" les URLs propres2 - ça casserait la compatibilité
je viens de remarquer que dans ecrire/charsets/translitcomplexe.php pour l'Allemand sont défini
228=>'ae',246=>'oe',252=>'ue',196=>'Ae',214=>'Oe',220=>'Ue'
il manque
,223=>'ss'; // il n'y a pas de majuscule pour ? ß
pas vrai?
C'est à priori pris en compte par tous les types d'URL de SPIP, et même sans changer de type d'URL, si tu changes le titre d'un article, son URL peut changer sans soucis, la redirection depuis l'ancienne adresse sera toujours assurée si tu ne vides pas la table "spip_urls".
Cela permet aussi de conserver le référencement et d'indiquer aux moteurs la nouvelle adresse qui doit remplacer l'ancienne.