Error "El cuerpo parece poco claro" cuando los usuarios escriben en chino

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.

4 Me gusta

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?

1 me gusta

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

1 me gusta

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)
2 Me gusta

Sorry for reviving this, but we have hit the same issue on our Forum which is primarily in English, but some sections in other scripts. Setting body min entropy to 0 did not fix this.

The issue seems to be that the use of some latin characters trips the all caps check. Here’s an example of a message that bumps into the Body seems unclear notice:

我看了一下,我8/15寄往俄罗斯的明信片10/13对方收到了,但是10/27寄的对方还没收到,现在已经36天了(不过同一批寄往不同国家的也没被收到)。
因为我是直接投的邮筒所以也不太清楚是不是寄不过去… 如果你在UCPC微信群里也许可以问下大家?

Is the allow uppercase posts the only solution here? On forums like ours where English is the main language, enabling that is not ideal, but I can also understand the frustration of users entering a valid message in their script bumping into that error. Could checking the ratio of CAPS versus the size of the body help here?

1 me gusta

That is what it does and in you example the ratio is 100%.

When a forum default language is set to Chinese we tweak those settings automatically, but if you have mixed languages in a single instance you need to tweak that setting.

3 Me gusta

If the text has a single letter character that has no upper/lower case variant (like with Chinese), then the text is automatically not all uppercase. This could be checked by matching against /\p{Lo}/ in here.

This approach would not require a special setting tweak for forums primarily in zh//ko/ja and can also play well with forums where mixed languages are used, only enforcing the allow upper case where only uppercase-able characters are used.

Maybe a similar logic could also be used to optimize the existing check for all caps: if the text matches /\p{Ll}/ (lowercase letter that has an uppercase variant), then the text is not all caps.

1 me gusta

Sounds like a good idea for a pull request!

1 me gusta

My Ruby chops are nearly non existent, but I can try to put something together as it is somewhat contained.

With that said, I’m seeing a TODO at the top of that file which seems related with this precise line of code. Is it as simple as remove the require, or should someone that knows what they are doing go for this PR?

Hice un intento en FIX: Allow all caps within CJK text by mentalstring · Pull Request #27900 · discourse/discourse · GitHub

Todavía estoy lejos de ser un desarrollador de Ruby, así que ten paciencia conmigo. :sweat_smile:

1 me gusta

Gracias @mentalstring, usé tu PR como inspiración para

Que también incluye algunas mejoras de rendimiento y un mejor manejo de locales no latinos :+1:

(cc @lindsey)

2 Me gusta

¡Genial ver que esto se ha abordado! :+1: Dirigimos un foro internacional y, si bien el inglés es el idioma principal, tenemos categorías dedicadas a otros idiomas y esto ha sido una molestia a largo plazo.

Ahora que skipped_locale solo se usa para seems_unpretentious, me pregunto si podríamos omitir ‘ko’ ya que el coreano moderno usa espacios. Ten en cuenta que no hablo coreano, así que quizás quieras verificar esto.

Mientras te tengo tu atención, hay una cosa más que creo que podría ser una mejora fácil en TextSentinel, pero no me atreví a tocarla (de nuevo, no soy un desarrollador de Ruby). Si tienes un momento, creo que es bastante simple y podría obtener una ganancia de rendimiento gratuita.

Según entiendo, esto verifica si una palabra es más larga que el límite dividiendo el texto en palabras, calculando la longitud de cada una, escaneando todas las longitudes para encontrar la más alta y solo entonces comparándola con el límite.

¿Podríamos quizás omitir todo eso simplemente intentando hacer coincidir el texto con algo como /\\p{Alnum}{#{max_word_length + 1},}/ (la sintaxis probablemente sea incorrecta, pero espero que entiendas la idea)?

Sin conocer el funcionamiento interno de Ruby, es más probable que esto detenga la verificación tan pronto como haya una coincidencia y, si no hay una palabra demasiado larga (el caso más común), el texto solo se escanea una vez, omitiendo la división, la verificación de la longitud de cada palabra individual, etc.

Disculpa si estoy secuestrando el tema aquí, pero como el nuevo PR ya se ha fusionado, no estoy seguro de cuál es el mejor lugar para publicar esto, ya que quizás sea demasiado pequeño para merecer un nuevo tema, pero parece una victoria fácil. Siéntete libre de seguir adelante.

1 me gusta

Yo tampoco tengo ni idea. Me encantaría recibir confirmación de hablantes de coreano.

Esa es una excelente idea :rocket:

¡Yay! :slight_smile: Gracias por tomarte el tiempo.

Quizás uno de los traductores de coreano (/cc @9bow, @alexkoala, @changukshin :wave:) pueda confirmar que el coreano moderno usa espacios entre palabras de forma similar a los scripts romanos/latinos, para que Discourse pueda usar esa suposición al procesar texto en coreano para encontrar palabras demasiado largas? :pray: