„Körper scheint unklar“ Fehler, wenn Benutzer auf Chinesisch tippen

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)

Entschuldigung, dass ich den Thread wiederbelebe, aber wir haben dasselbe Problem auf unserem Forum, das hauptsächlich auf Englisch ist, aber einige Abschnitte in anderen Schriftsystemen enthält. Das Setzen von body min entropy auf 0 hat dies nicht behoben.

Das Problem scheint darin zu bestehen, dass die Verwendung bestimmter lateinischer Zeichen die Prüfung auf alles in Großbuchstaben auslöst. Hier ist ein Beispiel für eine Nachricht, die auf die Warnung „Der Text scheint unklar zu sein“ stößt:

Ich habe nachgeschaut: Meine am 15.8. nach Russland gesendete Postkarte wurde am 13.10. vom Empfänger erhalten, aber die am 27.10. gesendete wurde noch nicht empfangen. Es sind jetzt bereits 36 Tage vergangen (obwohl auch eine gleiche Sendung an verschiedene Länder nicht empfangen wurde).
Da ich den Briefkasten direkt benutzt habe, bin ich mir nicht sicher, ob die Post nicht angekommen ist… Wenn du in der UCPC-WeChat-Gruppe bist, könntest du dort vielleicht nachfragen?

Ist die Option „Großbuchstaben-Beiträge zulassen“ hier die einzige Lösung? Auf Foren wie unserem, wo Englisch die Hauptsprache ist, ist das Aktivieren dieser Option nicht ideal, aber ich kann auch die Frustration der Nutzer verstehen, die eine gültige Nachricht in ihrer eigenen Schrift eingeben und auf diesen Fehler stoßen. Könnte eine Prüfung des Verhältnisses von GROSSBUCHSTABEN zur Größe des Textkörpers hier helfen?

Genau das tut es, und in Ihrem Beispiel beträgt das Verhältnis 100 %.

Wenn die Standardsprache eines Forums auf Chinesisch eingestellt ist, passen wir diese Einstellungen automatisch an. Wenn Sie jedoch mehrere Sprachen in einer einzigen Instanz verwenden, müssen Sie diese Einstellung manuell anpassen.

Wenn der Text ein einzelnes Zeichen enthält, das keine Groß-/Kleinschreibungsvariante hat (wie im Chinesischen), gilt der Text automatisch nicht als vollständig in Großbuchstaben. Dies könnte überprüft werden, indem gegen /\p{Lo}/ in hier gematcht wird.

Dieser Ansatz erfordert keine spezielle Einstellung für Foren, die hauptsächlich auf Zh/Ko/Ja basieren, und lässt sich auch gut mit Foren kombinieren, in denen gemischte Sprachen verwendet werden. Dabei wird Großbuchstaben zulassen nur dort durchgesetzt, wo ausschließlich großschreibbare Zeichen verwendet werden.

Vielleicht könnte eine ähnliche Logik auch genutzt werden, um die bestehende Prüfung auf vollständige Großschreibung zu optimieren: Wenn der Text auf /\p{Ll}/ (Kleinbuchstabe mit einer Großbuchstaben-Variante) passt, dann ist der Text nicht vollständig in Großbuchstaben.

Klingt nach einer guten Idee für einen Pull-Request!

Meine Ruby-Kenntnisse sind so gut wie nicht vorhanden, aber ich kann versuchen, etwas zusammenzustellen, da es sich um einen eher überschaubaren Bereich handelt.

Dass gesagt, ich sehe einen TODO-Hinweis am Anfang dieser Datei, der mit genau dieser Codezeile zusammenhängt zu sein scheint. Ist es so einfach, das require einfach zu entfernen, oder sollte jemand, der sich damit auskennt, diesen PR übernehmen?

Ich habe mich daran in FIX: Allow all caps within CJK text by mentalstring · Pull Request #27900 · discourse/discourse · GitHub versucht.

Ich bin noch weit davon entfernt, ein Ruby-Entwickler zu sein, also habt Nachsicht. :sweat_smile:

Danke @mentalstring, ich habe deinen PR als Inspiration für

genutzt, der auch einige Leistungsverbesserungen und eine bessere Handhabung von Nicht-Lateinischen-Lokalisierungen enthält :+1:

(cc @lindsey)

Großartig, dass dies angegangen wird! :+1: Wir betreiben ein internationales Forum und obwohl Englisch die Hauptsprache ist, haben wir Kategorien für andere Sprachen und dies war eine langjährige Ärgernis.

Da skipped_locale jetzt nur noch für seems_unpretentious verwendet wird, frage ich mich, ob wir ‘ko’ überspringen können, da das moderne Koreanisch Leerzeichen verwendet? Bedenken Sie, dass ich kein Koreanisch spreche, daher möchten Sie dies vielleicht noch einmal überprüfen.

Während ich Ihre Aufmerksamkeit habe, gibt es noch eine Sache, die meiner Meinung nach eine einfache Verbesserung an TextSentinel sein könnte, aber ich habe es nicht gewagt anzufassen (wiederum kein Ruby-Entwickler). Wenn Sie einen Moment Zeit haben, denke ich, dass es ziemlich einfach ist und einen kostenlosen Leistungsgewinn erzielen könnte.

Soweit ich das verstehe, wird hier geprüft, ob ein Wort länger als das Limit ist, indem der Text in Wörter aufgeteilt wird, die Länge jedes Wortes berechnet wird, alle Längen gescannt werden, um die höchste zu finden, und erst dann mit dem Limit verglichen wird.

Könnten wir das vielleicht überspringen, indem wir den Text einfach gegen etwas wie /\\p{Alnum}{#{max_word_length + 1},}/ abgleichen (Syntax wahrscheinlich falsch, aber hoffentlich verstehen Sie die Idee)?

Ohne die inneren Abläufe von Ruby zu kennen, ist es wahrscheinlicher, dass die Prüfung abgebrochen wird, sobald es eine Übereinstimmung gibt, und wenn es kein zu langes Wort gibt (der häufigste Fall), wird der Text nur einmal gescannt, wobei das Aufteilen, die Prüfung der einzelnen Wortlänge usw. übersprungen wird.

Entschuldigen Sie, wenn ich hier das Thema kapere, aber da der neue PR bereits zusammengeführt wurde, bin ich mir nicht sicher, wo ich dies am besten posten kann, da es vielleicht zu klein ist, um ein neues Thema zu verdienen, aber es scheint ein einfacher Gewinn zu sein. Fühlen Sie sich frei, es aufzugreifen.

Ich habe auch keine Ahnung. Würde mich aber über eine Bestätigung von koreanischen Muttersprachlern freuen.

Das ist eine ausgezeichnete Idee :rocket:

Yay! :slight_smile: Danke, dass du dir die Zeit genommen hast.

Vielleicht kann einer der koreanischen Übersetzer (/cc @9bow, @alexkoala, @changukshin :wave:) bestätigen, dass modernes Koreanisch Leerzeichen zwischen Wörtern verwendet, ähnlich wie bei römischen/lateinischen Schriften, damit Discourse diese Annahme bei der Verarbeitung koreanischer Texte zur Ermittlung zu langer Wörter verwenden kann? :pray: