Erreur « Le corps semble flou » lorsque les utilisateurs tapent en chinois

Hi,

It seems that Discourse has some trouble dealing with Chinese characters. Our users cannot submit topics/posts if they use in chinese? In this case, I can see that it’s a long message but we still get the “Body seems unclear” message.

Any idea?

I see what is happening here.

We automatically disable this on Chinese forums but your forum appears to be English with a Chinese category.

Just set body min entropy to 0 in site settings.

Hum. Correction. It seems setting the body min entropy to 0 did not fix the issue. I tried with another text in Chinese and I still get the same error even though the body min entropy is set to 0

image

image

Did i miss something?

Hi,

Following up on this issue. I’m running some test with the latest version of discourse.

Body min entropy is set to 0. Same for Title min entropy.

When trying to create a topic with the body below I get the “Body unclear” error:

【澳門日報5月29日消息】國際會議協會(ICCA)日前發佈《二○一七年國際協會會議市場年度報告》。當中澳門多項評比的排位連續兩年均有上升,其中全球城市排名由一六年的七十二名躍升至第六十五名;亞太區域城市排名升一位至第十六,排名超過瑞士的日內瓦、澳大利亞的布里斯班、阿拉伯聯合酋長國的迪拜、韓國的釜山和濟州等城市

Is there a quick work around on this? My Chinese users are getting nervous because of this issue.

Thx
Seb

I’ve clarified this issue. But newbie is only able to put single picture on a post. So just a evidence and conclusion.

Conclusion, for both title and body

  • Validated: English capital letter ONLY
  • Validated: English capital letter AND (Chinese letter OR Japanese letter)
  • Succeeded: Chinese letter AND Japanese letter
  • Succeeded: English small letter AND (English Capital letter OR Chinese letter OR Japanese letter)

Désolé de raviver ce sujet, mais nous rencontrons le même problème sur notre forum, qui est principalement en anglais, mais comporte certaines sections dans d’autres alphabets. Définir body min entropy à 0 n’a pas résolu le problème.

Le problème semble provenir de l’utilisation de certains caractères latins qui déclenchent la vérification des majuscules. Voici un exemple de message qui déclenche l’avertissement Le corps semble peu clair :

J’ai vérifié : ma carte postale envoyée en Russie le 15 août a été reçue le 13 octobre par le destinataire, mais celle envoyée le 27 octobre n’a pas encore été reçue. Cela fait maintenant 36 jours (bien que d’autres envois de la même série vers différents pays n’aient pas non plus été reçus).
Comme je les ai directement déposées dans une boîte aux lettres, je ne sais pas vraiment si elles n’arrivent pas à destination… Si vous êtes dans le groupe WeChat UCPC, peut-être pouvez-vous demander à tout le monde ?

Est-ce que autoriser les publications en majuscules est la seule solution ici ? Sur des forums comme le nôtre où l’anglais est la langue principale, activer cette option n’est pas idéal, mais je comprends aussi la frustration des utilisateurs qui saisissent un message valide dans leur propre alphabet et se heurtent à cette erreur. Une vérification du rapport entre les majuscules et la taille du corps du message pourrait-elle aider ici ?

C’est exactement ce que fait le système, et dans votre exemple, le ratio est de 100 %.

Lorsque la langue par défaut d’un forum est définie sur le chinois, nous ajustons automatiquement ces paramètres. Cependant, si vous avez plusieurs langues mélangées dans une seule instance, vous devrez ajuster ce paramètre manuellement.

Si le texte contient un caractère d’une seule lettre sans variante majuscule/minuscule (comme en chinois), alors le texte n’est automatiquement pas entièrement en majuscules. Cela pourrait être vérifié en utilisant une correspondance avec /\p{Lo}/ dans cette section.

Cette approche ne nécessiterait pas de réglage spécial pour les forums principalement en zh//ko/ja et fonctionnerait également bien avec les forums utilisant plusieurs langues, en n’appliquant l’option autoriser les majuscules que lorsque seuls des caractères susceptibles d’être mis en majuscules sont utilisés.

Une logique similaire pourrait également être utilisée pour optimiser la vérification existante des majuscules : si le texte correspond à /\p{Ll}/ (lettre minuscule ayant une variante majuscule), alors le texte n’est pas entièrement en majuscules.

L’idée semble excellente pour une proposition de modification (pull request) !

Mes compétences en Ruby sont presque inexistantes, mais je peux essayer de mettre quelque chose au point, car le problème est relativement circonscrit.

Cela dit, je vois un TODO au début de ce fichier qui semble lié à cette ligne de code précise. Est-ce aussi simple que de supprimer le require, ou quelqu’un qui sait ce qu’il fait devrait-il s’occuper de cette PR ?

J’ai fait une tentative dans FIX: Allow all caps within CJK text by mentalstring · Pull Request #27900 · discourse/discourse · GitHub

Je suis encore loin d’être un développeur Ruby, alors soyez indulgent. :sweat_smile:

Merci @mentalstring, j’ai utilisé votre PR comme source d’inspiration pour

Qui inclut également des améliorations de performances et une meilleure gestion des locales non latines :+1:

(cc @lindsey)

Ravi de voir que cela est pris en compte ! :+1: Nous gérons un forum international et, bien que l’anglais soit la langue principale, nous avons des catégories dédiées à d’autres langues et cela nous a longtemps agacés.

Maintenant que skipped_locale est uniquement utilisé pour seems_unpretentious, je me demande si nous ne pourrions pas ignorer ‘ko’ puisque le coréen moderne utilise des espaces ? Gardez à l’esprit que je ne parle pas coréen, vous voudrez peut-être vérifier cela.

Pendant que j’ai votre attention, il y a une autre chose qui, je pense, pourrait être une amélioration facile sur TextSentinel mais que je n’ai pas osé toucher (encore une fois, je ne suis pas un développeur Ruby). Si vous avez un moment, je pense que c’est assez simple et que cela pourrait apporter un gain de performance gratuit.

Si je comprends bien, cela vérifie si un mot est plus long que la limite en divisant le texte en mots, calcule la longueur de chacun, analyse toutes les longueurs pour trouver la plus grande, et seulement ensuite la compare à la limite.

Pourrions-nous peut-être éviter tout cela en essayant simplement de faire correspondre le texte à quelque chose comme /\\p{Alnum}{#{max_word_length + 1},}/ (la syntaxe est probablement erronée, mais j’espère que vous comprenez l’idée) ?

Sans connaître le fonctionnement interne de Ruby, cela permettrait plus probablement d’arrêter la vérification dès qu’il y a une correspondance, et s’il n’y a pas de mot trop long (cas le plus fréquent), le texte n’est analysé qu’une seule fois, en évitant la division, la vérification de la longueur de chaque mot, etc.

Désolé si je détourne le sujet ici, mais comme le nouveau PR est déjà fusionné, je ne suis pas sûr du meilleur endroit pour poster cela car c’est peut-être trop petit pour mériter un nouveau sujet, mais cela semble être un gain facile. N’hésitez pas à vous en emparer.

Je n’en ai aucune idée non plus. J’aimerais cependant obtenir une confirmation de la part de locuteurs coréens.

C’est une excellente idée :rocket:

Youpi ! :slight_smile: Merci d’avoir pris le temps.

Peut-être que l’un des traducteurs coréens (/cc @9bow, @alexkoala, @changukshin :wave:) peut confirmer que le coréen moderne utilise des espaces entre les mots, similaires aux écritures romaines/latines, afin que Discourse puisse utiliser cette hypothèse lors du traitement du texte coréen pour trouver les mots trop longs ? :pray: