موضوع: [موضوع مميز]الحل النهائي لمشكلة النص العربي في Unity3D

ردود: 19 | زيارات: 6379
  1. #1

    [موضوع مميز]الحل النهائي لمشكلة النص العربي في Unity3D

    السلام عليكم

    بعد انقطاع عن المنتدى بسبب بعض المشاغل أعود إليكم من جديد ومعي هدية متواضعة للأعضاء الكرام

    بعد محاولة الأخ "لا أعلم" الأخيرة لإصلاح النص العربي في يونيتي ومناقشة الأفكار مع الأعضاء الأعزاء وفقني الله لعمل السكربت الكامل الذي يقوم بإصلاح النص العربي في مكونات GUIText الخاصة بمحرك Unity

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

    الخصائص المدعومة حاليا:

    - تعديل اتجاه النص بحيث يصبح مكتوبا من اليمين لليسار
    - وصل الحروف المنقطعة حسب موا قعها في الجملة مع المحافظة على همزات الوصل والقطع والمد على الألف
    - المحافظة على علامات الترقيم الأساسية الموجودة في مجموعة الرموز الفاصلة (يمكن إضافة رموز فاصلة أخرى)
    - المحافظة على الكلمات المكتوبة بالإنجليزية في داخل النص العربي، شرط عدم تتابع أكثر من كلمة إنجليزية
    مثلا : النص التالي يمكن عرضه بشكل صحيح

    اضغط Space لإعادة المحاولة

    بينما النص التالي لا يمكن عرضه بشكل صحيح

    اضغط the Shift key للمحاولة من جديد

    الخصائص غير المدعومة (قد تتم إضافتها لاحقا)
    - النص الإنجليزي العربي المختلط والذي يحتوي كلمات انجليزية متتابعة
    - الكلمات المشكلة
    - الكلمات الممدودة مثل (حــــاول مـــــرة أخـــــرى)

    الكود موجود في الأسفل (للأسف لم أضف تعليقات للشرح )

    ملاحظة 1: الكود مكتوب بلغة C# لكن يمكنك استخدامه حتى لو كنت تعمل على Javascript أو Boo. كل ما عليك هو إضافة الملف المرفق لمشروعك وإضافته لأي عنصر GUIText تريد أن تظهره باللغة العربية

    ملاحظة 2: السطر Globals.ReportWarning() هو أمر خاص بالمحرك الذي أعمل عليه لذا يجب عمل comment له حتى لا يعطيك رسالة خطأ

    أتمنى سماع نتائج تجاربكم وأي مشاكل تحدث معكم ليتم إصلاحها. وأنا جاهز إن شاء الله لأي أسئلة أو شرح حول الكود

    تحديث. الملف المرفق به مشاكل تتعلق بالـ encoding بسبب التحويل من cs إلى txt ويمكن تحميل ملف cs الأصلي من هنا (انقر باليمين واختر Save As لأن النسخ واللصق قد يعمل مشاكل)

    http://mail.alquds.edu/~f3576/ArabicText.cs
    أخر تعديل بواسطة *FREEMAN* في 08 / 01 / 2011 الساعة 06:55 PM السبب: تعديل الرابط


  2. #2

  3. #3
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    جميل جدا و مجهود كبير مبذول اهنئك على هذا
    Egypt


    I Love Direct-X

    سبحان الله و بحمده سبحان الله العظيم
    اللهم صلي وسلم و بارك علي سيدنا محمد

  4. #4
    مشرف منبر 3D Games Design
    صور رمزية oms
    تاريخ التسجيل
    Oct 2004
    المنطقة
    Turkey
    ردود
    6,683
    وعليكم السلام ، الحقيقة مجهود كبير وتشكر عليه ، وستبقى تأخذ أجر ما كتبت في كل مرة نقوم بإستخدامه . فجزاك الله عنا كل خير .

  5. #5
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    الف مشكووور اخي حليت مشكل كبيرر كان معصب معضم مستخدمين والله مبدع
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  6. #6
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    اتعن نقوم بحدف هد
    Globals.ReportWarning("This component requires GUIText component");
    ملاحظة 2: السطر Globals.ReportWarning() هو أمر خاص بالمحرك الذي أعمل عليه
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  7. #7
    شكرا لكل الإخوة الذين شاركوا وأتمنى أن نتمكن من تطويره ليشمل 3d text

  8. #8
    اقتباس الموضوع الأصلي كتب بواسطة naoufal معاينة الرد
    اتعن نقوم بحدف هد
    Globals.ReportWarning("This component requires GUIText component");
    نعم هذا السطر الذي أقصده

    وهناك سطر آخر قد لا ترغب بوجوده وهو من مخلفات التجارب المتلاحقة

    print(word[j + 1] + " " + IsCut(word[j + 1]));
    فهو يطبع قيمة لا معنى لها لكني استخدمته أثناء البرمجة

  9. #9
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    في مشكلة كبيرة السكريبت لا يعمل
    قمت بعمل رفع له من مجلد ال اتحمل عليه تم قمت بوضعه في مجلد داخل مشروع اعطان في الاول مشكل وهو لتلك عبارة قمت بعمل مسح لها ومن بعد طلعلي اكتر من 80 مشكل من سطر 136 الى 179
    من سطر 136 الى 175
    في خطاين في كل سطر
    خطا الاول
    Assets/New Folder/ArabicText.cs(141,24): error CS1012: Too many characters in character literal
    خطا 2
    Assets/New Folder/ArabicText.cs(141,20): error CS1525: Unexpected symbol `case'
    بنسبة لسطر ف 141 فهو فقط احد من اسطر يعن يبق نفس مشكل ويتغير رقم سطر
    ومشكل هد في هد سطر فقط
    Assets/New Folder/ArabicText.cs(136,25): error CS1525: Unexpected symbol `<internal>'
    طيب بنسبة ل سطر 177
    Assets/New Folder/ArabicText.cs(177,18): error CS1519: Unexpected symbol `return' in class, struct, or interface member declaration
    وسطر 179
    Assets/New Folder/ArabicText.cs(179,5): error CS8025: Parsing error


    طيب قلت اتنافى مشكل واقوم بتجربته يعن بدون تصحيح لي كون مشكل فقط غلط من برنامج
    بس طلع هد رسالة
    can't add script
    cscript arabictext has not finished compilation yet please wait until compilation of the script has finished and try again
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  10. #10
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    جزء الي فيه مشكل
    case 'ا': return 0;
    case 'ب': return 1;
    case 'ت': return 2;
    case 'ث': return 3;
    case 'ج': return 4;
    case 'ح': return 5;
    case 'خ': return 6;
    case 'د': return 7;
    case 'ذ': return 8;
    case 'ر': return 9;
    case 'ز': return 10;
    case 'س': return 11;
    case 'ش': return 12;
    case 'ص': return 13;
    case 'ض': return 14;
    case 'ط': return 15;
    case 'ظ': return 16;
    case 'ع': return 17;
    case 'غ': return 18;
    case 'ف': return 19;
    case 'ق': return 20;
    case 'ك': return 21;
    case 'ل': return 22;
    case 'م': return 23;
    case 'ن': return 24;
    case 'ه': return 25;
    case 'و': return 26;
    case 'ي': return 27;
    case 'ى': return 28;
    case 'آ': return 29;
    case 'أ': return 30;
    case 'إ': return 31;
    case 'ؤ': return 32;
    case 'ء': return 33;
    case 'ة': return 34;
    case 'ئ': return 35;
    case 'ﻻ': return 36;
    case 'ﻵ': return 37;
    case 'ﻷ': return 38;
    case 'ﻹ': return 39;
    }
    return -1;
    }
    }
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  11. #11
    اقتباس الموضوع الأصلي كتب بواسطة naoufal معاينة الرد
    في مشكلة كبيرة السكريبت لا يعمل
    قمت بعمل رفع له من مجلد ال اتحمل عليه تم قمت بوضعه في مجلد داخل مشروع اعطان في الاول مشكل وهو لتلك عبارة قمت بعمل مسح لها ومن بعد طلعلي اكتر من 80 مشكل من سطر 136 الى 179
    من سطر 136 الى 175
    في خطاين في كل سطر
    خطا الاول
    Assets/New Folder/ArabicText.cs(141,24): error CS1012: Too many characters in character literal
    خطا 2
    Assets/New Folder/ArabicText.cs(141,20): error CS1525: Unexpected symbol `case'
    بنسبة لسطر ف 141 فهو فقط احد من اسطر يعن يبق نفس مشكل ويتغير رقم سطر
    ومشكل هد في هد سطر فقط
    Assets/New Folder/ArabicText.cs(136,25): error CS1525: Unexpected symbol `<internal>'
    طيب بنسبة ل سطر 177
    Assets/New Folder/ArabicText.cs(177,18): error CS1519: Unexpected symbol `return' in class, struct, or interface member declaration
    وسطر 179
    Assets/New Folder/ArabicText.cs(179,5): error CS8025: Parsing error


    طيب قلت اتنافى مشكل واقوم بتجربته يعن بدون تصحيح لي كون مشكل فقط غلط من برنامج
    بس طلع هد رسالة
    can't add script
    cscript arabictext has not finished compilation yet please wait until compilation of the script has finished and try again

    هل قمت بتحميل الملف أم نسخ الكود المرفق؟

  12. #12
    عضو متميز
    صور رمزية لا اعلم
    تاريخ التسجيل
    Oct 2010
    المنطقة
    الـــــكويت
    ردود
    1,236
    مشاء الله عليك مستوى جد رائع
    هذا مجهود كبير ويستحق ان يثبت هذا الموضوع وكل الشكر وان دل على شي دل على تميزك

    الحمد التجربه ناجحه وقدرت اني اكتب بالعربي والامور عااال العاااال يوجد تطبيق بالمرفقات

    ممكن تحكي لنا عن الكود وكيف كتبته اقصد الفكره وليس التفصيل
    وتقبل تحياتي
    مرفقات مصغرة مرفقات مصغرة اضغط على الصورة لرؤيتها بحجمها الأصلي ، الاسم :  تطبيق1.JPG ، عدد المشاهدات: 155 ، الحجم :  15.0 كيلو بايت  

  13. #13
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    يا اخوة ان حملت وكن الي كان ساحول تحميل من رابط جديد انشاء الله يشتغل ولو لم يشتغل ساخبرك
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  14. #14
    عضو متميز
    صور رمزية naoufal
    تاريخ التسجيل
    Feb 2010
    المنطقة
    دولة الخلافة
    العمر
    23
    ردود
    1,141
    اشتغل يا اخي الف مشكووور في نتضار جديدك
    الثورة الاسلامية الكبرى لاعادة الخلافة الراشدة
    بسم الله الرحمان الرحيم... انما النصر صبر ساعة فلا هوان ولا ستكان حت يعود الضلم تحت الاقدام ويعاقب الخونة وانجاس وترفع الرايات سود و لترتاع يهود لقرب الوعود فالتكن هته الثورة يا اهل مصر و سورية ويا اخواني في العالم اجمع ثورة غضب ثورة غضب خالصة لوجه الله فالتكن بداية النهاية ليعلم اليهود ان الامة اصبحت على فجر النصر وليكن اول بشارات النصر الانتقام من الخونة هم من بني جلدتنا وما هم منا...
    امة واحدة راية واحد حرب واحدة

  15. #15
    بسم الله الرحمن الرحيم
    مجهود تشكر عليه أخ *freeman* ... ممكن تخبرنا تحت أي رخصة طرحت هذا السكريبت ؟

  16. #16
    اقتباس الموضوع الأصلي كتب بواسطة لا اعلم معاينة الرد
    مشاء الله عليك مستوى جد رائع
    هذا مجهود كبير ويستحق ان يثبت هذا الموضوع وكل الشكر وان دل على شي دل على تميزك

    الحمد التجربه ناجحه وقدرت اني اكتب بالعربي والامور عااال العاااال يوجد تطبيق بالمرفقات

    ممكن تحكي لنا عن الكود وكيف كتبته اقصد الفكره وليس التفصيل
    وتقبل تحياتي
    شكرا لك أخي الكريم على مرورك

    بالنسبة للطريقة فهي تتلخص في عدة مراحل رئيسية:

    1. عكس ترتيب الأحرف في الجملة بحيث تصبح من اليمين لليسار
    2. استخراج الفواصل والمسافات وعلامات الترقيم وتخزينها في قائمة
    3. تقسيم الجملة إلى مجموعة كلمات حسب علامات الترقيم المحددة سلفا

    الخطوات من 4 إلى 7 تنفذ على مستوى كل كلمة:

    4. البحث عن أي حرف "ل" يتبعه مباشرة حرف "ا" وتبديل الحرفين بحرف "لا". وهذا ينطبق على كل أنواع الألف ا أ آ إ
    5. إذا كانت الكلمة مكتوبة بالأحرف العربية فقط (بدون تشكيل أو رموز أو أحرف انجليزية) وطولها أكثر من حرف واحد تتم معالجتها بحيث يستبدل كل حرف فيها بما يناسبه من الحروف المتصلة أو المنفصلة حسب موقع الحرف في الكلمة وطبيعة الحرف الذي يسبقه
    6. إذا لم تكن الكلمة عربية (انجليزية أو رقم مثلا) يتم عكس ترتيب حروفها مرة أخرى بحيث تعود لحالتها الأصلية (تذكر أننا عكسنا الجملة كاملة في الخطوة رقم 1)
    7. تضاف الكلمة إلى النص النهائي متبوعة بعلامة الترقيم التي كانت بعدها في الجملة الأصلية والتي يتم استخراجها من القائمة. وفي حالة كانت علامة الترقيم غير موجودة يوضع مكانها مسافة

    8. بعد إضافة كل الكلمات إلى النص النهائي يتم استبدال قيمة النص text في عنصر GUIText بالنص الجديد

    ملاحظة: إذا قمت بتغيير النص أثناء تشغيل البرنامج عليك إعادة بناء النص العربي في وقت التشغيل من خلال مناداة الوظيفة Refix مرة أخرى

  17. #17
    اقتباس الموضوع الأصلي كتب بواسطة ميشا معاينة الرد
    بسم الله الرحمن الرحيم
    مجهود تشكر عليه أخ *freeman* ... ممكن تخبرنا تحت أي رخصة طرحت هذا السكريبت ؟
    العفو ... الصراحة لم أفكر في رخصة معينة. لكن بما أنه جزء من مكتبة أكبر فيمكنك اعتباره lgpl لأنني أنوي طرح المكتبة بعد اكتمالها تحت هذه الرخصة.

    بالتوفيق وخذ حريتك في نشر وتعديل الكود واستخدامه مع ذكر المصدر الأصلي

  18. #18
    مشرف منبر Games Design
    صور رمزية general1
    تاريخ التسجيل
    Jun 2007
    ردود
    1,066
    تم وضع الموضوع ضمن المواضيع المميزة لأهميته
    Egypt


    I Love Direct-X

    سبحان الله و بحمده سبحان الله العظيم
    اللهم صلي وسلم و بارك علي سيدنا محمد

  19. #19
    اقتباس الموضوع الأصلي كتب بواسطة general1 معاينة الرد
    تم وضع الموضوع ضمن المواضيع المميزة لأهميته
    أشكرك أخي جنرال على هذه اللفتة الطيبة وإن شاء الله نقدم المزيد قريبا

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل