خطأ "Body seems unclear" عند كتابة المستخدمين باللغة الصينية

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)

نعتذر عن إحياء هذا الموضوع، لكننا واجهنا نفس المشكلة في منتدانا الذي يُستخدم فيه الإنجليزية بشكل أساسي، مع وجود بعض الأقسام بلغات أخرى. لم يُحلّ الأمر عن طريق ضبط body min entropy إلى 0.

يبدو أن المشكلة تكمن في أن استخدام بعض الأحرف اللاتينية يُفعّل فحص النصوص المكتوبة بحروف كبيرة فقط. إليك مثال على رسالة تُثير إشعار “يبدو أن النص غير واضح”:

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

هل خيار allow uppercase posts هو الحل الوحيد هنا؟ في المنتديات مثل منتدانا حيث تُعد الإنجليزية اللغة الأساسية، فإن تمكين هذا الخيار ليس مثاليًا، لكنني أفهم أيضًا إحباط المستخدمين عند إدخال رسالة صحيحة بلغتهم ومواجهة هذا الخطأ. هل يمكن أن يساعد فحص نسبة الأحرف الكبيرة مقارنة بحجم النص في هذه الحالة؟

هذا ما تفعله، وفي مثالك تكون النسبة 100٪.

عندما تكون لغة المنتدى الافتراضية هي الصينية، نقوم بضبط هذه الإعدادات تلقائيًا، ولكن إذا كان لديك لغات مختلطة في مثيل واحد، فستحتاج إلى تعديل هذه الإعداد يدويًا.

إذا احتوى النص على حرف واحد لا يوجد له شكل علوي/سفلي (كما في اللغة الصينية)، فإن النص يُعتبر تلقائيًا غير مكتوب بالكامل بحروف كبيرة. يمكن التحقق من ذلك عن طريق المطابقة مع /\p{Lo}/ في هذا الملف.

هذا النهج لا يتطلب تعديل إعداد خاص للمنتديات التي تستخدم بشكل أساسي اللغات الصينية/الكورية/اليابانية، ويمكن أن يعمل بشكل جيد أيضًا مع المنتديات التي تستخدم لغات مختلطة، حيث يتم فرض خيار السماح بحروف كبيرة فقط عند استخدام أحرف قابلة للتحويل إلى كبيرة.

ربما يمكن استخدام منطق مشابه لتحسين الفحص الحالي للنصوص المكتوبة بالكامل بحروف كبيرة: إذا تطابق النص مع /\p{Ll}/ (حرف صغير له شكل علوي)، فإن النص ليس مكتوبًا بالكامل بحروف كبيرة.

يبدو كفكرة جيدة لطلب سحب (pull request)!

مهاراتي في Ruby شبه معدومة، لكن يمكنني محاولة تجميع شيء ما نظرًا لأن الأمر محصور إلى حد ما.

مع ذلك، ألاحظ وجود TODO في أعلى الملف والذي يبدو مرتبطًا بهذا السطر الدقيق من الكود. هل الأمر بسيطًا لدرجة حذف الـ require، أم يجب أن يتولى شخص يعرف ما يفعله هذا الـ PR؟

لقد حاولت في FIX: Allow all caps within CJK text by mentalstring · Pull Request #27900 · discourse/discourse · GitHub

لا أزال بعيدًا عن كوني مطور Ruby، لذا تحملوني. :sweat_smile:

شكراً @mentalstring، لقد استخدمت طلب السحب الخاص بك كمصدر إلهام لـ

والذي يتضمن أيضًا بعض التحسينات وأفضل معالجة للمناطق غير اللاتينية :+1:
(مع الإشارة إلى @lindsey)

يسعدني رؤية هذا الأمر معالجًا! :+1: ندير منتدى دوليًا وبينما الإنجليزية هي اللغة الرئيسية، لدينا فئات مخصصة للغات أخرى وكان هذا مصدر إزعاج طويل الأمد.

الآن بعد أن تم استخدام skipped_locale فقط لـ seems_unpretentious، أتساءل عما إذا كان بإمكاننا تخطي ‘ko’ لأن اللغة الكورية الحديثة تستخدم المسافات؟ ضع في اعتبارك أنني لا أتحدث الكورية، لذلك قد ترغب في التحقق من ذلك مرة أخرى.

بينما لفت انتباهك، هناك شيء آخر أعتقد أنه يمكن أن يكون تحسينًا سهلاً لـ TextSentinel ولكني لم أجرؤ على لمسه (مرة أخرى، لست مطور Ruby). إذا كان لديك لحظة، أعتقد أنه بسيط جدًا ويمكن أن يحقق مكاسب أداء مجانية.

على حد فهمي، هذا يتحقق مما إذا كانت الكلمة أطول من الحد عن طريق تقسيم النص إلى كلمات، وحساب طول كل كلمة، ومسح جميع الأطوال للعثور على الأطول، ثم مقارنة ذلك بالحد.

هل يمكننا ربما تخطي كل ذلك عن طريق محاولة مطابقة النص مع شيء مثل /\\p{Alnum}{#{max_word_length + 1},}/ (الصيغة على الأرجح خاطئة، ولكن نأمل أن تفهم الفكرة)؟

بدون معرفة العمليات الداخلية لـ Ruby، من المرجح أن يتوقف التحقق بمجرد وجود تطابق، وإذا لم تكن هناك كلمة طويلة جدًا (وهي الحالة الأكثر شيوعًا)، يتم مسح النص مرة واحدة فقط، مع تخطي التقسيم، وفحص طول الكلمة الفردية، وما إلى ذلك.

آسف إذا كنت أقوم باختطاف الموضوع هنا، ولكن نظرًا لأن طلب السحب الجديد قد تم دمجه بالفعل، لست متأكدًا من أفضل مكان لنشر هذا لأنه ربما يكون صغيرًا جدًا بحيث لا يستحق موضوعًا جديدًا، ولكنه يبدو مكسبًا سهلاً. لا تتردد في المضي قدمًا.

ليس لدي أي فكرة أيضًا. أود الحصول على بعض التأكيد من المتحدثين باللغة الكورية.

هذه فكرة ممتازة :rocket:

رائع! :slight_smile: شكراً على تخصيص الوقت.

ربما يمكن لأحد المترجمين الكوريين (/cc @9bow، @alexkoala، @changukshin :wave:) تأكيد أن اللغة الكورية الحديثة تستخدم مسافات بين الكلمات بشكل مشابه للنصوص الرومانية/اللاتينية، حتى يتمكن Discourse من استخدام هذا الافتراض عند معالجة النص الكوري للعثور على الكلمات الطويلة جدًا؟ :pray: