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.

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)

Perdona por reactivar este tema, pero hemos encontrado el mismo problema en nuestro foro, que está principalmente en inglés, aunque algunas secciones usan otros sistemas de escritura. Establecer body min entropy en 0 no solucionó el problema.

Parece que el uso de ciertos caracteres latinos activa la comprobación de mayúsculas. Aquí tienes un ejemplo de un mensaje que activa el aviso Body seems unclear:

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

¿Es allow uppercase posts la única solución aquí? En foros como el nuestro, donde el inglés es el idioma principal, activar esa opción no es ideal, pero también entiendo la frustración de los usuarios que escriben un mensaje válido en su propio sistema de escritura y se encuentran con ese error. ¿Podría ayudar aquí comprobar la relación entre las mayúsculas y el tamaño del cuerpo del mensaje?

Eso es exactamente lo que hace, y en tu ejemplo la proporción es del 100%.

Cuando el idioma predeterminado del foro se establece en chino, ajustamos automáticamente esas configuraciones, pero si tienes idiomas mezclados en una sola instancia, debes ajustar esa configuración manualmente.

Si el texto contiene un carácter de una sola letra que no tiene variante mayúscula/minúscula (como en el chino), entonces el texto automáticamente no se considera todo en mayúsculas. Esto podría verificarse comparando con /\p{Lo}/ en este lugar.

Este enfoque no requeriría un ajuste especial de configuración para foros principalmente en zh/ko/ja y también funcionaría bien en foros donde se utilizan idiomas mezclados, aplicando la opción permitir mayúsculas solo cuando se usan caracteres que pueden escribirse en mayúsculas.

Quizás una lógica similar también podría utilizarse para optimizar la verificación existente de todo en mayúsculas: si el texto coincide con /\p{Ll}/ (letra minúscula que tiene una variante mayúscula), entonces el texto no está todo en mayúsculas.

¡Suena como una buena idea para una solicitud de extracción!

Mis conocimientos de Ruby son casi nulos, pero puedo intentar armar algo, ya que el problema está bastante delimitado.

Dicho esto, veo un TODO en la parte superior de ese archivo que parece estar relacionado con esta línea de código específica. ¿Es tan sencillo como eliminar el require, o debería hacerlo alguien que sepa lo que está haciendo para este 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:

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)

¡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.

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: