J’ai activé certains caractères Unicode dans les noms d’utilisateurs et tout fonctionne comme prévu.
Lorsque j’ai essayé d’utiliser des caractères Unicode dans un slug de catégorie, il a été converti en encodage pourcenté et les modifications ont été enregistrées avec succès, mais je n’ai plus pu accéder à la liste des sujets de la catégorie en raison d’une erreur ERR_TOO_MANY_REDIRECTS.
Il semble que j’ai résolu le problème via la console Rails :
Ce n’est pas un obstacle majeur, mais cela peut causer des dysfonctionnements. Je suggère donc soit de l’implémenter complètement, soit de mettre en place une protection contre ce cas.
Des travaux ont déjà été réalisés sur ce sujet, mais je ne pense pas que le problème que vous avez rencontré ait été résolu. Ce qui s’est probablement passé, c’est que vous avez défini la méthode de génération des slugs sur ‘ascii’ et que vous avez saisi directement un slug de catégorie contenant des caractères non-ascii. Je parviens à reproduire ce problème sur mon site avec la méthode de génération des slugs définie sur ‘ascii’ et le texte suivant (yetersizliği) saisi directement dans le champ Slug de la catégorie :
La tentative de chargement de cette liste de catégories échoue ensuite.
Si je ne saisis rien dans le champ Slug de la catégorie, Discourse crée correctement le slug lorsque la méthode de génération des slugs est définie sur ‘ascii’.
Lorsque la méthode de génération des slugs est définie sur ‘encoded’, Discourse gère correctement la création du slug, que je laisse le champ Slug de la catégorie vide ou que je saisis directement le slug non-ascii dans ce champ.
Il semble donc que le problème soit le suivant : lorsque la méthode de génération des slugs est définie sur ‘ascii’, des slugs non-ascii peuvent tout de même être saisis dans le champ Slug de la catégorie. Cela provoque un problème de redirection qui ne peut être résolu qu’à partir de la console Rails.
C’est exactement ce que j’ai fait : j’étais en train de modifier une catégorie déjà créée, tant son nom que son identifiant. Je ne connaissais pas le paramètre méthode de génération des identifiants, et même si je l’ai ensuite trouvé défini sur ascii, l’identifiant a tout de même été encodé.
Ce genre de coercition pourrait avoir du sens, mais uniquement si l’identifiant encodé peut ensuite être reconnu, en ignorant le paramètre de manière similaire.