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


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
Desculpe reativar este tópico, mas nos deparamos com o mesmo problema em nosso fórum, que é principalmente em inglês, mas possui algumas seções em outros scripts. Definir body min entropy como 0 não resolveu isso.
Parece que o problema é que o uso de alguns caracteres latinos dispara a verificação de caixa alta. Aqui está um exemplo de uma mensagem que aciona a notificação Body seems unclear:
Eu verifiquei: o cartão postal que enviei para a Rússia em 15/08 foi recebido em 13/10, mas o enviado em 27/10 ainda não chegou. Já se passaram 36 dias (embora outros do mesmo lote enviados para diferentes países também não tenham sido recebidos).
Como eu coloquei diretamente na caixa de correio, não tenho certeza se foi algo que impediu a entrega… Se você estiver no grupo de WeChat da UCPC, talvez possa perguntar a todos?
Será que allow uppercase posts é a única solução aqui? Em fóruns como o nosso, onde o inglês é o idioma principal, ativar essa opção não é ideal, mas também entendo a frustração dos usuários que inserem uma mensagem válida em seu próprio script e esbarram nesse erro. Seria possível verificar a proporção de letras maiúsculas em relação ao tamanho do corpo da mensagem para ajudar nisso?
É exatamente isso que ele faz e, no seu exemplo, a proporção é de 100%.
Quando o idioma padrão do fórum é definido como chinês, ajustamos essas configurações automaticamente, mas se você tiver idiomas mistos em uma única instância, precisará ajustar essa configuração manualmente.
Se o texto contiver um caractere de letra única que não tenha variante maiúscula/minúscula (como no caso do chinês), então o texto automaticamente não será considerado todo em maiúsculas. Isso poderia ser verificado fazendo uma correspondência com /\p{Lo}/ aqui.
Essa abordagem não exigiria um ajuste especial de configuração para fóruns predominantemente em zh/ko/ja e também funcionaria bem em fóruns onde são usadas línguas mistas, aplicando a regra de permitir maiúsculas apenas quando forem utilizados caracteres que possam ser maiúsculos.
Talvez uma lógica similar também pudesse ser usada para otimizar a verificação existente para texto todo em maiúsculas: se o texto corresponder a /\p{Ll}/ (letra minúscula que possui uma variante maiúscula), então o texto não é todo em maiúsculas.
Parece uma boa ideia para um pull request!
Minhas habilidades com Ruby são quase inexistentes, mas posso tentar montar algo, já que o problema está relativamente contido.
Dito isso, vejo um TODO no topo desse arquivo que parece estar relacionado a essa linha de código específica. É tão simples quanto remover o require, ou alguém que saiba o que está fazendo deveria assumir essa PR?
Eu tentei isso em FIX: Allow all caps within CJK text by mentalstring · Pull Request #27900 · discourse/discourse · GitHub
Ainda estou longe de ser um desenvolvedor Ruby, então tenha paciência comigo. ![]()
Obrigado @mentalstring, usei seu PR como inspiração para
Que também inclui algumas melhorias de desempenho e melhor tratamento de locais não latinos ![]()
(cc @lindsey)
Ótimo ver isso resolvido!
Gerenciamos um fórum internacional e, embora o inglês seja a língua principal, temos categorias dedicadas a outros idiomas e isso tem sido um incômodo de longa data.
Agora que skipped_locale é usado apenas para seems_unpretentious, eu me pergunto se podemos pular ‘ko’, já que o coreano moderno usa espaços? Tenha em mente que eu não falo coreano, então você pode querer verificar isso.
Enquanto tenho sua atenção, há mais uma coisa que acho que poderia ser uma melhoria fácil no TextSentinel, mas não ousei tocar (novamente, não sou um desenvolvedor Ruby). Se você tiver um momento, acho que é bem simples e poderia trazer um ganho de desempenho gratuito.
Pelo que entendi, isso verifica se uma palavra é mais longa que o limite dividindo o texto em palavras, calculando o comprimento de cada uma, escaneando todos os comprimentos para encontrar o maior e só então comparando-o com o limite.
Poderíamos talvez pular tudo isso simplesmente tentando corresponder o texto a algo como /\\p{Alnum}{#{max_word_length + 1},}/ (a sintaxe provavelmente está errada, mas espero que você entenda a ideia)?
Sem conhecer o funcionamento interno do Ruby, isso provavelmente pararia a verificação assim que houvesse uma correspondência e, se não houver nenhuma palavra muito longa (caso mais comum), o texto é escaneado apenas uma vez, pulando a divisão, a verificação individual do comprimento da palavra, etc.
Desculpe se estou sequestrando o tópico aqui, mas como o novo PR já foi mesclado, não tenho certeza do melhor lugar para postar isso, pois talvez seja pequeno demais para merecer um novo tópico, mas parece uma vitória fácil. Sinta-se à vontade para usá-lo.
Eu também não tenho ideia. Adoraria ter alguma confirmação de falantes de coreano.
Essa é uma excelente ideia ![]()
Yay!
Obrigado por dedicar seu tempo.
Talvez um dos tradutores de coreano (/cc @9bow, @alexkoala, @changukshin
) possa confirmar que o coreano moderno usa espaços entre as palavras, semelhante aos scripts romano/latino, para que o Discourse possa usar essa suposição ao processar texto coreano para encontrar palavras muito longas? ![]()